Hans Leidekker : gdi32: Add some tests for BITMAPINFOHEADER biSize checks.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Jun 14 07:46:59 CDT 2007


Module: wine
Branch: master
Commit: 1871743543cbf14eb20b3ab2eb30343c317d74cf
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=1871743543cbf14eb20b3ab2eb30343c317d74cf

Author: Hans Leidekker <hans at it.vu.nl>
Date:   Wed Jun 13 15:57:06 2007 +0200

gdi32: Add some tests for BITMAPINFOHEADER biSize checks.

---

 dlls/gdi32/tests/bitmap.c |   92 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 92 insertions(+), 0 deletions(-)

diff --git a/dlls/gdi32/tests/bitmap.c b/dlls/gdi32/tests/bitmap.c
index 1d2e8e6..353e2c5 100644
--- a/dlls/gdi32/tests/bitmap.c
+++ b/dlls/gdi32/tests/bitmap.c
@@ -1700,6 +1700,97 @@ static void test_CreateBitmap(void)
     DeleteObject(bm);
 }
 
+static void test_bitmapinfoheadersize(void)
+{
+    HBITMAP hdib;
+    BITMAPINFO bmi;
+    BITMAPCOREINFO bci;
+    HDC hdc = GetDC(0);
+
+    memset(&bmi, 0, sizeof(BITMAPINFO));
+    bmi.bmiHeader.biHeight = 100;
+    bmi.bmiHeader.biWidth = 512;
+    bmi.bmiHeader.biBitCount = 24;
+    bmi.bmiHeader.biPlanes = 1;
+
+    bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER) - 1;
+
+    hdib = CreateDIBSection(hdc, &bmi, 0, NULL, NULL, 0);
+    ok(hdib == NULL, "CreateDIBSection succeeded\n");
+
+    bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
+
+    SetLastError(0xdeadbeef);
+    hdib = CreateDIBSection(hdc, &bmi, 0, NULL, NULL, 0);
+    ok(hdib != NULL, "CreateDIBSection error %d\n", GetLastError());
+    DeleteObject(hdib);
+
+    bmi.bmiHeader.biSize++;
+
+    SetLastError(0xdeadbeef);
+    hdib = CreateDIBSection(hdc, &bmi, 0, NULL, NULL, 0);
+    ok(hdib != NULL, "CreateDIBSection error %d\n", GetLastError());
+    DeleteObject(hdib);
+
+    bmi.bmiHeader.biSize = sizeof(BITMAPINFO);
+
+    SetLastError(0xdeadbeef);
+    hdib = CreateDIBSection(hdc, &bmi, 0, NULL, NULL, 0);
+    ok(hdib != NULL, "CreateDIBSection error %d\n", GetLastError());
+    DeleteObject(hdib);
+
+    bmi.bmiHeader.biSize++;
+
+    SetLastError(0xdeadbeef);
+    hdib = CreateDIBSection(hdc, &bmi, 0, NULL, NULL, 0);
+    ok(hdib != NULL, "CreateDIBSection error %d\n", GetLastError());
+    DeleteObject(hdib);
+
+    bmi.bmiHeader.biSize = sizeof(BITMAPV4HEADER);
+
+    SetLastError(0xdeadbeef);
+    hdib = CreateDIBSection(hdc, &bmi, 0, NULL, NULL, 0);
+    ok(hdib != NULL, "CreateDIBSection error %d\n", GetLastError());
+    DeleteObject(hdib);
+
+    bmi.bmiHeader.biSize = sizeof(BITMAPV5HEADER);
+
+    SetLastError(0xdeadbeef);
+    hdib = CreateDIBSection(hdc, &bmi, 0, NULL, NULL, 0);
+    ok(hdib != NULL, "CreateDIBSection error %d\n", GetLastError());
+    DeleteObject(hdib);
+
+    memset(&bci, 0, sizeof(BITMAPCOREINFO));
+    bci.bmciHeader.bcHeight = 100;
+    bci.bmciHeader.bcWidth = 512;
+    bci.bmciHeader.bcBitCount = 24;
+    bci.bmciHeader.bcPlanes = 1;
+
+    bci.bmciHeader.bcSize = sizeof(BITMAPCOREHEADER) - 1;
+
+    hdib = CreateDIBSection(hdc, (BITMAPINFO *)&bci, 0, NULL, NULL, 0);
+    ok(hdib == NULL, "CreateDIBSection succeeded\n");
+
+    bci.bmciHeader.bcSize = sizeof(BITMAPCOREHEADER);
+
+    SetLastError(0xdeadbeef);
+    hdib = CreateDIBSection(hdc, (BITMAPINFO *)&bci, 0, NULL, NULL, 0);
+    ok(hdib != NULL, "CreateDIBSection error %d\n", GetLastError());
+    DeleteObject(hdib);
+
+    bci.bmciHeader.bcSize++;
+
+    hdib = CreateDIBSection(hdc, (BITMAPINFO *)&bci, 0, NULL, NULL, 0);
+    ok(hdib == NULL, "CreateDIBSection succeeded\n");
+
+    bci.bmciHeader.bcSize = sizeof(BITMAPCOREINFO);
+
+    hdib = CreateDIBSection(hdc, (BITMAPINFO *)&bci, 0, NULL, NULL, 0);
+    ok(hdib == NULL, "CreateDIBSection succeeded\n");
+
+    ReleaseDC(0, hdc);
+}
+
 START_TEST(bitmap)
 {
     is_win9x = GetWindowLongPtrW(GetDesktopWindow(), GWLP_WNDPROC) == 0;
@@ -1717,4 +1808,5 @@ START_TEST(bitmap)
     test_GetDIBits();
     test_select_object();
     test_CreateBitmap();
+    test_bitmapinfoheadersize();
 }




More information about the wine-cvs mailing list