]> err.no Git - util-linux/commitdiff
fsck.cramfs: segfault with INCLUDE_FS_TESTS and no -x option
authorKarel Zak <kzak@redhat.com>
Wed, 4 Feb 2009 22:36:39 +0000 (23:36 +0100)
committerKarel Zak <kzak@redhat.com>
Wed, 4 Feb 2009 22:36:39 +0000 (23:36 +0100)
The current implementation causes a segmentation fault if
INCLUDE_FS_TESTS is defined, but the -x option is not specified.

The error is caused by the extract_dir variable being null.

Reported-by: Roy Peled <the.roy.peled@gmail.com>
Signed-off-by: Karel Zak <kzak@redhat.com>
disk-utils/fsck.cramfs.c

index d388e78744012295e868a4a8d5dbcf9fc2a251ac..649aef03011d12277d8bc5fcd8f7146e01307479 100644 (file)
@@ -67,7 +67,7 @@ struct cramfs_super super;    /* just find the cramfs superblock once */
 static int cramfs_is_big_endian = 0;   /* source is big endian */
 static int opt_verbose = 0;    /* 1 = verbose (-v), 2+ = very verbose (-vv) */
 
-char *extract_dir = NULL;      /* extraction directory (-x) */
+char *extract_dir = "";        /* extraction directory (-x) */
 
 /* Exit codes used by fsck-type programs */
 #define FSCK_OK          0     /* No errors */
@@ -314,7 +314,8 @@ static void print_node(char type, struct cramfs_inode *i, char *name)
        }
 
        printf("%c %04o %s %5d:%-3d %s\n",
-              type, i->mode & ~S_IFMT, info, i->uid, i->gid, name);
+              type, i->mode & ~S_IFMT, info, i->uid, i->gid,
+              !*name && type == 'd' ? "/" : name);
 }
 
 /*