Module: wine Branch: master Commit: 735dca607409b7409b8adc4dd3e126c49d4603c4 URL: http://source.winehq.org/git/wine.git/?a=commit;h=735dca607409b7409b8adc4dd3...
Author: Hugh McMaster hugh.mcmaster@outlook.com Date: Tue Mar 15 23:23:55 2016 +1100
reg: Fail if /v is passed without an argument.
Signed-off-by: Hugh McMaster hugh.mcmaster@outlook.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
programs/reg/reg.c | 24 +++++++++++++++++++++--- programs/reg/tests/reg.c | 13 +++++++++++++ 2 files changed, 34 insertions(+), 3 deletions(-)
diff --git a/programs/reg/reg.c b/programs/reg/reg.c index 1167ccb..29be40e 100644 --- a/programs/reg/reg.c +++ b/programs/reg/reg.c @@ -601,7 +601,13 @@ int wmain(int argc, WCHAR *argvW[]) for (i = 1; i < argc; i++) { if (!lstrcmpiW(argvW[i], slashVW)) - value_name = argvW[++i]; + { + if (!(value_name = argvW[++i])) + { + output_message(STRING_INVALID_CMDLINE); + return 1; + } + } else if (!lstrcmpiW(argvW[i], slashVEW)) value_empty = TRUE; else if (!lstrcmpiW(argvW[i], slashTW)) @@ -652,7 +658,13 @@ int wmain(int argc, WCHAR *argvW[]) for (i = 1; i < argc; i++) { if (!lstrcmpiW(argvW[i], slashVW)) - value_name = argvW[++i]; + { + if (!(value_name = argvW[++i])) + { + output_message(STRING_INVALID_CMDLINE); + return 1; + } + } else if (!lstrcmpiW(argvW[i], slashVEW)) value_empty = TRUE; else if (!lstrcmpiW(argvW[i], slashVAW)) @@ -683,7 +695,13 @@ int wmain(int argc, WCHAR *argvW[]) for (i = 1; i < argc; i++) { if (!lstrcmpiW(argvW[i], slashVW)) - value_name = argvW[++i]; + { + if (!(value_name = argvW[++i])) + { + output_message(STRING_INVALID_CMDLINE); + return 1; + } + } else if (!lstrcmpiW(argvW[i], slashVEW)) value_empty = TRUE; else if (!lstrcmpiW(argvW[i], slashSW)) diff --git a/programs/reg/tests/reg.c b/programs/reg/tests/reg.c index 6a55537..d1db5c4 100644 --- a/programs/reg/tests/reg.c +++ b/programs/reg/tests/reg.c @@ -519,6 +519,19 @@ static void test_v_flags(void)
run_reg_exe("reg delete HKCU\" KEY_BASE " /ve /va", &r); ok(r == REG_EXIT_FAILURE, "got exit code %d, expected 1\n", r); + + /* No /v argument */ + run_reg_exe("reg add HKCU\" KEY_BASE " /v", &r); + ok(r == REG_EXIT_FAILURE, "got exit code %d, expected 1\n", r); + + run_reg_exe("reg add HKCU\" KEY_BASE " /d Test /f /v", &r); + ok(r == REG_EXIT_FAILURE, "got exit code %d, expected 1\n", r); + + run_reg_exe("reg delete HKCU\" KEY_BASE " /v", &r); + ok(r == REG_EXIT_FAILURE, "got exit code %d, expected 1\n", r); + + run_reg_exe("reg delete HKCU\" KEY_BASE " /f /v", &r); + ok(r == REG_EXIT_FAILURE, "got exit code %d, expected 1\n", r); }
START_TEST(reg)