From bcd3ee7ab858d62beb36af9f5986544b68a3dd35 Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Wed, 28 Apr 2021 16:36:56 -0500 Subject: Clean up more 32-bit assumptions. --- src/dutil/verutil.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src/dutil/verutil.cpp') diff --git a/src/dutil/verutil.cpp b/src/dutil/verutil.cpp index fdb5a10a..21626f94 100644 --- a/src/dutil/verutil.cpp +++ b/src/dutil/verutil.cpp @@ -244,7 +244,7 @@ DAPI_(void) VerFreeVersion( DAPI_(HRESULT) VerParseVersion( __in_z LPCWSTR wzVersion, - __in DWORD cchVersion, + __in SIZE_T cchVersion, __in BOOL fStrict, __out VERUTIL_VERSION** ppVersion ) @@ -267,9 +267,14 @@ DAPI_(HRESULT) VerParseVersion( } // Get string length if not provided. - if (0 == cchVersion) + if (!cchVersion) { - cchVersion = lstrlenW(wzVersion); + hr = ::StringCchLengthW(wzVersion, STRSAFE_MAX_CCH, reinterpret_cast(&cchVersion)); + VerExitOnRootFailure(hr, "Failed to get length of version string: %ls", wzVersion); + } + else if (INT_MAX < cchVersion) + { + VerExitOnRootFailure(hr = E_INVALIDARG, "Version string is too long: %Iu", cchVersion); } if (L'v' == *wzVersion || L'V' == *wzVersion) -- cgit v1.2.3-55-g6feb