Module: wine Branch: master Commit: cd3ebad1ae926d72dec239f120a6f8ffa8ba35e3 URL: https://gitlab.winehq.org/wine/wine/-/commit/cd3ebad1ae926d72dec239f120a6f8f...
Author: Ryan Hendrickson ryan.hendrickson@alum.mit.edu Date: Tue Sep 12 03:14:07 2023 -0400
regedit: Export hex(4) instead of dword if size isn't 4 bytes.
---
programs/regedit/regproc.c | 2 +- programs/regedit/tests/regedit.c | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/programs/regedit/regproc.c b/programs/regedit/regproc.c index 30106380241..199cd3b6d80 100644 --- a/programs/regedit/regproc.c +++ b/programs/regedit/regproc.c @@ -1282,7 +1282,7 @@ static void export_data(FILE *fp, WCHAR *value_name, DWORD value_len, DWORD type export_string_data(&buf, data, size); break; case REG_DWORD: - if (size) + if (size == sizeof(DWORD)) { export_dword_data(&buf, data); break; diff --git a/programs/regedit/tests/regedit.c b/programs/regedit/tests/regedit.c index bc0c9870464..7dde63b449e 100644 --- a/programs/regedit/tests/regedit.c +++ b/programs/regedit/tests/regedit.c @@ -3466,6 +3466,7 @@ static void test_export(void) { HKEY hkey, subkey; DWORD dword; + DWORD64 dword64; BYTE hex[4];
const char *empty_key_test = @@ -3540,7 +3541,8 @@ static void test_export(void) "[HKEY_CURRENT_USER\" KEY_BASE "]\r\n" ""Wine3a"="Value"\r\n" ""Wine3b"=hex:12,34,56,78\r\n" - ""Wine3c"=dword:10203040\r\n\r\n"; + ""Wine3c"=dword:10203040\r\n" + ""Wine3d"=hex(4):80,70,60,50,40,30,20,10\r\n\r\n";
const char *embedded_null_test = "\xef\xbb\xbfWindows Registry Editor Version 5.00\r\n\r\n" @@ -3680,18 +3682,21 @@ static void test_export(void) ok(compare_export("file.reg", empty_hex_test2, 0), "compare_export() failed\n"); delete_key(HKEY_CURRENT_USER, KEY_BASE);
- /* Test registry export with embedded null characters */ + /* Test registry export with embedded null characters, improperly-sized DWORD */ exec_import_wstr("\xef\xbb\xbfWindows Registry Editor Version 5.00\n\n" "[HKEY_CURRENT_USER\" KEY_BASE "]\n" ""Wine3a"=hex(1):56,00,61,00,6c,00,75,00,65,00,00,00\n" ""Wine3b"=hex(3):12,34,56,78\n" - ""Wine3c"=hex(4):40,30,20,10\n\n"); + ""Wine3c"=hex(4):40,30,20,10\n" + ""Wine3d"=hex(4):80,70,60,50,40,30,20,10\n\n"); open_key(HKEY_CURRENT_USER, KEY_BASE, 0, &hkey); verify_reg(hkey, "Wine3a", REG_SZ, "Value", 6, 0); memcpy(hex, "\x12\x34\x56\x78", 4); verify_reg(hkey, "Wine3b", REG_BINARY, hex, 4, 0); dword = 0x10203040; verify_reg(hkey, "Wine3c", REG_DWORD, &dword, sizeof(dword), 0); + dword64 = 0x1020304050607080; + verify_reg(hkey, "Wine3d", REG_DWORD, &dword64, sizeof(dword64), 0); close_key(hkey);
run_regedit_exe("regedit.exe /e file.reg HKEY_CURRENT_USER\" KEY_BASE);