Module: wine Branch: master Commit: 31efcc634a9d3498d79dcad1f46bbf5f9848b4ed URL: http://source.winehq.org/git/wine.git/?a=commit;h=31efcc634a9d3498d79dcad1f4...
Author: Hugh McMaster hugh.mcmaster@outlook.com Date: Wed Jun 8 10:47:56 2016 +0000
reg: Do not allow duplicate /d or /t switches.
Signed-off-by: Hugh McMaster hugh.mcmaster@outlook.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
programs/reg/reg.c | 10 ++++++++-- programs/reg/tests/reg.c | 8 ++++++++ 2 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/programs/reg/reg.c b/programs/reg/reg.c index 84818da..28133de 100644 --- a/programs/reg/reg.c +++ b/programs/reg/reg.c @@ -941,10 +941,16 @@ int wmain(int argc, WCHAR *argvW[]) else if (!lstrcmpiW(argvW[i], slashVAW)) value_all = TRUE; else if (!lstrcmpiW(argvW[i], slashTW)) - type = argvW[++i]; + { + if (type || !(type = argvW[++i])) + { + output_message(STRING_INVALID_CMDLINE); + return 1; + } + } else if (!lstrcmpiW(argvW[i], slashDW)) { - if (!(data = argvW[++i])) + if (data || !(data = argvW[++i])) { output_message(STRING_INVALID_CMDLINE); return 1; diff --git a/programs/reg/tests/reg.c b/programs/reg/tests/reg.c index f7d8b11..2831e03 100644 --- a/programs/reg/tests/reg.c +++ b/programs/reg/tests/reg.c @@ -442,6 +442,14 @@ static void test_add(void)
RegCloseKey(hkey);
+ /* Test duplicate switches */ + run_reg_exe("reg add HKCU\" KEY_BASE " /v dup1 /t REG_DWORD /d 123 /f /t REG_SZ", &r); + ok(r == REG_EXIT_FAILURE || broken(r == REG_EXIT_SUCCESS /* WinXP */), + "got exit code %u, expected 1\n", r); + + run_reg_exe("reg add HKCU\" KEY_BASE " /v dup2 /t REG_DWORD /d 123 /f /d 456", &r); + ok(r == REG_EXIT_FAILURE, "got exit code %u, expected 1\n", r); + err = RegDeleteKeyA(HKEY_CURRENT_USER, KEY_BASE); ok(err == ERROR_SUCCESS, "got %d\n", err); }