]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
veritysetup: do some superficial checking on volume name
authorLennart Poettering <lennart@poettering.net>
Thu, 31 Mar 2022 09:03:06 +0000 (11:03 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 31 Mar 2022 09:44:46 +0000 (11:44 +0200)
cryptsetup does this too, so let's better be safe here, too.

src/veritysetup/veritysetup.c

index 3551ed4f3a6dd63fe65b7f72b4a1c9c14bbe10f3..a81e93cb756529ac317856a4e903ed405c7231d3 100644 (file)
@@ -146,6 +146,9 @@ static int run(int argc, char *argv[]) {
                 root_hash = argv[5];
                 options = mangle_none(argc > 6 ? argv[6] : NULL);
 
+                if (!filename_is_valid(volume))
+                        return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Volume name '%s' is not valid.", volume);
+
                 r = unhexmem(root_hash, SIZE_MAX, &m, &l);
                 if (r < 0)
                         return log_error_errno(r, "Failed to parse root hash: %m");
@@ -210,6 +213,9 @@ static int run(int argc, char *argv[]) {
 
                 volume = argv[2];
 
+                if (!filename_is_valid(volume))
+                        return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Volume name '%s' is not valid.", volume);
+
                 r = crypt_init_by_name(&cd, volume);
                 if (r == -ENODEV) {
                         log_info("Volume %s already inactive.", volume);