[PATCH 1/2] regedit: Pass correct data size when adding a new value via the GUI
Hugh McMaster
wine at gitlab.winehq.org
Wed Jun 29 06:43:53 CDT 2022
From: Hugh McMaster <hugh.mcmaster at outlook.com>
This bug was exposed by 3b1faf59f60c2e5d91321fd8998dd81d90a13e11
Signed-off-by: Hugh McMaster <hugh.mcmaster at outlook.com>
---
programs/regedit/edit.c | 26 +++++++++++++++++++++++---
1 file changed, 23 insertions(+), 3 deletions(-)
diff --git a/programs/regedit/edit.c b/programs/regedit/edit.c
index c19ef1506fa..47ce233039e 100644
--- a/programs/regedit/edit.c
+++ b/programs/regedit/edit.c
@@ -443,6 +443,7 @@ BOOL CreateValue(HWND hwnd, HKEY hKeyRoot, LPCWSTR keyPath, DWORD valueType, LPW
LONG lRet = ERROR_SUCCESS;
WCHAR newValue[256];
UINT64 value = 0;
+ DWORD size_bytes;
BOOL result = FALSE;
int valueNum, index;
HKEY hKey;
@@ -466,15 +467,34 @@ BOOL CreateValue(HWND hwnd, HKEY hKeyRoot, LPCWSTR keyPath, DWORD valueType, LPW
error_code_messagebox(hwnd, IDS_CREATE_VALUE_FAILED);
goto done;
}
-
- lRet = RegSetValueExW(hKey, valueName, 0, valueType, (BYTE *)&value, sizeof(value));
+
+ switch (valueType)
+ {
+ case REG_DWORD:
+ case REG_DWORD_BIG_ENDIAN:
+ size_bytes = sizeof(DWORD);
+ break;
+ case REG_QWORD:
+ size_bytes = sizeof(UINT64);
+ break;
+ case REG_BINARY:
+ size_bytes = 0;
+ break;
+ case REG_MULTI_SZ:
+ size_bytes = 2 * sizeof(WCHAR);
+ break;
+ default: /* REG_NONE, REG_SZ, REG_EXPAND_SZ */
+ size_bytes = sizeof(WCHAR);
+ }
+
+ lRet = RegSetValueExW(hKey, valueName, 0, valueType, (BYTE *)&value, size_bytes);
if (lRet) {
error_code_messagebox(hwnd, IDS_CREATE_VALUE_FAILED);
goto done;
}
/* Add the new item to the listview */
- index = AddEntryToList(g_pChildWnd->hListWnd, valueName, valueType, (BYTE *)&value, sizeof(value), -1);
+ index = AddEntryToList(g_pChildWnd->hListWnd, valueName, valueType, (BYTE *)&value, size_bytes, -1);
item.state = LVIS_FOCUSED | LVIS_SELECTED;
item.stateMask = LVIS_FOCUSED | LVIS_SELECTED;
SendMessageW(g_pChildWnd->hListWnd, LVM_SETITEMSTATE, index, (LPARAM)&item);
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/340
More information about the wine-devel
mailing list