[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