Module: wine Branch: master Commit: 49df0467b12567da86155b8e9e7a7d337fbc6ed7 URL: http://source.winehq.org/git/wine.git/?a=commit;h=49df0467b12567da86155b8e9e...
Author: Mike McCormack mike@codeweavers.com Date: Sun Nov 5 17:12:35 2006 +0900
comctl32: Check if GetObject fails on bitmaps passed to us.
---
dlls/comctl32/imagelist.c | 15 ++++++++++----- 1 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/dlls/comctl32/imagelist.c b/dlls/comctl32/imagelist.c index e8654e1..3f8b49f 100644 --- a/dlls/comctl32/imagelist.c +++ b/dlls/comctl32/imagelist.c @@ -212,7 +212,9 @@ ImageList_Add (HIMAGELIST himl, HBITMAP if (!is_valid(himl)) return -1;
- GetObjectA (hbmImage, sizeof(BITMAP), (LPVOID)&bmp); + if (!GetObjectW(hbmImage, sizeof(BITMAP), (LPVOID)&bmp)) + return -1; + nImageCount = bmp.bmWidth / himl->cx;
IMAGELIST_InternalExpandBitmaps (himl, nImageCount, bmp.bmWidth, bmp.bmHeight); @@ -309,7 +311,7 @@ ImageList_AddMasked (HIMAGELIST himl, HB if (!is_valid(himl)) return -1;
- if (!GetObjectA (hBitmap, sizeof(BITMAP), &bmp)) + if (!GetObjectW(hBitmap, sizeof(BITMAP), &bmp)) return -1;
if (himl->cx > 0) @@ -2218,8 +2220,10 @@ ImageList_Replace (HIMAGELIST himl, INT return FALSE; }
+ if (!GetObjectW(hbmImage, sizeof(BITMAP), (LPVOID)&bmp)) + return FALSE; + hdcImage = CreateCompatibleDC (0); - GetObjectA (hbmImage, sizeof(BITMAP), (LPVOID)&bmp);
/* Replace Image */ hOldBitmap = SelectObject (hdcImage, hbmImage); @@ -2691,7 +2695,7 @@ _write_bitmap(HBITMAP hBitmap, LPSTREAM { LPBITMAPFILEHEADER bmfh; LPBITMAPINFOHEADER bmih; - LPBYTE data, lpBits, lpBitsOrg; + LPBYTE data = NULL, lpBits = NULL, lpBitsOrg = NULL; BITMAP bm; INT bitCount, sizeImage, offBits, totalSize; INT nwidth, nheight, nsizeImage, icount; @@ -2700,7 +2704,8 @@ _write_bitmap(HBITMAP hBitmap, LPSTREAM
xdc = GetDC(0); - GetObjectA(hBitmap, sizeof(BITMAP), (LPVOID)&bm); + if (!GetObjectW(hBitmap, sizeof(BITMAP), (LPVOID)&bm)) + goto failed;
/* XXX is this always correct? */ icount = bm.bmWidth / cx;