From d4d304f4365134a6aec0fad18989e3c5f1950fe1 Mon Sep 17 00:00:00 2001 From: Andrey Melnikov Date: Mon, 21 Dec 2015 12:22:41 +0300 Subject: [PATCH] gdi32: Handle NULL filename in GetICMProfileA(). Signed-off-by: Nikolay Sivov Signed-off-by: Andrey Melnikov Signed-off-by: Huw Davies Signed-off-by: Alexandre Julliard --- dlls/gdi32/icm.c | 9 ++++++++- dlls/gdi32/tests/icm.c | 1 - 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/dlls/gdi32/icm.c b/dlls/gdi32/icm.c index d3a345d3bc2..9d0e2f61aaa 100644 --- a/dlls/gdi32/icm.c +++ b/dlls/gdi32/icm.c @@ -116,11 +116,18 @@ BOOL WINAPI GetICMProfileA(HDC hdc, LPDWORD size, LPSTR filename) TRACE("%p, %p, %p\n", hdc, size, filename); - if (!hdc || !size || !filename) return FALSE; + if (!hdc || !size) return FALSE; if (GetICMProfileW(hdc, &buflen, filenameW)) { int len = WideCharToMultiByte(CP_ACP, 0, filenameW, -1, NULL, 0, NULL, NULL); + + if (!filename) + { + *size = len; + return FALSE; + } + if (*size >= len) { WideCharToMultiByte(CP_ACP, 0, filenameW, -1, filename, *size, NULL, NULL); diff --git a/dlls/gdi32/tests/icm.c b/dlls/gdi32/tests/icm.c index 764d0d2c3a2..620809018a1 100644 --- a/dlls/gdi32/tests/icm.c +++ b/dlls/gdi32/tests/icm.c @@ -55,7 +55,6 @@ static void test_GetICMProfileA( HDC dc ) size = 0; ret = GetICMProfileA( dc, &size, NULL ); ok( !ret, "GetICMProfileA succeeded\n" ); -todo_wine ok( size > 0, "got %u\n", size ); size = MAX_PATH;