version: fix a crash in VerQueryValueA/W
Jeff Zaroyko
jeffzaroyko at gmail.com
Fri Jan 30 06:59:07 CST 2009
Fixes bug 16832.
-------------- next part --------------
From 007744b9c7fa81b17195a20aa8041b96f1ef1e07 Mon Sep 17 00:00:00 2001
From: Jeff Zaroyko <jeffz at jeffz.name>
Date: Fri, 30 Jan 2009 23:56:11 +1100
Subject: version: fix a crash in VerQueryValueA/W
---
dlls/version/info.c | 6 ++++--
dlls/version/tests/info.c | 5 ++++-
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/dlls/version/info.c b/dlls/version/info.c
index 95dadaf..50101c2 100644
--- a/dlls/version/info.c
+++ b/dlls/version/info.c
@@ -809,7 +809,8 @@ BOOL WINAPI VerQueryValueA( LPCVOID pBlock, LPCSTR lpSubBlock,
len = WideCharToMultiByte(CP_ACP, 0, *lplpBuffer, -1,
lpBufferA + pos, info->wLength - pos, NULL, NULL);
*lplpBuffer = lpBufferA + pos;
- *puLen = len;
+ if(puLen)
+ *puLen = len;
}
return ret;
}
@@ -869,7 +870,8 @@ BOOL WINAPI VerQueryValueW( LPCVOID pBlock, LPCWSTR lpSubBlock,
len = MultiByteToWideChar(CP_ACP, 0, *lplpBuffer, -1,
lpBufferW + pos, max/sizeof(WCHAR) - pos );
*lplpBuffer = lpBufferW + pos;
- *puLen = len;
+ if(puLen)
+ *puLen = len;
}
return ret;
}
diff --git a/dlls/version/tests/info.c b/dlls/version/tests/info.c
index edf607c..cfdc93c 100644
--- a/dlls/version/tests/info.c
+++ b/dlls/version/tests/info.c
@@ -273,8 +273,11 @@ static void test_info(void)
*/
boolret = VerQueryValueA( pVersionInfo, backslash, (LPVOID *)&pFixedVersionInfo, 0);
ok (boolret, "VerQueryValue failed: GetLastError = %u\n", GetLastError());
- }
+ /* also crashes WinNT4 */
+ boolret = VerQueryValueA( pVersionInfo, "StringFileInfo", (LPVOID *)&pFixedVersionInfo, NULL);
+ ok (boolret, "VerQueryValue failed: GetLastError = %u\n", GetLastError());
+ }
cleanup:
HeapFree( GetProcessHeap(), 0, pVersionInfo);
}
--
1.5.4.3
More information about the wine-patches
mailing list