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