]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
udevadm: check number of passed arguments
authorLennart Poettering <lennart@poettering.net>
Fri, 14 Mar 2025 10:43:07 +0000 (11:43 +0100)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 14 Mar 2025 20:12:46 +0000 (05:12 +0900)
We didn't check the number of arguments first, hence ended up outputting
some ugly complaints with `(null)` in a format string. And what's worse
accepted any number of arguments, where we'd ignore all but the first
two though.

src/udev/udevadm-test-builtin.c

index 036d4912ea060d3bfed3abaa72db16d9a826d546..a75e2432477228d3b486b184795424396fda9e47 100644 (file)
@@ -58,16 +58,11 @@ static int parse_argv(int argc, char *argv[]) {
                         assert_not_reached();
                 }
 
-        arg_command = argv[optind++];
-        if (!arg_command)
-                return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
-                                       "Command missing.");
-
-        arg_syspath = argv[optind++];
-        if (!arg_syspath)
-                return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
-                                       "device is missing.");
+        if (argc != optind + 2)
+                return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Expected two arguments: command string and device path.");
 
+        arg_command = ASSERT_PTR(argv[optind]);
+        arg_syspath = ASSERT_PTR(argv[optind+1]);
         return 1;
 }