diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 1998-08-19 17:20:02 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 1998-08-19 17:20:02 +0000 |
commit | 3f4e08b91a2a18b0e4aa1ceacd8e59fa585bd369 (patch) | |
tree | d1264eeb096d8e0b9248ab5badce5898111fdfd4 /usr.bin/file/apprentice.c | |
parent | 1147469ad9dcb4eaedfc7c443ef910030b5703ae (diff) |
realloc fix
Diffstat (limited to 'usr.bin/file/apprentice.c')
-rw-r--r-- | usr.bin/file/apprentice.c | 15 |
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); |