[PATCH 1/2] reg: Fail if /v is passed without an argument

Hugh McMaster hugh.mcmaster at outlook.com
Tue Mar 15 07:23:55 CDT 2016


Signed-off-by: Hugh McMaster <hugh.mcmaster at outlook.com>
---
 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 0490ac7..f5786fc 100644
--- a/programs/reg/reg.c
+++ b/programs/reg/reg.c
@@ -625,7 +625,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))
@@ -676,7 +682,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))
@@ -707,7 +719,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)
-- 
1.9.1




More information about the wine-patches mailing list