From patchwork Thu Jul 29 16:37:01 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: linux-user: Protect against allocation failure in load_symbols. Date: Thu, 29 Jul 2010 06:37:01 -0000 From: Richard Henderson X-Patchwork-Id: 60283 Message-Id: <1280421421-22883-1-git-send-email-rth@twiddle.net> To: qemu-devel@nongnu.org Cc: edgar.iglesias@gmail.com Cc: malc Signed-off-by: Richard Henderson --- linux-user/elfload.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-) diff --git a/linux-user/elfload.c b/linux-user/elfload.c index a53285a..33d776d 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -1546,7 +1546,17 @@ static void load_symbols(struct elfhdr *hdr, int fd, abi_ulong load_bias) } } + /* Attempt to free the storage associated with the local symbols + that we threw away. Whether or not this has any effect on the + memory allocation depends on the malloc implementation and how + many symbols we managed to discard. */ syms = realloc(syms, nsyms * sizeof(*syms)); + if (syms == NULL) { + free(s); + free(strings); + return; + } + qsort(syms, nsyms, sizeof(*syms), symcmp); s->disas_num_syms = nsyms;