summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--src/file.c3
-rw-r--r--src/magic.c39
3 files changed, 28 insertions, 20 deletions
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 <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>
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);