]> err.no Git - util-linux/commitdiff
fsck.minix: fix strict-aliasing bugs
authorKarel Zak <kzak@redhat.com>
Fri, 16 Oct 2009 20:08:35 +0000 (22:08 +0200)
committerKarel Zak <kzak@redhat.com>
Fri, 16 Oct 2009 22:19:23 +0000 (00:19 +0200)
Signed-off-by: Karel Zak <kzak@redhat.com>
disk-utils/fsck.minix.c

index 31b5ef6c24c64fb2594b6c4a586ac2ffb91d7cbb..0ce719641d8044014e6bbce898d25e88e6fff352 100644 (file)
@@ -145,7 +145,8 @@ static char current_name[MAX_DEPTH*(NAME_MAX+1)+1];
 static char * inode_buffer = NULL;
 #define Inode (((struct minix_inode *) inode_buffer)-1)
 #define Inode2 (((struct minix2_inode *) inode_buffer)-1)
-static char super_block_buffer[BLOCK_SIZE];
+
+static char *super_block_buffer;
 #define Super (*(struct minix_super_block *)super_block_buffer)
 #define INODES ((unsigned long)Super.s_ninodes)
 #define ZONES ((unsigned long)(version2 ? Super.s_zones : Super.s_nzones))
@@ -584,6 +585,11 @@ static void
 read_superblock(void) {
        if (BLOCK_SIZE != lseek(IN, BLOCK_SIZE, SEEK_SET))
                die(_("seek failed"));
+
+       super_block_buffer = calloc(1, BLOCK_SIZE);
+       if (!super_block_buffer)
+               die(_("unable to alloc buffer for superblock"));
+
        if (BLOCK_SIZE != read(IN, super_block_buffer, BLOCK_SIZE))
                die(_("unable to read super block"));
        if (MAGIC == MINIX_SUPER_MAGIC) {