Hugh McMaster : reg: Do not allow duplicate /d or /t switches.

Alexandre Julliard julliard at winehq.org
Wed Jun 8 11:07:36 CDT 2016


Module: wine
Branch: master
Commit: 31efcc634a9d3498d79dcad1f46bbf5f9848b4ed
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=31efcc634a9d3498d79dcad1f46bbf5f9848b4ed

Author: Hugh McMaster <hugh.mcmaster at 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 at outlook.com>
Signed-off-by: Alexandre Julliard <julliard at 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);
 }




More information about the wine-cvs mailing list