Commit 78459aea authored by Vincent Povirk's avatar Vincent Povirk Committed by Alexandre Julliard

gdiplus: Improve GdipFillRectangles parameter validation.

parent ed11dc0b
......@@ -3747,7 +3747,7 @@ GpStatus WINGDIPAPI GdipFillRectangles(GpGraphics *graphics, GpBrush *brush, GDI
TRACE("(%p, %p, %p, %d)\n", graphics, brush, rects, count);
if(!rects)
if(!graphics || !brush || !rects || count <= 0)
return InvalidParameter;
if (graphics->image && graphics->image->type == ImageTypeMetafile)
......
......@@ -5493,6 +5493,52 @@ static void test_clipping_2(void)
DeleteDC(hdc);
}
static void test_GdipFillRectangles(void)
{
GpStatus status;
GpGraphics *graphics = NULL;
GpBrush *brush = NULL;
HDC hdc = GetDC( hwnd );
GpRectF rects[2] = {{0,0,10,10}, {10,10,10,10}};
ok(hdc != NULL, "Expected HDC to be initialized\n");
status = GdipCreateFromHDC(hdc, &graphics);
expect(Ok, status);
ok(graphics != NULL, "Expected graphics to be initialized\n");
status = GdipCreateSolidFill((ARGB)0xffff00ff, (GpSolidFill**)&brush);
expect(Ok, status);
ok(brush != NULL, "Expected brush to be initialized\n");
status = GdipFillRectangles(NULL, brush, rects, 2);
expect(InvalidParameter, status);
status = GdipFillRectangles(graphics, NULL, rects, 2);
expect(InvalidParameter, status);
status = GdipFillRectangles(graphics, brush, NULL, 2);
expect(InvalidParameter, status);
status = GdipFillRectangles(graphics, brush, rects, 0);
expect(InvalidParameter, status);
status = GdipFillRectangles(graphics, brush, rects, -1);
expect(InvalidParameter, status);
status = GdipFillRectangles(graphics, brush, rects, 1);
expect(Ok, status);
status = GdipFillRectangles(graphics, brush, rects, 2);
expect(Ok, status);
GdipDeleteBrush(brush);
GdipDeleteGraphics(graphics);
ReleaseDC(hwnd, hdc);
}
START_TEST(graphics)
{
struct GdiplusStartupInput gdiplusStartupInput;
......@@ -5563,6 +5609,7 @@ START_TEST(graphics)
test_getdc_scaled();
test_alpha_hdc();
test_bitmapfromgraphics();
test_GdipFillRectangles();
GdiplusShutdown(gdiplusToken);
DestroyWindow( hwnd );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment