From 216cec1d90912e1bbd1ed3d5a8890d048ce5d69c Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 14 Oct 2014 10:53:46 +0000 Subject: prevent buffer overrun --- Display.c | 7 ++++--- Sgraph.c | 8 ++++++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/Display.c b/Display.c index 3c8cf2d..0cab31b 100644 --- a/Display.c +++ b/Display.c @@ -7,6 +7,7 @@ #include "SgraphP.h" #define Trace(w) warnx("%s.%s", XtClass(w)->core_class.class_name, __func__) +#define SCALE 3 static void Initialize(Widget, Widget, ArgList, Cardinal *); static void ChangeManaged(Widget); @@ -111,7 +112,7 @@ Initialize(Widget req, Widget new, ArgList args, Cardinal *num_args) sizeof(int)); n = 0; XtSetArg(arg[n], XtNvalues, dw->display.data[i]); n++; - XtSetArg(arg[n], XtNsize, dw->display.num_samples); n++; + XtSetArg(arg[n], XtNsize, dw->display.num_samples / SCALE); n++; XtSetArg(arg[n], XtNmirror, i % 2 ? False : True); n++; XtCreateManagedWidget("SGraph", sgraphWidgetClass, new, arg, n); } @@ -145,7 +146,7 @@ ChangeManaged(Widget w) w->core.height = height; /* XXX */ - dw->display.num_samples = dw->composite.children[0]->core.width * 3; + dw->display.num_samples = dw->composite.children[0]->core.width * SCALE; } static void @@ -175,7 +176,7 @@ Resize(Widget w) } /* XXX */ - dw->display.num_samples = dw->composite.children[0]->core.width * 3; + dw->display.num_samples = dw->composite.children[0]->core.width * SCALE; } static void diff --git a/Sgraph.c b/Sgraph.c index 357e021..cbcabf3 100644 --- a/Sgraph.c +++ b/Sgraph.c @@ -186,7 +186,7 @@ static void Redisplay(Widget w, XEvent *event, Region r) { SgraphWidget sw = (SgraphWidget)w; - Dimension i, x, y; + Dimension i, x, y, width; XdbeSwapInfo swap; if (!XtIsRealized(w)) @@ -196,7 +196,11 @@ Redisplay(Widget w, XEvent *event, Region r) Trace(w); #endif - for (i = 0; i < sw->core.width - 1; i++) { + width = sw->core.width; + if (width > sw->sgraph.size) + width = sw->sgraph.size; + + for (i = 0; i < width - 1; i++) { y = sw->sgraph.values[i]; x = sw->sgraph.mirror ? sw->core.width - i : i; -- cgit v1.2.3