diff options
author | norly <ny-git@enpas.org> | 2013-06-20 22:56:34 +0100 |
---|---|---|
committer | norly <ny-git@enpas.org> | 2013-06-20 22:56:34 +0100 |
commit | df1cd0fea39ba9623c85b0b34d3374d961144f3a (patch) | |
tree | 8ea23b795ff9cea3f934e6e3994e26f8e8a583db /src | |
parent | 70b271e345debda7437c18f86c0f715a42a8267a (diff) |
Cleaner ElfuPhdr alloc
Diffstat (limited to 'src')
-rw-r--r-- | src/libelfu/model/phdr.c | 26 | ||||
-rw-r--r-- | src/libelfu/modelops/fromFile.c | 6 |
2 files changed, 27 insertions, 5 deletions
diff --git a/src/libelfu/model/phdr.c b/src/libelfu/model/phdr.c index d26eb77..ce395ec 100644 --- a/src/libelfu/model/phdr.c +++ b/src/libelfu/model/phdr.c @@ -1,4 +1,6 @@ #include <assert.h> +#include <stdlib.h> +#include <string.h> #include <libelfu/libelfu.h> @@ -34,3 +36,27 @@ void elfu_mPhdrUpdateChildOffsets(ElfuPhdr *mp) ms->shdr.sh_offset = mp->phdr.p_offset + (ms->shdr.sh_addr - mp->phdr.p_vaddr); } } + + + +/* + * Allocation, destruction + */ + +ElfuPhdr* elfu_mPhdrAlloc() +{ + ElfuPhdr *mp; + + mp = malloc(sizeof(ElfuPhdr)); + if (!mp) { + ELFU_WARN("mPhdrAlloc: malloc() failed for ElfuPhdr.\n"); + return NULL; + } + + memset(mp, 0, sizeof(*mp)); + + CIRCLEQ_INIT(&mp->childScnList); + CIRCLEQ_INIT(&mp->childPhdrList); + + return mp; +} diff --git a/src/libelfu/modelops/fromFile.c b/src/libelfu/modelops/fromFile.c index 9c25e29..8e1bb81 100644 --- a/src/libelfu/modelops/fromFile.c +++ b/src/libelfu/modelops/fromFile.c @@ -185,17 +185,13 @@ static ElfuPhdr* modelFromPhdr(GElf_Phdr *phdr) assert(phdr); - mp = malloc(sizeof(ElfuPhdr)); + mp = elfu_mPhdrAlloc(); if (!mp) { - ELFU_WARN("modelFromPhdr: malloc() failed for ElfuPhdr.\n"); return NULL; } mp->phdr = *phdr; - CIRCLEQ_INIT(&mp->childScnList); - CIRCLEQ_INIT(&mp->childPhdrList); - return mp; } |