summaryrefslogtreecommitdiff
path: root/usr.bin/file/apprentice.c
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>1998-08-19 17:20:02 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>1998-08-19 17:20:02 +0000
commit3f4e08b91a2a18b0e4aa1ceacd8e59fa585bd369 (patch)
treed1264eeb096d8e0b9248ab5badce5898111fdfd4 /usr.bin/file/apprentice.c
parent1147469ad9dcb4eaedfc7c443ef910030b5703ae (diff)
realloc fix
Diffstat (limited to 'usr.bin/file/apprentice.c')
-rw-r--r--usr.bin/file/apprentice.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/usr.bin/file/apprentice.c b/usr.bin/file/apprentice.c
index 6ec2908cefd..af1a424e063 100644
--- a/usr.bin/file/apprentice.c
+++ b/usr.bin/file/apprentice.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: apprentice.c,v 1.5 1998/07/10 15:05:13 mickey Exp $ */
+/* $OpenBSD: apprentice.c,v 1.6 1998/08/19 17:20:01 deraadt Exp $ */
/*
* apprentice - make one pass through /etc/magic, learning its secrets.
@@ -36,7 +36,7 @@
#include "file.h"
#ifndef lint
-static char *moduleid = "$OpenBSD: apprentice.c,v 1.5 1998/07/10 15:05:13 mickey Exp $";
+static char *moduleid = "$OpenBSD: apprentice.c,v 1.6 1998/08/19 17:20:01 deraadt Exp $";
#endif /* lint */
#define EATAB {while (isascii((unsigned char) *l) && \
@@ -183,14 +183,19 @@ int *ndx, check;
#define ALLOC_INCR 20
if (nd+1 >= maxmagic){
+ struct magic *mtmp;
+
maxmagic += ALLOC_INCR;
- if ((magic = (struct magic *) realloc(magic,
+ if ((mtmp = (struct magic *) realloc(magic,
sizeof(struct magic) *
maxmagic)) == NULL) {
warn("malloc");
- if (check)
+ if (check) {
+ if (magic)
+ free(magic);
+ magic = mtmp;
return -1;
- else
+ } else
exit(1);
}
memset(&magic[*ndx], 0, sizeof(struct magic) * ALLOC_INCR);