New elf_open function will also need to initialize an elf file. Split
this to avoid missing members initialization.

Signed-off-by: Clement Leger <cle...@kalray.eu>
---
 common/elf.c | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/common/elf.c b/common/elf.c
index 55f5bc645..5534632b2 100644
--- a/common/elf.c
+++ b/common/elf.c
@@ -119,6 +119,15 @@ static int elf_check_image(struct elf_image *elf)
        return 0;
 }
 
+static int elf_check_init(struct elf_image *elf, void *buf)
+{
+       elf->buf = buf;
+       elf->low_addr = (void *) (unsigned long) -1;
+       elf->high_addr = 0;
+
+       return elf_check_image(elf);
+}
+
 struct elf_image *elf_load_image(void *buf)
 {
        struct elf_image *elf;
@@ -128,13 +137,11 @@ struct elf_image *elf_load_image(void *buf)
 
        INIT_LIST_HEAD(&elf->list);
 
-       elf->buf = buf;
-       elf->low_addr = (void *) (unsigned long) -1;
-       elf->high_addr = 0;
-
-       ret = elf_check_image(elf);
-       if (ret)
+       ret = elf_check_init(elf, buf);
+       if (ret) {
+               free(elf);
                return ERR_PTR(ret);
+       }
 
        ret = load_elf_image_phdr(elf);
        if (ret) {
-- 
2.17.1


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to