]> git.wh0rd.org - dump.git/commitdiff
Changed some "panic" into "errx" for some errors when restore
authorStelian Pop <stelian@popies.net>
Sun, 25 Jun 2000 18:42:39 +0000 (18:42 +0000)
committerStelian Pop <stelian@popies.net>
Sun, 25 Jun 2000 18:42:39 +0000 (18:42 +0000)
isn't able to recover.

CHANGES
restore/symtab.c
restore/tape.c

diff --git a/CHANGES b/CHANGES
index c24dbbbcfaf1625ef3361b4f36263eaad2d73dea..139b14ad16b9c7569c3d5fb761cffa5e4c6c11d0 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,4 +1,4 @@
-$Id: CHANGES,v 1.64 2000/06/11 17:26:04 stelian Exp $
+$Id: CHANGES,v 1.65 2000/06/25 18:42:39 stelian Exp $
 
 Changes between versions 0.4b17 and 0.4b18 (released ??????????????)
 ====================================================================
@@ -12,6 +12,13 @@ Changes between versions 0.4b17 and 0.4b18 (released ??????????????)
        to Charles Karney <karney@users.sourceforge.net>
        for the bug report.
 
+3.     Changed a few "panic" into "exit", causing restore to
+       be more stable against some attacks (like the last one
+       reported on Bugtraq, although the last version of restore
+       was not vulnerable - just dumped core). Thanks to
+       Andreas Hasenack <andreas@conectiva.com.br> for reporting
+       the bugs to me.
+
 Changes between versions 0.4b16 and 0.4b17 (released June 1st, 2000)
 ====================================================================
 
index 740165b241631814a54eef7c65ef1ea7ea04e6c3..9ad4955463a8beabf6202b5b20d5accbc6035c44 100644 (file)
@@ -40,7 +40,7 @@
 
 #ifndef lint
 static const char rcsid[] =
-       "$Id: symtab.c,v 1.8 2000/03/01 10:16:05 stelian Exp $";
+       "$Id: symtab.c,v 1.9 2000/06/25 18:42:39 stelian Exp $";
 #endif /* not lint */
 
 /*
@@ -245,7 +245,7 @@ addentry(char *name, ino_t inum, int type)
        } else {
                np = (struct entry *)calloc(1, sizeof(struct entry));
                if (np == NULL)
-                       panic("no memory to extend symbol table\n");
+                       errx(1, "no memory to extend symbol table");
        }
        np->e_type = type & ~LINK;
        ep = lookupparent(name);
@@ -414,7 +414,7 @@ savename(char *name)
        } else {
                cp = malloc((unsigned)allocsize(len));
                if (cp == NULL)
-                       panic("no space for string table\n");
+                       errx(1, "no space for string table");
        }
        (void) strcpy(cp, name);
        return (cp);
@@ -554,27 +554,27 @@ initsymtable(char *filename)
                entry = (struct entry **)
                        calloc((unsigned)entrytblsize, sizeof(struct entry *));
                if (entry == (struct entry **)NULL)
-                       panic("no memory for entry table\n");
+                       errx(1, "no memory for entry table");
                ep = addentry(".", ROOTINO, NODE);
                ep->e_flags |= NEW;
                return;
        }
        if ((fd = open(filename, O_RDONLY, 0)) < 0) {
                warn("open");
-               panic("cannot open symbol table file %s\n", filename);
+               errx(1, "cannot open symbol table file %s", filename);
        }
        if (fstat(fd, &stbuf) < 0) {
                warn("stat");
-               panic("cannot stat symbol table file %s\n", filename);
+               errx(1, "cannot stat symbol table file %s", filename);
        }
        tblsize = stbuf.st_size - sizeof(struct symtableheader);
        base = calloc(sizeof(char), (unsigned)tblsize);
        if (base == NULL)
-               panic("cannot allocate space for symbol table\n");
+               errx(1, "cannot allocate space for symbol table");
        if (read(fd, base, (int)tblsize) < 0 ||
            read(fd, (char *)&hdr, sizeof(struct symtableheader)) < 0) {
                warn("read");
-               panic("cannot read symbol table file %s\n", filename);
+               errx(1, "cannot read symbol table file %s", filename);
        }
        switch (command) {
        case 'r':
index c5d9a661adccdf0fdadb72b2ec31a6446e58c689..2f57d5fe59192541ddb9e028da896b60e67f3bf3 100644 (file)
@@ -45,7 +45,7 @@
 
 #ifndef lint
 static const char rcsid[] =
-       "$Id: tape.c,v 1.17 2000/06/03 22:24:18 stelian Exp $";
+       "$Id: tape.c,v 1.18 2000/06/25 18:42:39 stelian Exp $";
 #endif /* not lint */
 
 #include <sys/param.h>
@@ -279,7 +279,7 @@ setup(void)
        Dprintf(stdout, "maxino = %ld\n", (long)maxino);
        map = calloc((unsigned)1, (unsigned)howmany(maxino, NBBY));
        if (map == NULL)
-               panic("no memory for active inode map\n");
+               errx(1, "no memory for active inode map");
        usedinomap = map;
        curfile.action = USING;
        getfile(xtrmap, xtrmapskip);
@@ -287,7 +287,7 @@ setup(void)
                errx(1, "Cannot find file dump list");
        map = calloc((unsigned)1, (unsigned)howmany(maxino, NBBY));
        if (map == (char *)NULL)
-               panic("no memory for file dump list\n");
+               errx(1, "no memory for file dump list");
        dumpmap = map;
        curfile.action = USING;
        getfile(xtrmap, xtrmapskip);