[PATCH 1/3] reg: Do not allow duplicate /d or /t switches
Hugh McMaster
hugh.mcmaster at outlook.com
Wed Jun 8 05:47:56 CDT 2016
Signed-off-by: Hugh McMaster <hugh.mcmaster at outlook.com>
---
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);
}
--
1.9.1
More information about the wine-patches
mailing list