mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-31 10:13:56 +00:00
regedit: Correctly calculate REG_MULTI_SZ size before reading from the buffer.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
This commit is contained in:
parent
159f3699ec
commit
101fe51b25
1 changed files with 6 additions and 6 deletions
|
@ -312,12 +312,12 @@ BOOL ModifyValue(HWND hwnd, HKEY hKeyRoot, LPCWSTR keyPath, LPCWSTR valueName)
|
||||||
WCHAR *tmpValueData = NULL;
|
WCHAR *tmpValueData = NULL;
|
||||||
INT i, j, count;
|
INT i, j, count;
|
||||||
|
|
||||||
for ( i = 0, count = 0; i < len - 1; i++)
|
for (i = 0, count = 0; i < len / sizeof(WCHAR); i++)
|
||||||
if ( !stringValueData[i] && stringValueData[i + 1] )
|
if ( !stringValueData[i] && stringValueData[i + 1] )
|
||||||
count++;
|
count++;
|
||||||
tmpValueData = heap_xalloc((len + count) * sizeof(WCHAR));
|
tmpValueData = heap_xalloc(len + (count * sizeof(WCHAR)));
|
||||||
|
|
||||||
for ( i = 0, j = 0; i < len - 1; i++)
|
for ( i = 0, j = 0; i < len / sizeof(WCHAR); i++)
|
||||||
{
|
{
|
||||||
if ( !stringValueData[i] && stringValueData[i + 1])
|
if ( !stringValueData[i] && stringValueData[i + 1])
|
||||||
{
|
{
|
||||||
|
@ -327,7 +327,7 @@ BOOL ModifyValue(HWND hwnd, HKEY hKeyRoot, LPCWSTR keyPath, LPCWSTR valueName)
|
||||||
else
|
else
|
||||||
tmpValueData[j++] = stringValueData[i];
|
tmpValueData[j++] = stringValueData[i];
|
||||||
}
|
}
|
||||||
tmpValueData[j] = stringValueData[i];
|
|
||||||
heap_free(stringValueData);
|
heap_free(stringValueData);
|
||||||
stringValueData = tmpValueData;
|
stringValueData = tmpValueData;
|
||||||
tmpValueData = NULL;
|
tmpValueData = NULL;
|
||||||
|
@ -337,7 +337,7 @@ BOOL ModifyValue(HWND hwnd, HKEY hKeyRoot, LPCWSTR keyPath, LPCWSTR valueName)
|
||||||
len = lstrlenW( stringValueData );
|
len = lstrlenW( stringValueData );
|
||||||
tmpValueData = heap_xalloc((len + 2) * sizeof(WCHAR));
|
tmpValueData = heap_xalloc((len + 2) * sizeof(WCHAR));
|
||||||
|
|
||||||
for ( i = 0, j = 0; i < len - 1; i++)
|
for (i = 0, j = 0; i < len; i++)
|
||||||
{
|
{
|
||||||
if ( stringValueData[i] == char1 && stringValueData[i + 1] == char2)
|
if ( stringValueData[i] == char1 && stringValueData[i + 1] == char2)
|
||||||
{
|
{
|
||||||
|
@ -348,7 +348,7 @@ BOOL ModifyValue(HWND hwnd, HKEY hKeyRoot, LPCWSTR keyPath, LPCWSTR valueName)
|
||||||
else
|
else
|
||||||
tmpValueData[j++] = stringValueData[i];
|
tmpValueData[j++] = stringValueData[i];
|
||||||
}
|
}
|
||||||
tmpValueData[j++] = stringValueData[i];
|
|
||||||
tmpValueData[j++] = 0;
|
tmpValueData[j++] = 0;
|
||||||
tmpValueData[j++] = 0;
|
tmpValueData[j++] = 0;
|
||||||
heap_free(stringValueData);
|
heap_free(stringValueData);
|
||||||
|
|
Loading…
Reference in a new issue