]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
cryptsetup: fail with error if extraneous arguments are specified
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Sat, 23 Sep 2023 09:59:55 +0000 (11:59 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 26 Sep 2023 14:21:31 +0000 (16:21 +0200)
So far the program would silently ignore those… I think it's better to fail.

src/cryptsetup/cryptsetup.c

index 5e283a7dd09b9dfb8285656163fcd706a7de5476..a7577d8113b517e36a1bfd1965b62dd5ffbbc1cc 100644 (file)
@@ -2157,6 +2157,8 @@ static int run(int argc, char *argv[]) {
 
                 if (argc - optind < 3)
                         return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "attach requires at least two arguments.");
+                if (argc - optind >= 6)
+                        return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "attach does not accept more than four arguments.");
 
                 const char *volume = ASSERT_PTR(argv[optind + 1]),
                            *source = ASSERT_PTR(argv[optind + 2]),
@@ -2356,6 +2358,9 @@ static int run(int argc, char *argv[]) {
         } else if (streq(verb, "detach")) {
                 const char *volume = ASSERT_PTR(argv[optind + 1]);
 
+                if (argc - optind >= 3)
+                        return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "attach does not accept more than one argument.");
+
                 if (!filename_is_valid(volume))
                         return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Volume name '%s' is not valid.", volume);