From: Christos Zoulas Date: Mon, 27 Sep 2004 15:28:37 +0000 (+0000) Subject: fix memory leaks. X-Git-Tag: FILE5_05~855 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b0553ed92414510e52537ec24716e82f501f4d02;p=file fix memory leaks. --- diff --git a/ChangeLog b/ChangeLog index 1239626a..9e5ad6e8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-09-27 11:30 christos Zoulas + + * Remove 3rd and 4th copyright clause; approved by Ian Darwin. + + * Fix small memory leaks; caught by: Tamas Sarlos + 2004-07-24 16:33 Christos Zoulas diff --git a/src/file.c b/src/file.c index 771fdac2..80f5c410 100644 --- a/src/file.c +++ b/src/file.c @@ -72,7 +72,7 @@ #include "patchlevel.h" #ifndef lint -FILE_RCSID("@(#)$Id: file.c,v 1.94 2004/09/11 19:15:57 christos Exp $") +FILE_RCSID("@(#)$Id: file.c,v 1.95 2004/09/27 15:28:37 christos Exp $") #endif /* lint */ @@ -310,6 +310,7 @@ main(int argc, char *argv[]) process(argv[optind], wid); } + magic_close(magic); return 0; } diff --git a/src/magic.c b/src/magic.c index 47130c0e..4516ba85 100644 --- a/src/magic.c +++ b/src/magic.c @@ -63,7 +63,7 @@ #include "patchlevel.h" #ifndef lint -FILE_RCSID("@(#)$Id: magic.c,v 1.23 2004/09/11 19:15:57 christos Exp $") +FILE_RCSID("@(#)$Id: magic.c,v 1.24 2004/09/27 15:28:37 christos Exp $") #endif /* lint */ #ifdef __EMX__ @@ -85,34 +85,34 @@ magic_open(int flags) return NULL; if (magic_setflags(ms, flags) == -1) { - free(ms); errno = EINVAL; - return NULL; + goto free1; } ms->o.ptr = ms->o.buf = malloc(ms->o.size = 1024); - ms->o.len = 0; - if (ms->o.buf == NULL) { - free(ms); - return NULL; - } + if (ms->o.buf == NULL) + goto free1; + ms->o.pbuf = malloc(ms->o.psize = 1024); - if (ms->o.pbuf == NULL) { - free(ms->o.buf); - free(ms); - return NULL; - } + if (ms->o.pbuf == NULL) + goto free2; + ms->c.off = malloc((ms->c.len = 10) * sizeof(*ms->c.off)); - if (ms->c.off == NULL) { - free(ms->o.pbuf); - free(ms->o.buf); - free(ms); - return NULL; - } + if (ms->c.off == NULL) + goto free3; + + ms->o.len = 0; ms->haderr = 0; ms->error = -1; ms->mlist = NULL; return ms; +free3: + free(ms->o.pbuf); +free2: + free(ms->o.buf); +free1: + free(ms); + return NULL; } private void @@ -138,6 +138,7 @@ magic_close(ms) struct magic_set *ms; { free_mlist(ms->mlist); + free(ms->o.pbuf); free(ms->o.buf); free(ms->c.off); free(ms);