From 57f1539592c43dcf4c33eddcc022b47d3a64d177 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Sun, 5 Mar 2017 20:52:23 +0000 Subject: [PATCH] libblkid: ensure uninitialized variable is not used [clang] 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 --- libblkid/src/superblocks/minix.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/libblkid/src/superblocks/minix.c b/libblkid/src/superblocks/minix.c index b8881e574a..c47378d731 100644 --- a/libblkid/src/superblocks/minix.c +++ b/libblkid/src/superblocks/minix.c @@ -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. -- 2.47.3