bin/61690: fsdb seqfaults in cmd. parsing routine

Jan-Espen Pettersen sigsegv at leakingmemory.org
Wed Jan 28 14:30:30 PST 2004


The following reply was made to PR bin/61690; it has been noted by GNATS.

From: Jan-Espen Pettersen <sigsegv at leakingmemory.org>
To: freebsd-gnats-submit at FreeBSD.org, hsn at netmag.cz
Cc: sigsegv at leakingmemory.org
Subject: Re: bin/61690: fsdb seqfaults in cmd. parsing routine
Date: Wed, 28 Jan 2004 23:26:36 +0100

 Debug info from gdb:
 
 (gdb) run /dev/ad0s1a
 Starting program: /usr/obj/usr/src/FreeBSD-CURRENT/sbin/fsdb/fsdb 
 /dev/ad0s1a
 ** /dev/ad0s1a (NO WRITE)
 Editing file system `/dev/ad0s1a'
 Last Mounted on /
 current inode: directory
 I=2 MODE=40755 SIZE=512
         MTIME=Jan 25 14:26:13 2004 [0 nsec]
         CTIME=Jan 25 14:26:13 2004 [0 nsec]
         ATIME=Jan 28 03:01:06 2004 [0 nsec]
 OWNER=root GRP=wheel LINKCNT=24 FLAGS=0 BLKCNT=4 GEN=7aca51f8
 fsdb (inum: 2)> help test
 
 Breakpoint 1, recrack (line=0x80c6060 "help test\n", argc=0xbfbfeb0c, 
 argc_max=1)
     at /usr/src/FreeBSD-CURRENT/sbin/fsdb/fsdbutil.c:82
 82          for (p = line, i = 0; p != NULL && i < 8 && i < argc_max - 
 1; i++) {
 (gdb) bt
 #0  recrack (line=0x80c6060 "help test\n", argc=0xbfbfeb0c, argc_max=1) 
 at /usr/src/FreeBSD-CURRENT/sbin/fsdb/fsdbutil.c:82
 #1  0x08049a33 in cmdloop () at 
 /usr/src/FreeBSD-CURRENT/sbin/fsdb/fsdb.c:260
 #2  0x08049664 in main (argc=1, argv=0xbfbfeb74) at 
 /usr/src/FreeBSD-CURRENT/sbin/fsdb/fsdb.c:107
 #3  0x08049452 in _start ()
 (gdb) next
 90          argv[i] = argv[i - 1] + strlen(argv[i - 1]) + 1;
 (gdb)
 
 Program received signal SIGSEGV, Segmentation fault.
 0x281032f9 in strlen () from /lib/libc.so.5
 (gdb) bt full
 #0  0x281032f9 in strlen () from /lib/libc.so.5
 No symbol table info available.
 #1  0xbfbfeb70 in ?? ()
 No symbol table info available.
 #2  0x08049a33 in cmdloop () at 
 /usr/src/FreeBSD-CURRENT/sbin/fsdb/fsdb.c:260
         line = 0x80c6060 "help test\n"
         elline = 0x80cb800 "help test\n"
         cmd_argc = 2
         rval = 0
         known = 0
         cmd_argv = (char **) 0x80618a0
         cmdp = (struct cmdtable *) 0x80602a0
         hist = (History *) 0x80b0140
         elptr = (EditLine *) 0x80c5000
         he = {num = 1, str = 0x80c6050 "help test\n"}
 #3  0x08049664 in main (argc=1, argv=0xbfbfeb74) at 
 /usr/src/FreeBSD-CURRENT/sbin/fsdb/fsdb.c:107
         ch = -1
         rval = 2
         fsys = 0xbfbfec98 "/dev/ad0s1a"
 #4  0x08049452 in _start ()
 No symbol table info available.
 
 Patch:
 
 http://www.leakingmemory.org/patches/fsdb/fsdb_segf.diff
 
 
 The crash is caused by an underflow where i = 0, and an attempt to read 
 at argv[i - 1].
 
 Regards,
 Jan-Espen Pettersen
 
 


More information about the freebsd-bugs mailing list