From d572dbfde52e312e2cac3b73d1330ac7170ad687 Mon Sep 17 00:00:00 2001 From: Stelian Pop Date: Sun, 25 Jun 2000 18:42:39 +0000 Subject: [PATCH] Changed some "panic" into "errx" for some errors when restore isn't able to recover. --- CHANGES | 9 ++++++++- restore/symtab.c | 16 ++++++++-------- restore/tape.c | 6 +++--- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/CHANGES b/CHANGES index c24dbbb..139b14a 100644 --- 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 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 for reporting + the bugs to me. + Changes between versions 0.4b16 and 0.4b17 (released June 1st, 2000) ==================================================================== diff --git a/restore/symtab.c b/restore/symtab.c index 740165b..9ad4955 100644 --- a/restore/symtab.c +++ b/restore/symtab.c @@ -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': diff --git a/restore/tape.c b/restore/tape.c index c5d9a66..2f57d5f 100644 --- a/restore/tape.c +++ b/restore/tape.c @@ -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 @@ -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); -- 2.39.5