diff options
author | kan <kan@FreeBSD.org> | 2011-01-25 19:17:50 +0000 |
---|---|---|
committer | kan <kan@FreeBSD.org> | 2011-01-25 19:17:50 +0000 |
commit | fa976d4a0accade96681a22f51550578f718358a (patch) | |
tree | 3a1f40a4b43cfcb9543abe4045112ccf4c0d5637 /lib | |
parent | 783f380edf07648a82ddc6a12ad2a3ccfde653c2 (diff) | |
download | FreeBSD-src-fa976d4a0accade96681a22f51550578f718358a.zip FreeBSD-src-fa976d4a0accade96681a22f51550578f718358a.tar.gz |
Do not allocate buffer to hold data for zero-sized sections.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libelf/elf_data.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/libelf/elf_data.c b/lib/libelf/elf_data.c index 9241b09..b8c10de 100644 --- a/lib/libelf/elf_data.c +++ b/lib/libelf/elf_data.c @@ -115,8 +115,10 @@ elf_getdata(Elf_Scn *s, Elf_Data *d) d->d_type = elftype; d->d_version = e->e_version; - if (sh_type == SHT_NOBITS) + if (sh_type == SHT_NOBITS || sh_size == 0) { + STAILQ_INSERT_TAIL(&s->s_data, d, d_next); return (d); + } if ((d->d_buf = malloc(msz*count)) == NULL) { (void) _libelf_release_data(d); |