msi: Avoid creating zero-length string values in the registry.
This commit is contained in:
parent
31ed6473be
commit
06bf8ea291
@ -2426,7 +2426,7 @@ static UINT ITERATE_WriteRegistryValues(MSIRECORD *row, LPVOID param)
|
|||||||
{
|
{
|
||||||
static const WCHAR szEmpty[] = {0};
|
static const WCHAR szEmpty[] = {0};
|
||||||
value_data = (LPSTR)strdupW(szEmpty);
|
value_data = (LPSTR)strdupW(szEmpty);
|
||||||
size = 0;
|
size = sizeof(szEmpty);
|
||||||
type = REG_SZ;
|
type = REG_SZ;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3772,8 +3772,10 @@ static UINT ACTION_PublishFeatures(MSIPACKAGE *package)
|
|||||||
size = strlenW(feature->Feature_Parent)*sizeof(WCHAR);
|
size = strlenW(feature->Feature_Parent)*sizeof(WCHAR);
|
||||||
if (!absent)
|
if (!absent)
|
||||||
{
|
{
|
||||||
|
static const WCHAR emptyW[] = {0};
|
||||||
|
size += sizeof(WCHAR);
|
||||||
RegSetValueExW(hukey,feature->Feature,0,REG_SZ,
|
RegSetValueExW(hukey,feature->Feature,0,REG_SZ,
|
||||||
(LPBYTE)feature->Feature_Parent,size);
|
(LPBYTE)(feature->Feature_Parent ? feature->Feature_Parent : emptyW),size);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -381,7 +381,7 @@ DWORD msi_version_str_to_dword(LPCWSTR p)
|
|||||||
|
|
||||||
LPWSTR msi_version_dword_to_str(DWORD version)
|
LPWSTR msi_version_dword_to_str(DWORD version)
|
||||||
{
|
{
|
||||||
const WCHAR fmt[] = { '%','u','.','%','u','.','%','u',0 };
|
static const WCHAR fmt[] = { '%','u','.','%','u','.','%','u',0 };
|
||||||
LPWSTR str = msi_alloc(20);
|
LPWSTR str = msi_alloc(20);
|
||||||
sprintfW(str, fmt,
|
sprintfW(str, fmt,
|
||||||
(version&0xff000000)>>24,
|
(version&0xff000000)>>24,
|
||||||
@ -392,7 +392,10 @@ LPWSTR msi_version_dword_to_str(DWORD version)
|
|||||||
|
|
||||||
LONG msi_reg_set_val_str( HKEY hkey, LPCWSTR name, LPCWSTR value )
|
LONG msi_reg_set_val_str( HKEY hkey, LPCWSTR name, LPCWSTR value )
|
||||||
{
|
{
|
||||||
DWORD len = value ? (lstrlenW(value) + 1) * sizeof (WCHAR) : 0;
|
static const WCHAR emptyW[] = {0};
|
||||||
|
DWORD len;
|
||||||
|
if (!value) value = emptyW;
|
||||||
|
len = (lstrlenW(value) + 1) * sizeof (WCHAR);
|
||||||
return RegSetValueExW( hkey, name, 0, REG_SZ, (const BYTE *)value, len );
|
return RegSetValueExW( hkey, name, 0, REG_SZ, (const BYTE *)value, len );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -822,7 +822,7 @@ UINT WINAPI MsiSourceListSetInfoW( LPCWSTR szProduct, LPCWSTR szUserSid,
|
|||||||
}
|
}
|
||||||
else if (strcmpW(INSTALLPROPERTY_PACKAGENAMEW, szProperty)==0)
|
else if (strcmpW(INSTALLPROPERTY_PACKAGENAMEW, szProperty)==0)
|
||||||
{
|
{
|
||||||
DWORD size = lstrlenW(szValue)*sizeof(WCHAR);
|
DWORD size = (lstrlenW(szValue) + 1) * sizeof(WCHAR);
|
||||||
rc = RegSetValueExW(sourcekey, INSTALLPROPERTY_PACKAGENAMEW, 0,
|
rc = RegSetValueExW(sourcekey, INSTALLPROPERTY_PACKAGENAMEW, 0,
|
||||||
REG_SZ, (const BYTE *)szValue, size);
|
REG_SZ, (const BYTE *)szValue, size);
|
||||||
if (rc != ERROR_SUCCESS)
|
if (rc != ERROR_SUCCESS)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user