From: Mark Wielaard Date: Sat, 13 Feb 2016 18:51:48 +0000 (+0100) Subject: libelf: Don't leak memory when out of memory in updatemmap. X-Git-Tag: elfutils-0.166~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7249c8e4b5ad7b5dfea0d8bf2a9ca05469575822;p=thirdparty%2Felfutils.git libelf: Don't leak memory when out of memory in updatemmap. We forgot to free scns when returning ELF_E_NOMEM. Signed-off-by: Mark Wielaard --- diff --git a/libelf/ChangeLog b/libelf/ChangeLog index b9669239f..350e4eb19 100644 --- a/libelf/ChangeLog +++ b/libelf/ChangeLog @@ -1,3 +1,7 @@ +2016-02-13 Mark Wielaard + + * elf32_updatefile.c (updatemmap): Free scns when out of memory. + 2016-01-28 Mark Wielaard * elf.h: Update from glibc. Add new i386 and x86_64 relocations. diff --git a/libelf/elf32_updatefile.c b/libelf/elf32_updatefile.c index 090921976..d0fabb16c 100644 --- a/libelf/elf32_updatefile.c +++ b/libelf/elf32_updatefile.c @@ -1,5 +1,5 @@ /* Write changed data structures. - Copyright (C) 2000-2010, 2014, 2015 Red Hat, Inc. + Copyright (C) 2000-2010, 2014, 2015, 2016 Red Hat, Inc. This file is part of elfutils. Written by Ulrich Drepper , 2000. @@ -269,6 +269,7 @@ __elfw2(LIBELFBITS,updatemmap) (Elf *elf, int change_bo, size_t shnum) void *p = malloc (sizeof (ElfW2(LIBELFBITS,Shdr))); if (unlikely (p == NULL)) { + free (scns); __libelf_seterrno (ELF_E_NOMEM); return -1; } @@ -295,6 +296,7 @@ __elfw2(LIBELFBITS,updatemmap) (Elf *elf, int change_bo, size_t shnum) void *p = malloc (scn->data_list.data.d.d_size); if (unlikely (p == NULL)) { + free (scns); __libelf_seterrno (ELF_E_NOMEM); return -1; }