]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
disk-utils/mkfs.minix: Set ninodes after checking max
authorNate Clark <nate@neworld.us>
Wed, 4 Jan 2017 17:31:37 +0000 (12:31 -0500)
committerNate Clark <nate@neworld.us>
Wed, 4 Jan 2017 19:42:59 +0000 (14:42 -0500)
ninodes in the superblock needs to be set after inodes is checked
against MINIX_MAX_INODES otherwise a value larger than MINIX_MAX_INODES
can be attempted to be stored in the superblock.

Without this change the command "mkfs.minix -2 -i 65530 <dev>" would
write a minix superblock with ninodes set to 0.

Signed-off-by: Nate Clark <nate@neworld.us>
disk-utils/mkfs.minix.c
tests/expected/minix/mkfs-v2i65535 [new file with mode: 0644]
tests/ts/minix/mkfs

index 613a06997c7a754d1b11ec23707731448b2fac08..47a155c557b62f9aee142ec8ace9b02b9a41421a 100644 (file)
@@ -534,9 +534,9 @@ static void setup_tables(const struct fs_control *ctl) {
        if (fs_version == 3)
                Super3.s_ninodes = inodes;
        else {
-               Super.s_ninodes = inodes;
                if (inodes > MINIX_MAX_INODES)
                        inodes = MINIX_MAX_INODES;
+               Super.s_ninodes = inodes;
        }
        super_set_map_blocks(ctl, inodes);
        if (MINIX_MAX_INODES < first_zone_data())
diff --git a/tests/expected/minix/mkfs-v2i65535 b/tests/expected/minix/mkfs-v2i65535
new file mode 100644 (file)
index 0000000..761a36b
--- /dev/null
@@ -0,0 +1,9 @@
+create minix fs -2 -i 65535
+65535 inodes
+10224 blocks
+Firstdatazone=4107 (4107)
+Zonesize=1024
+Maxsize=2147483647
+
+mkfs return value: 0
+umount the image
index 4fc6ad3e038dd17f2adc18bf42c86eb781c76743..7af0b109a4fff0aa32aadedb096275129fe360eb 100755 (executable)
@@ -49,6 +49,7 @@ mkfs_and_mount_minix 'v1c14' '-1 -n 14'
 mkfs_and_mount_minix 'v1c30' '-1 -n 30'
 mkfs_and_mount_minix 'v2c14' '-2 -n 14'
 mkfs_and_mount_minix 'v2c30' '-2 -n 30'
+mkfs_and_mount_minix 'v2i65535' '-2 -i 65535'
 mkfs_and_mount_minix 'v3c60' '-3 -n 60'
 
 ts_finalize