aboutsummaryrefslogtreecommitdiff
path: root/src/libmach
diff options
context:
space:
mode:
authorNeven Sajko <nsajko@gmail.com>2019-08-11 00:54:13 +0000
committerDan Cross <crossd@gmail.com>2020-01-07 15:27:58 -0500
commit2c97de1a26686adf2a6377bc4ef18d1aec6a1f3a (patch)
treeac12cf1ace1ab29a62960a01c3124e9d9980b722 /src/libmach
parenta4e59b37021326e304c311825ba52a52b02bd9c0 (diff)
downloadplan9port-2c97de1a26686adf2a6377bc4ef18d1aec6a1f3a.tar.gz
plan9port-2c97de1a26686adf2a6377bc4ef18d1aec6a1f3a.tar.bz2
plan9port-2c97de1a26686adf2a6377bc4ef18d1aec6a1f3a.zip
libmach: plug memory leak
Change-Id: I08cb7227c071c7fc2e30f43e07bcf599fc1d174a
Diffstat (limited to 'src/libmach')
-rw-r--r--src/libmach/elf.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/libmach/elf.c b/src/libmach/elf.c
index 2459a291..5b7494d9 100644
--- a/src/libmach/elf.c
+++ b/src/libmach/elf.c
@@ -191,7 +191,7 @@ elfinit(int fd)
ElfHdrBytes h32;
ElfHdrBytes64 h64;
} hdrb;
- void *p;
+ void *p = nil;
ElfSect *s;
e = mallocz(sizeof(Elf), 1);
@@ -234,6 +234,7 @@ elfinit(int fd)
unpackprog(h, &e->prog[i], p);
}
free(p);
+ p = nil;
e->nsect = h->shnum;
if(e->nsect == 0)
@@ -247,6 +248,7 @@ elfinit(int fd)
unpacksect(h, &e->sect[i], p);
}
free(p);
+ p = nil;
if(h->shstrndx >= e->nsect){
fprint(2, "warning: bad string section index %d >= %d", h->shstrndx, e->nsect);
@@ -287,6 +289,7 @@ nosects:
return e;
err:
+ free(p);
free(e->sect);
free(e->prog);
free(e->shstrtab);