From b6b7e915c30a83cd5a6dce6606d5f149e4ae1de1 Mon Sep 17 00:00:00 2001 From: Evan Stade Date: Fri, 27 Jul 2007 16:07:47 -0700 Subject: [PATCH] gdiplus: Check custom dash array for bad properties. --- dlls/gdiplus/pen.c | 12 ++++++++++++ dlls/gdiplus/tests/pen.c | 6 ++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/dlls/gdiplus/pen.c b/dlls/gdiplus/pen.c index 7d7237b4ac2..b85f158ecf2 100644 --- a/dlls/gdiplus/pen.c +++ b/dlls/gdiplus/pen.c @@ -223,9 +223,21 @@ GpStatus WINGDIPAPI GdipSetPenCustomStartCap(GpPen *pen, GpCustomLineCap* custom GpStatus WINGDIPAPI GdipSetPenDashArray(GpPen *pen, GDIPCONST REAL *dash, INT count) { + INT i; + REAL sum = 0; + if(!pen || !dash) return InvalidParameter; + for(i = 0; i < count; i++){ + sum += dash[i]; + if(dash[i] < 0.0) + return InvalidParameter; + } + + if(sum == 0.0 && count) + return InvalidParameter; + GdipFree(pen->dashes); pen->dashes = NULL; diff --git a/dlls/gdiplus/tests/pen.c b/dlls/gdiplus/tests/pen.c index 3fede54d09c..fc792a60843 100644 --- a/dlls/gdiplus/tests/pen.c +++ b/dlls/gdiplus/tests/pen.c @@ -176,12 +176,10 @@ static void test_dasharray(void) /* Some invalid array values. */ status = GdipSetPenDashArray(pen, &dashes[7], 5); - todo_wine - expect(InvalidParameter, status); + expect(InvalidParameter, status); dashes[9] = -1.0; status = GdipSetPenDashArray(pen, &dashes[7], 5); - todo_wine - expect(InvalidParameter, status); + expect(InvalidParameter, status); /* Try to set with count = 0. */ GdipSetPenDashStyle(pen, DashStyleDot); -- 2.11.4.GIT