[PATCH 2/2] gdiplus: Check that GdipAddPathLine2 is passed at least one point.

Jeff Smith whydoubt at gmail.com
Mon Apr 13 22:50:52 CDT 2020


Signed-off-by: Jeff Smith <whydoubt at gmail.com>
---
 dlls/gdiplus/graphicspath.c       |  2 +-
 dlls/gdiplus/tests/graphicspath.c | 10 ++++++++++
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/dlls/gdiplus/graphicspath.c b/dlls/gdiplus/graphicspath.c
index 2b191dd30d..4d5a73588f 100644
--- a/dlls/gdiplus/graphicspath.c
+++ b/dlls/gdiplus/graphicspath.c
@@ -627,7 +627,7 @@ GpStatus WINGDIPAPI GdipAddPathLine2(GpPath *path, GDIPCONST GpPointF *points,
 
     TRACE("(%p, %p, %d)\n", path, points, count);
 
-    if(!path || !points)
+    if(!path || !points || count < 1)
         return InvalidParameter;
 
     if(!lengthen_path(path, count))
diff --git a/dlls/gdiplus/tests/graphicspath.c b/dlls/gdiplus/tests/graphicspath.c
index 0c5297249a..7670a6c41f 100644
--- a/dlls/gdiplus/tests/graphicspath.c
+++ b/dlls/gdiplus/tests/graphicspath.c
@@ -308,6 +308,16 @@ static void test_line2(void)
     }
 
     GdipCreatePath(FillModeAlternate, &path);
+
+    status = GdipAddPathLine2(NULL, line2_points, 2);
+    expect(InvalidParameter, status);
+    status = GdipAddPathLine2(path, NULL, 2);
+    expect(InvalidParameter, status);
+    status = GdipAddPathLine2(path, line2_points, 0);
+    expect(InvalidParameter, status);
+    status = GdipAddPathLine2(path, line2_points, -1);
+    expect(InvalidParameter, status);
+
     status = GdipAddPathLine2(path, line2_points, 3);
     expect(Ok, status);
     status = GdipAddPathLine2(path, &(line2_points[3]), 3);
-- 
2.23.0




More information about the wine-devel mailing list