summaryrefslogtreecommitdiffstats
path: root/lib/libelf
diff options
context:
space:
mode:
authorkan <kan@FreeBSD.org>2011-01-25 19:17:50 +0000
committerkan <kan@FreeBSD.org>2011-01-25 19:17:50 +0000
commitfa976d4a0accade96681a22f51550578f718358a (patch)
tree3a1f40a4b43cfcb9543abe4045112ccf4c0d5637 /lib/libelf
parent783f380edf07648a82ddc6a12ad2a3ccfde653c2 (diff)
downloadFreeBSD-src-fa976d4a0accade96681a22f51550578f718358a.zip
FreeBSD-src-fa976d4a0accade96681a22f51550578f718358a.tar.gz
Do not allocate buffer to hold data for zero-sized sections.
Diffstat (limited to 'lib/libelf')
-rw-r--r--lib/libelf/elf_data.c4
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);
OpenPOWER on IntegriCloud