]> 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)
committerLuca Boccassi <luca.boccassi@gmail.com>
Tue, 8 Apr 2025 19:52:11 +0000 (20:52 +0100)
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.

(cherry picked from commit e5dfe2cd8d32c3ddd3ca6763dbbe2d0ea2ab61aa)
(cherry picked from commit 81b821d08ceb5feec4b879d59c194897a957eb5e)

src/udev/udevadm-test-builtin.c

index 5815f2cc781ae7b181d9d97b61cde994b1183f84..9437a3a0080052e821f9ac6a1886ac027e583e24 100644 (file)
@@ -60,16 +60,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;
 }