diff options
author | jenglish <jenglish@flightlab.com> | 2008-07-04 19:05:03 (GMT) |
---|---|---|
committer | jenglish <jenglish@flightlab.com> | 2008-07-04 19:05:03 (GMT) |
commit | 71beb13aef5469536491f6d9377e151d077720a5 (patch) | |
tree | 8bf612256385f9fb1bc7fd15c467c7a4368808c6 | |
parent | 2ae7f2cdd395b7ff0ad3bfa144c8d71cc9fbc346 (diff) | |
download | tk-71beb13aef5469536491f6d9377e151d077720a5.zip tk-71beb13aef5469536491f6d9377e151d077720a5.tar.gz tk-71beb13aef5469536491f6d9377e151d077720a5.tar.bz2 |
Audit: ensure that output arguments to Tk_Get*FromObj() are initialized,
in case of erroneous style specifications [#2009213].
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | generic/ttk/ttkClamTheme.c | 10 | ||||
-rw-r--r-- | generic/ttk/ttkClassicTheme.c | 10 | ||||
-rw-r--r-- | generic/ttk/ttkDefaultTheme.c | 4 | ||||
-rw-r--r-- | generic/ttk/ttkElements.c | 8 | ||||
-rw-r--r-- | tests/ttk/ttk.test | 9 |
6 files changed, 33 insertions, 17 deletions
@@ -1,3 +1,12 @@ +2008-07-04 Joe English <jenglish@users.sourceforge.net> + + * generic/ttk/ttkDefaultTheme.c, generic/ttk/ttkClamTheme.c, + generic/ttk/ttkClassicTheme.c, generic/ttk/ttkElements.c: + Audit: ensure that output arguments to Tk_Get*FromObj() + are initialized, in case of erroneous style specifications + [Bug #2009213]. + + 2008-07-02 Donal K. Fellows <dkf@users.sf.net> * macosx/tkMacOSXHLEvents.c: Some tidying up of this file. Make sure diff --git a/generic/ttk/ttkClamTheme.c b/generic/ttk/ttkClamTheme.c index cabdef3..cde8ef7 100644 --- a/generic/ttk/ttkClamTheme.c +++ b/generic/ttk/ttkClamTheme.c @@ -1,5 +1,5 @@ /* - * $Id: ttkClamTheme.c,v 1.9 2007/12/13 15:26:26 dgp Exp $ + * $Id: ttkClamTheme.c,v 1.10 2008/07/04 19:05:04 jenglish Exp $ * * Copyright (C) 2004 Joe English * @@ -487,7 +487,7 @@ static void GripElementSize( { int horizontal = *((Ttk_Orient*)clientData) == TTK_ORIENT_HORIZONTAL; GripElement *grip = elementRecord; - int gripCount; + int gripCount = 0; Tcl_GetIntFromObj(NULL, grip->gripCountObj, &gripCount); if (horizontal) { @@ -506,8 +506,8 @@ static void GripElementDraw( GripElement *grip = elementRecord; GC lightGC = Ttk_GCForColor(tkwin,grip->lightColorObj,d); GC darkGC = Ttk_GCForColor(tkwin,grip->borderColorObj,d); - int gripPad = 1; - int i, gripCount; + int gripPad = 1, gripCount = 0; + int i; Tcl_GetIntFromObj(NULL, grip->gripCountObj, &gripCount); @@ -614,7 +614,7 @@ static void ThumbElementDraw( Drawable d, Ttk_Box b, unsigned state) { ScrollbarElement *sb = elementRecord; - int gripCount = 3, orient = TTK_ORIENT_HORIZONTAL; + int gripCount = 0, orient = TTK_ORIENT_HORIZONTAL; GC lightGC, darkGC; int x1, y1, x2, y2, dx, dy, i; const int w = WIN32_XDRAWLINE_HACK; diff --git a/generic/ttk/ttkClassicTheme.c b/generic/ttk/ttkClassicTheme.c index e2f3651..94178a5 100644 --- a/generic/ttk/ttkClassicTheme.c +++ b/generic/ttk/ttkClassicTheme.c @@ -1,5 +1,5 @@ /* - * $Id: ttkClassicTheme.c,v 1.6 2007/12/13 15:26:26 dgp Exp $ + * $Id: ttkClassicTheme.c,v 1.7 2008/07/04 19:05:04 jenglish Exp $ * * Copyright (c) 2004, Joe English * @@ -228,17 +228,15 @@ static void ArrowElementDraw( { int direction = *(int *)clientData; ArrowElement *arrow = elementRecord; - Tk_3DBorder border; - int borderWidth; + Tk_3DBorder border = Tk_Get3DBorderFromObj(tkwin, arrow->borderObj); + int borderWidth = 2; int relief = TK_RELIEF_RAISED; - int size; + int size = b.width < b.height ? b.width : b.height; XPoint points[3]; Tk_GetPixelsFromObj(NULL, tkwin, arrow->borderWidthObj, &borderWidth); - border = Tk_Get3DBorderFromObj(tkwin, arrow->borderObj); Tk_GetReliefFromObj(NULL, arrow->reliefObj, &relief); - size = b.width < b.height ? b.width : b.height; /* * @@@ There are off-by-one pixel errors in the way these are drawn; diff --git a/generic/ttk/ttkDefaultTheme.c b/generic/ttk/ttkDefaultTheme.c index bfc3af1..c8558af 100644 --- a/generic/ttk/ttkDefaultTheme.c +++ b/generic/ttk/ttkDefaultTheme.c @@ -1,4 +1,4 @@ -/* $Id: ttkDefaultTheme.c,v 1.11 2007/12/13 15:26:26 dgp Exp $ +/* $Id: ttkDefaultTheme.c,v 1.12 2008/07/04 19:05:04 jenglish Exp $ * * Copyright (c) 2003, Joe English * @@ -826,7 +826,7 @@ static void TroughElementDraw( { TroughElement *troughPtr = elementRecord; Tk_3DBorder border = NULL; - int borderWidth = 2, relief, groove, orient; + int borderWidth = 2, relief = TK_RELIEF_SUNKEN, groove = -1, orient; border = Tk_Get3DBorderFromObj(tkwin, troughPtr->colorObj); Ttk_GetOrientFromObj(NULL, troughPtr->orientObj, &orient); diff --git a/generic/ttk/ttkElements.c b/generic/ttk/ttkElements.c index 78d314d..56bdccb 100644 --- a/generic/ttk/ttkElements.c +++ b/generic/ttk/ttkElements.c @@ -1,4 +1,4 @@ -/* $Id: ttkElements.c,v 1.10 2007/12/13 15:26:26 dgp Exp $ +/* $Id: ttkElements.c,v 1.11 2008/07/04 19:05:04 jenglish Exp $ * * Copyright (c) 2003, Joe English * @@ -957,7 +957,7 @@ static void SliderElementDraw( { SliderElement *slider = elementRecord; Tk_3DBorder border = NULL; - int relief, borderWidth, orient; + int relief = TK_RELIEF_RAISED, borderWidth = 2, orient; border = Tk_Get3DBorderFromObj(tkwin, slider->borderObj); Ttk_GetOrientFromObj(NULL, slider->orientObj, &orient); @@ -1043,7 +1043,7 @@ static void PbarElementSize( int *widthPtr, int *heightPtr, Ttk_Padding *paddingPtr) { PbarElement *pbar = elementRecord; - int orient, thickness, length, borderWidth; + int orient, thickness = 15, length = 30, borderWidth = 2; Ttk_GetOrientFromObj(NULL, pbar->orientObj, &orient); Tk_GetPixelsFromObj(NULL, tkwin, pbar->thicknessObj, &thickness); @@ -1068,7 +1068,7 @@ static void PbarElementDraw( { PbarElement *pbar = elementRecord; Tk_3DBorder border = Tk_Get3DBorderFromObj(tkwin, pbar->borderObj); - int relief, borderWidth; + int relief = TK_RELIEF_RAISED, borderWidth = 2; Tk_GetPixelsFromObj(NULL, tkwin, pbar->borderWidthObj, &borderWidth); Tk_GetReliefFromObj(NULL, pbar->reliefObj, &relief); diff --git a/tests/ttk/ttk.test b/tests/ttk/ttk.test index fab6c2c..a1430ff 100644 --- a/tests/ttk/ttk.test +++ b/tests/ttk/ttk.test @@ -191,6 +191,15 @@ test ttk-3.2 "Propagate errors from variable traces" -body { unset ::A ; destroy .cb } -returnCodes error -result {can't set "A": failure} +test ttk-3.4 "SF#2009213" -body { + ttk::style configure TScale -sliderrelief {} + pack [ttk::scale .s] + update +} -cleanup { + ttk::style configure TScale -sliderrelief raised + destroy .s +} + # Test resource allocation # (@@@ "-font" is a compatibility option now, so tests 4.1-4.3 # don't really test anything useful at the moment.) |