]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libblkid: ensure uninitialized variable is not used [clang]
authorSami Kerola <kerolasa@iki.fi>
Sun, 5 Mar 2017 20:52:23 +0000 (20:52 +0000)
committerKarel Zak <kzak@redhat.com>
Mon, 13 Mar 2017 13:48:12 +0000 (14:48 +0100)
Following condition can be true if minix file system is corrupt, and versio
number is found to be greater than 3.  It is fair to say described scenario
is unlikely.

libblkid/src/superblocks/minix.c:107:13: warning: variable 'zone_size' is
used uninitialized whenever
      'if' condition is false [-Wsometimes-uninitialized]
        } else if (version == 3) {
                   ^~~~~~~~~~~~
libblkid/src/superblocks/minix.c:121:6: note: uninitialized use occurs here
        if (zone_size != 0 || ninodes == 0 || ninodes == UINT32_MAX)
            ^~~~~~~~~

Signed-off-by: Sami Kerola <kerolasa@iki.fi>
libblkid/src/superblocks/minix.c

index b8881e574abe2383397668d32d59b2cdb526c271..c47378d731fae43340039ea10a28cf40a63f4cac 100644 (file)
@@ -87,10 +87,9 @@ static int probe_minix(blkid_probe pr,
        if (!data)
                return errno ? -errno : 1;
        version = get_minix_version(data, &swabme);
-       if (version < 1)
-               return 1;
-
-       if (version <= 2) {
+       switch (version) {
+       case 1:
+       case 2: {
                struct minix_super_block *sb = (struct minix_super_block *) data;
 
                uint16_t state = minix_swab16(swabme, sb->s_state);
@@ -104,7 +103,9 @@ static int probe_minix(blkid_probe pr,
                zmaps   = minix_swab16(swabme, sb->s_zmap_blocks);
                firstz  = minix_swab16(swabme, sb->s_firstdatazone);
                zone_size = sb->s_log_zone_size;
-       } else if (version == 3) {
+               break;
+       }
+       case 3: {
                struct minix3_super_block *sb = (struct minix3_super_block *) data;
 
                zones = minix_swab32(swabme, sb->s_zones);
@@ -113,6 +114,10 @@ static int probe_minix(blkid_probe pr,
                zmaps   = minix_swab16(swabme, sb->s_zmap_blocks);
                firstz  = minix_swab16(swabme, sb->s_firstdatazone);
                zone_size = sb->s_log_zone_size;
+               break;
+       }
+       default:
+               return 1;
        }
 
        /* sanity checks to be sure that the FS is really minix.