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