Daniel Lehman : gdi32: Check for NULL pointer in GetOutlineTextMetrics.
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Jul 28 13:30:07 CDT 2015
Module: wine
Branch: master
Commit: 22c51eeabf6f7dcdcdcb6f41d51b1faa8072aead
URL: http://source.winehq.org/git/wine.git/?a=commit;h=22c51eeabf6f7dcdcdcb6f41d51b1faa8072aead
Author: Daniel Lehman <dlehman at esri.com>
Date: Mon Jul 20 16:38:05 2015 -0700
gdi32: Check for NULL pointer in GetOutlineTextMetrics.
---
dlls/gdi32/freetype.c | 2 +-
dlls/gdi32/tests/font.c | 5 +++++
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/dlls/gdi32/freetype.c b/dlls/gdi32/freetype.c
index 9a7a3d7..1187598 100644
--- a/dlls/gdi32/freetype.c
+++ b/dlls/gdi32/freetype.c
@@ -7722,7 +7722,7 @@ static UINT freetype_GetOutlineTextMetrics( PHYSDEV dev, UINT cbSize, OUTLINETEX
if (physdev->font->potm || get_outline_text_metrics( physdev->font ))
{
- if(cbSize >= physdev->font->potm->otmSize)
+ if(potm && cbSize >= physdev->font->potm->otmSize)
{
memcpy(potm, physdev->font->potm, physdev->font->potm->otmSize);
scale_outline_font_metrics(physdev->font, potm);
diff --git a/dlls/gdi32/tests/font.c b/dlls/gdi32/tests/font.c
index cce4a1f..8595a4a 100644
--- a/dlls/gdi32/tests/font.c
+++ b/dlls/gdi32/tests/font.c
@@ -2147,6 +2147,11 @@ static void test_GetOutlineTextMetrics(void)
}
ok(otm->otmpFullName == unset_ptr, "expected %p got %p\n", unset_ptr, otm->otmpFullName);
+ /* check handling of NULL pointer */
+ SetLastError(0xdeadbeef);
+ ret = GetOutlineTextMetricsA(hdc, otm_size, NULL);
+ ok(ret == otm_size, "expected %u, got %u, error %d\n", otm_size, ret, GetLastError());
+
HeapFree(GetProcessHeap(), 0, otm);
SelectObject(hdc, hfont_old);
More information about the wine-cvs
mailing list