summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Steinborn <gnugv_maintainer@yahoo.de>2012-03-01 18:08:22 +0100
committerJeremy Huddleston <jeremyhu@apple.com>2012-03-24 21:22:56 -0700
commit5d367cd9d0cd8fa5a85ed442e30dab4222824a36 (patch)
tree3c914370287f3f1dd26c355fc99f998633fd9be5
parent39e9a67b05d4558c065aedd2ebbe6eb11d0b88de (diff)
Avoid integer overflow
Found at http://gitorious.org/xaw3d/xaw3d/commit/3ba3e52454bb684a73601ec91e2c274e776f711a Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
-rw-r--r--src/Box.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/Box.c b/src/Box.c
index 43be5dc..9cf3b5f 100644
--- a/src/Box.c
+++ b/src/Box.c
@@ -351,8 +351,12 @@ PreferredSize(Widget widget, XtWidgetGeometry *constraint, XtWidgetGeometry *pre
else {
width = preferred_width;
do { /* find some width big enough to stay within this height */
- width *= 2;
- if (width > constraint->width) width = constraint->width;
+ if (width > constraint->width/2) { /* avoid short int overflow */
+ width = constraint->width;
+ }
+ else {
+ width *= 2;
+ }
DoLayout(w, width, 0, &preferred_width, &preferred_height, FALSE);
} while (preferred_height > constraint->height &&
width < constraint->width);