regedit: Allow importing strings with escaped NULL.
This commit is contained in:
parent
edc259fdeb
commit
c35bca6561
|
@ -255,7 +255,7 @@ static DWORD getDataType(LPWSTR *lpValue, DWORD* parse_type)
|
|||
/******************************************************************************
|
||||
* Replaces escape sequences with the characters.
|
||||
*/
|
||||
static void REGPROC_unescape_string(WCHAR* str)
|
||||
static int REGPROC_unescape_string(WCHAR* str)
|
||||
{
|
||||
int str_idx = 0; /* current character under analysis */
|
||||
int val_idx = 0; /* the last character of the unescaped string */
|
||||
|
@ -267,6 +267,9 @@ static void REGPROC_unescape_string(WCHAR* str)
|
|||
case 'n':
|
||||
str[val_idx] = '\n';
|
||||
break;
|
||||
case '0':
|
||||
str[val_idx] = '\0';
|
||||
break;
|
||||
case '\\':
|
||||
case '"':
|
||||
str[val_idx] = str[str_idx];
|
||||
|
@ -282,6 +285,7 @@ static void REGPROC_unescape_string(WCHAR* str)
|
|||
}
|
||||
}
|
||||
str[val_idx] = '\0';
|
||||
return val_idx;
|
||||
}
|
||||
|
||||
static BOOL parseKeyName(LPWSTR lpKeyName, HKEY *hKey, LPWSTR *lpKeyPath)
|
||||
|
@ -364,19 +368,10 @@ static LONG setValue(WCHAR* val_name, WCHAR* val_data, BOOL is_unicode)
|
|||
|
||||
if (dwParseType == REG_SZ) /* no conversion for string */
|
||||
{
|
||||
REGPROC_unescape_string(val_data);
|
||||
/* Compute dwLen after REGPROC_unescape_string because it may
|
||||
* have changed the string length and we don't want to store
|
||||
* the extra garbage in the registry.
|
||||
*/
|
||||
dwLen = lstrlenW(val_data);
|
||||
if(val_data[dwLen-1] != '"')
|
||||
dwLen = REGPROC_unescape_string(val_data);
|
||||
if(!dwLen || val_data[dwLen-1] != '"')
|
||||
return ERROR_INVALID_DATA;
|
||||
if (dwLen>0 && val_data[dwLen-1]=='"')
|
||||
{
|
||||
dwLen--;
|
||||
val_data[dwLen]='\0';
|
||||
}
|
||||
val_data[dwLen-1] = '\0'; /* remove last quotes */
|
||||
lpbData = (BYTE*) val_data;
|
||||
dwLen++; /* include terminating null */
|
||||
dwLen = dwLen * sizeof(WCHAR); /* size is in bytes */
|
||||
|
|
Loading…
Reference in New Issue