diff options
| author | Christos Zoulas <christos@zoulas.com> | 2004-09-27 15:28:37 +0000 |
|---|---|---|
| committer | Christos Zoulas <christos@zoulas.com> | 2004-09-27 15:28:37 +0000 |
| commit | 0099a385c0facdb62f5ad1b885f91bd0b16cbcd9 (patch) | |
| tree | c193b661933f61166d14ffdb2705f7a4ede8acbb | |
| parent | 2f951d5e2e2f3cc11cb32b5e383f791e10c86e9b (diff) | |
| download | file-git-0099a385c0facdb62f5ad1b885f91bd0b16cbcd9.tar.gz | |
fix memory leaks.
| -rw-r--r-- | ChangeLog | 6 | ||||
| -rw-r--r-- | src/file.c | 3 | ||||
| -rw-r--r-- | src/magic.c | 39 |
3 files changed, 28 insertions, 20 deletions
@@ -1,3 +1,9 @@ +2004-09-27 11:30 christos Zoulas <christos@zoulas.com> + + * Remove 3rd and 4th copyright clause; approved by Ian Darwin. + + * Fix small memory leaks; caught by: Tamas Sarlos + <stamas@csillag.ilab.sztaki.hu> 2004-07-24 16:33 Christos Zoulas <christos@zoulas.com> @@ -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); |
