On Mon, 2006-09-18 at 19:00 +0900, Dmitry Timoshkov wrote:
Hello,
this patch prevents my test application from crashing by dereferencing memory beyond allocated memory block.
Changelog: If there is no space for strings GetOutlineTextMetricsA should not indicate that they present.
--- cvs/hq/wine/dlls/gdi/font.c 2006-08-15 14:51:46.000000000 +0900 +++ wine/dlls/gdi/font.c 2006-09-18 18:38:57.000000000 +0900 @@ -1483,6 +1483,20 @@ UINT WINAPI GetOutlineTextMetricsA( if(output != lpOTM) { memcpy(lpOTM, output, cbData); HeapFree(GetProcessHeap(), 0, output);
/* check if the string offsets really fit into the provided size */
/* FIXME: should we check string length as well? */
if ((UINT_PTR)lpOTM->otmpFamilyName >= lpOTM->otmSize)
lpOTM->otmpFamilyName = 0; /* doesn't fit */
if ((UINT_PTR)lpOTM->otmpFaceName >= lpOTM->otmSize)
lpOTM->otmpFaceName = 0; /* doesn't fit */
if ((UINT_PTR)lpOTM->otmpStyleName >= lpOTM->otmSize)
lpOTM->otmpStyleName = 0; /* doesn't fit */
if ((UINT_PTR)lpOTM->otmpFullName >= lpOTM->otmSize)
}lpOTM->otmpFullName = 0; /* doesn't fit */
end:
this one also fixes an issue I was looking into this morning:
Try to create a key via regedit with the name {44444444-4444-4444-44444444} and press enter.
Cheers and thanks,
Paul.