Author: khornicek Date: Wed Feb 22 10:22:28 2017 New Revision: 73877
URL: http://svn.reactos.org/svn/reactos?rev=73877&view=rev Log: [GDI32] - Fix a possible null pointer dereference in GetGlyphOutlineA. CID 513747 - SetDIBits should not accept null bitmap info at all. CID 513425 - Don't set the pdwResult pointer itself to null in TADC_GetAndSetDCDWord. CID 1321970
Modified: trunk/reactos/win32ss/gdi/gdi32/objects/bitmap.c trunk/reactos/win32ss/gdi/gdi32/objects/font.c trunk/reactos/win32ss/gdi/gdi32/wine/rosglue.c
Modified: trunk/reactos/win32ss/gdi/gdi32/objects/bitmap.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/objects/b... ============================================================================== --- trunk/reactos/win32ss/gdi/gdi32/objects/bitmap.c [iso-8859-1] (original) +++ trunk/reactos/win32ss/gdi/gdi32/objects/bitmap.c [iso-8859-1] Wed Feb 22 10:22:28 2017 @@ -578,16 +578,13 @@ if (!lpvBits || (GDI_HANDLE_GET_TYPE(hBitmap) != GDI_OBJECT_TYPE_BITMAP)) return 0;
- if (lpbmi) - { - if (lpbmi->bmiHeader.biSize >= sizeof(BITMAPINFOHEADER)) - { - if (lpbmi->bmiHeader.biCompression == BI_JPEG - || lpbmi->bmiHeader.biCompression == BI_PNG) - { - SetLastError(ERROR_INVALID_PARAMETER); - return 0; - } + if (lpbmi->bmiHeader.biSize >= sizeof(BITMAPINFOHEADER)) + { + if (lpbmi->bmiHeader.biCompression == BI_JPEG + || lpbmi->bmiHeader.biCompression == BI_PNG) + { + SetLastError(ERROR_INVALID_PARAMETER); + return 0; } }
Modified: trunk/reactos/win32ss/gdi/gdi32/objects/font.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/objects/f... ============================================================================== --- trunk/reactos/win32ss/gdi/gdi32/objects/font.c [iso-8859-1] (original) +++ trunk/reactos/win32ss/gdi/gdi32/objects/font.c [iso-8859-1] Wed Feb 22 10:22:28 2017 @@ -132,7 +132,11 @@ strW = HeapAlloc(GetProcessHeap(), 0, lenW*sizeof(WCHAR)); if (!strW) return NULL; - MultiByteToWideChar(cp, 0, str, count, strW, lenW); + if(!MultiByteToWideChar(cp, 0, str, count, strW, lenW)) + { + HeapFree(GetProcessHeap(), 0, strW); + return NULL; + } DPRINT("mapped %s -> %S\n", str, strW); if(plenW) *plenW = lenW; if(pCP) *pCP = cp; @@ -1009,6 +1013,8 @@ mbchs[0] = (uChar & 0xff); } p = FONT_mbtowc(hdc, mbchs, len, NULL, NULL); + if(!p) + return GDI_ERROR; c = p[0]; } else
Modified: trunk/reactos/win32ss/gdi/gdi32/wine/rosglue.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/wine/rosg... ============================================================================== --- trunk/reactos/win32ss/gdi/gdi32/wine/rosglue.c [iso-8859-1] (original) +++ trunk/reactos/win32ss/gdi/gdi32/wine/rosglue.c [iso-8859-1] Wed Feb 22 10:22:28 2017 @@ -1096,7 +1096,7 @@
case GdiGetSetArcDirection: if (GDI_HANDLE_GET_TYPE(physdev->hdc) == GDILoObjType_LO_METADC16_TYPE) - pdwResult = 0; + *pdwResult = 0; else *pdwResult = physdev->funcs->pSetArcDirection(physdev, dwIn); break;