From 7f1eec317db79627b473c5b149a22a1b20d1f68f Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 9 Apr 2014 11:33:23 +0200 Subject: [PATCH] CVE-2014-0172 Check for overflow before calling malloc to uncompress data. https://bugzilla.redhat.com/show_bug.cgi?id=1085663 Reported-by: Florian Weimer Signed-off-by: Mark Wielaard Index: elfutils-0.158/libdw/dwarf_begin_elf.c =================================================================== --- elfutils-0.158.orig/libdw/dwarf_begin_elf.c 2014-05-01 17:10:01.928213292 +0000 +++ elfutils-0.158/libdw/dwarf_begin_elf.c 2014-05-01 17:10:01.924213375 +0000 @@ -1,5 +1,5 @@ /* Create descriptor from ELF descriptor for processing file. - Copyright (C) 2002-2011 Red Hat, Inc. + Copyright (C) 2002-2011, 2014 Red Hat, Inc. This file is part of elfutils. Written by Ulrich Drepper , 2002. @@ -289,6 +289,12 @@ memcpy (&size, data->d_buf + 4, sizeof size); size = be64toh (size); + /* Check for unsigned overflow so malloc always allocated + enough memory for both the Elf_Data header and the + uncompressed section data. */ + if (unlikely (sizeof (Elf_Data) + size < size)) + break; + Elf_Data *zdata = malloc (sizeof (Elf_Data) + size); if (unlikely (zdata == NULL)) break;