Module: wine Branch: master Commit: 84eed4cf222d179855a4f0efbaf6ebfad2cc6d1d URL: http://source.winehq.org/git/wine.git/?a=commit;h=84eed4cf222d179855a4f0efba...
Author: Hugh McMaster hugh.mcmaster@outlook.com Date: Tue Mar 15 19:58:56 2016 +1100
reg: Correctly handle cases with no data argument.
Signed-off-by: Hugh McMaster hugh.mcmaster@outlook.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
programs/reg/reg.c | 7 +++++-- programs/reg/tests/reg.c | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 12 deletions(-)
diff --git a/programs/reg/reg.c b/programs/reg/reg.c index 164981d..1167ccb 100644 --- a/programs/reg/reg.c +++ b/programs/reg/reg.c @@ -225,11 +225,14 @@ static inline BYTE hexchar_to_byte(WCHAR ch) return -1; }
-static LPBYTE get_regdata(LPWSTR data, DWORD reg_type, WCHAR separator, DWORD *reg_count) +static LPBYTE get_regdata(const WCHAR *data, DWORD reg_type, WCHAR separator, DWORD *reg_count) { + static const WCHAR empty; LPBYTE out_data = NULL; *reg_count = 0;
+ if (!data) data = ∅ + switch (reg_type) { case REG_NONE: @@ -411,7 +414,7 @@ static int reg_add(WCHAR *key_name, WCHAR *value_name, BOOL value_empty, return 1; }
- if (data && !(reg_data = get_regdata(data, reg_type, separator, ®_count))) + if (!(reg_data = get_regdata(data, reg_type, separator, ®_count))) { RegCloseKey(subkey); return 1; diff --git a/programs/reg/tests/reg.c b/programs/reg/tests/reg.c index 4089367..6a55537 100644 --- a/programs/reg/tests/reg.c +++ b/programs/reg/tests/reg.c @@ -147,11 +147,11 @@ static void test_add(void)
run_reg_exe("reg add HKCU\" KEY_BASE " /v none1 /t REG_NONE /f", &r); ok(r == REG_EXIT_SUCCESS, "got exit code %u, expected 0\n", r); - verify_reg(hkey, "none1", REG_NONE, "\0", 2, TODO_REG_SIZE); + verify_reg(hkey, "none1", REG_NONE, "\0", 2, 0);
run_reg_exe("reg add HKCU\" KEY_BASE " /ve /t REG_NONE /f", &r); ok(r == REG_EXIT_SUCCESS, "got exit code %u, expected 0\n", r); - verify_reg(hkey, NULL, REG_NONE, "\0", 2, TODO_REG_SIZE); + verify_reg(hkey, NULL, REG_NONE, "\0", 2, 0);
/* REG_SZ */ run_reg_exe("reg add HKCU\" KEY_BASE " /d WineTest /f", &r); @@ -168,7 +168,7 @@ static void test_add(void)
run_reg_exe("reg add HKCU\" KEY_BASE " /v test /f", &r); ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r); - verify_reg(hkey, "test", REG_SZ, "", 1, TODO_REG_SIZE); + verify_reg(hkey, "test", REG_SZ, "", 1, 0);
run_reg_exe("reg add HKCU\" KEY_BASE " /v test1 /t REG_SZ /f /d", &r); ok(r == REG_EXIT_FAILURE, "got exit code %d, expected 1\n", r); @@ -179,7 +179,7 @@ static void test_add(void)
run_reg_exe("reg add HKCU\" KEY_BASE " /t REG_SZ /v test2 /f", &r); ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r); - verify_reg(hkey, "test2", REG_SZ, "", 1, TODO_REG_SIZE); + verify_reg(hkey, "test2", REG_SZ, "", 1, 0);
run_reg_exe("reg add HKCU\" KEY_BASE " /t REG_SZ /v test3 /f /d """, &r); ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r); @@ -187,11 +187,11 @@ static void test_add(void)
run_reg_exe("reg add HKCU\" KEY_BASE " /ve /f", &r); ok(r == REG_EXIT_SUCCESS, "got exit code %u, expected 0\n", r); - verify_reg(hkey, NULL, REG_SZ, "", 1, TODO_REG_SIZE); + verify_reg(hkey, NULL, REG_SZ, "", 1, 0);
run_reg_exe("reg add HKCU\" KEY_BASE " /ve /t REG_SZ /f", &r); ok(r == REG_EXIT_SUCCESS, "got exit code %u, expected 0\n", r); - verify_reg(hkey, NULL, REG_SZ, "", 1, TODO_REG_SIZE); + verify_reg(hkey, NULL, REG_SZ, "", 1, 0);
/* REG_EXPAND_SZ */ run_reg_exe("reg add HKCU\" KEY_BASE " /v expand0 /t REG_EXpand_sz /d "dead%PATH%beef" /f", &r); @@ -204,7 +204,7 @@ static void test_add(void)
run_reg_exe("reg add HKCU\" KEY_BASE " /t REG_EXPAND_SZ /v expand2 /f", &r); ok(r == REG_EXIT_SUCCESS, "got exit code %u\n", r); - verify_reg(hkey, "expand2", REG_EXPAND_SZ, "", 1, TODO_REG_SIZE); + verify_reg(hkey, "expand2", REG_EXPAND_SZ, "", 1, 0);
run_reg_exe("reg add HKEY_CURRENT_USER\" KEY_BASE " /ve /t REG_EXPAND_SZ /d WineTEST /f", &r); ok(r == REG_EXIT_SUCCESS, "got exit code %u\n", r); @@ -216,7 +216,7 @@ static void test_add(void)
run_reg_exe("reg add HKCU\" KEY_BASE " /ve /t REG_EXPAND_SZ /f", &r); ok(r == REG_EXIT_SUCCESS, "got exit code %u, expected 0\n", r); - verify_reg(hkey, NULL, REG_EXPAND_SZ, "", 1, TODO_REG_SIZE); + verify_reg(hkey, NULL, REG_EXPAND_SZ, "", 1, 0);
/* REG_BINARY */ run_reg_exe("reg add HKCU\" KEY_BASE " /t REG_BINARY /v bin0 /f", &r); @@ -372,7 +372,7 @@ static void test_add(void)
run_reg_exe("reg add HKCU\" KEY_BASE " /t REG_MULTI_SZ /v multi3 /f", &r); ok(r == REG_EXIT_SUCCESS, "got exit code %u\n", r); - verify_reg(hkey, "multi3", REG_MULTI_SZ, &buffer[21], 1, TODO_REG_SIZE); + verify_reg(hkey, "multi3", REG_MULTI_SZ, &buffer[21], 1, 0);
run_reg_exe("reg add HKCU\" KEY_BASE " /t REG_MULTI_SZ /v multi4 /s "#" /d "threelittlestrings" /f", &r); ok(r == REG_EXIT_SUCCESS, "got exit code %u, expected 0\n", r); @@ -435,7 +435,7 @@ static void test_add(void)
run_reg_exe("reg add HKCU\" KEY_BASE " /ve /t REG_MULTI_SZ /f", &r); ok(r == REG_EXIT_SUCCESS, "got exit code %u, expected 0\n", r); - verify_reg(hkey, NULL, REG_MULTI_SZ, buffer, 1, TODO_REG_SIZE); + verify_reg(hkey, NULL, REG_MULTI_SZ, buffer, 1, 0);
RegCloseKey(hkey);