From c35151ce3d0dc5ca502dbbd4840000b091b51c50 Mon Sep 17 00:00:00 2001
From: Christoph von Wittich <christoph_vw@reactos.org>
Date: Tue, 17 Apr 2007 18:58:58 +0000
Subject: [PATCH] fix crash in VerQueryValueA/W

svn path=/trunk/; revision=26379
---
 reactos/dll/win32/version/info.c | 10 ++++++++--
 reactos/include/psdk/winver.h    |  4 ++--
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/reactos/dll/win32/version/info.c b/reactos/dll/win32/version/info.c
index c96e0da031d..2e1536c5dcc 100644
--- a/reactos/dll/win32/version/info.c
+++ b/reactos/dll/win32/version/info.c
@@ -764,7 +764,7 @@ static BOOL WINAPI VersionInfo32_QueryValue( VS_VERSION_INFO_STRUCT32 *info, LPC
 /***********************************************************************
  *           VerQueryValueA              [VERSION.@]
  */
-BOOL WINAPI VerQueryValueA( LPVOID pBlock, LPSTR lpSubBlock,
+BOOL WINAPI VerQueryValueA( LPVOID pBlock, LPCSTR lpSubBlock,
                                LPVOID *lplpBuffer, UINT *puLen )
 {
     static const char rootA[] = "\\";
@@ -774,6 +774,9 @@ BOOL WINAPI VerQueryValueA( LPVOID pBlock, LPSTR lpSubBlock,
     TRACE("(%p,%s,%p,%p)\n",
                 pBlock, debugstr_a(lpSubBlock), lplpBuffer, puLen );
 
+	if (!pBlock)
+		return FALSE;
+
     if ( !VersionInfoIs16( info ) )
     {
         BOOL ret;
@@ -811,7 +814,7 @@ BOOL WINAPI VerQueryValueA( LPVOID pBlock, LPSTR lpSubBlock,
 /***********************************************************************
  *           VerQueryValueW              [VERSION.@]
  */
-BOOL WINAPI VerQueryValueW( LPVOID pBlock, LPWSTR lpSubBlock,
+BOOL WINAPI VerQueryValueW( LPVOID pBlock, LPCWSTR lpSubBlock,
                                LPVOID *lplpBuffer, UINT *puLen )
 {
     static const WCHAR rootW[] = { '\\', 0 };
@@ -823,6 +826,9 @@ BOOL WINAPI VerQueryValueW( LPVOID pBlock, LPWSTR lpSubBlock,
     TRACE("(%p,%s,%p,%p)\n",
                 pBlock, debugstr_w(lpSubBlock), lplpBuffer, puLen );
 
+	if (!pBlock)
+		return FALSE;
+
     if ( VersionInfoIs16( info ) )
     {
         BOOL ret;
diff --git a/reactos/include/psdk/winver.h b/reactos/include/psdk/winver.h
index 72426b42cf4..d0d089bae3e 100644
--- a/reactos/include/psdk/winver.h
+++ b/reactos/include/psdk/winver.h
@@ -108,8 +108,8 @@ BOOL WINAPI GetFileVersionInfoA(LPCSTR,DWORD,DWORD,PVOID);
 BOOL WINAPI GetFileVersionInfoW(LPCWSTR,DWORD,DWORD,PVOID);
 DWORD WINAPI VerLanguageNameA(DWORD,LPSTR,DWORD);
 DWORD WINAPI VerLanguageNameW(DWORD,LPWSTR,DWORD);
-BOOL WINAPI VerQueryValueA(const LPVOID,LPSTR,LPVOID*,PUINT);
-BOOL WINAPI VerQueryValueW(const LPVOID,LPWSTR,LPVOID*,PUINT);
+BOOL WINAPI VerQueryValueA(const LPVOID,LPCSTR,LPVOID*,PUINT);
+BOOL WINAPI VerQueryValueW(const LPVOID,LPCWSTR,LPVOID*,PUINT);
 #ifdef UNICODE
 #define VerFindFile VerFindFileW
 #define VerQueryValue VerQueryValueW