On 7/2/07, Alexandre Julliard <[EMAIL PROTECTED]> wrote:
"James Hawkins" <[EMAIL PROTECTED]> writes:
> @@ -341,10 +341,15 @@ UINT WINAPI MsiSourceListGetInfoW( LPCWS
> }
> else if (strcmpW(INSTALLPROPERTY_PACKAGENAMEW, szProperty)==0)
> {
> + *pcchValue = *pcchValue * sizeof(WCHAR);
> rc = RegQueryValueExW(sourcekey, INSTALLPROPERTY_PACKAGENAMEW, 0, 0,
> - (LPBYTE)szValue, pcchValue);
> + (LPBYTE)szValue, pcchValue);
> if (rc != ERROR_SUCCESS && rc != ERROR_MORE_DATA)
> rc = ERROR_SUCCESS;
> + if (*pcchValue)
> + *pcchValue = (*pcchValue - 1) / sizeof(WCHAR);
> + if (szValue)
> + szValue[*pcchValue] = '\0';
You shouldn't use the results if the registry function failed. Also
there isn't much point in checking pcchValue for NULL since you
accessed it already.
The check is for the value of *pcchValue, not the pointer itself. If
the length is zero, we should leave it at zero, but if the length of
the value is not zero, we need to subtract one for the null
terminator. I will resend with the fix for the error case though.
--
James Hawkins