From c50ddfca105a73f7567f3072831dcfbf49ad0567 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Thu, 13 Nov 2014 15:43:02 +0100 Subject: [PATCH] libelf: Fix unsigned overflow check in elf_getdata. --- libelf/ChangeLog | 5 +++++ libelf/elf_getdata.c | 5 ++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/libelf/ChangeLog b/libelf/ChangeLog index a9d8c6f..45e220d 100644 --- a/libelf/ChangeLog +++ b/libelf/ChangeLog @@ -1,3 +1,8 @@ +2014-11-13 Mark Wielaard + + * elf_getdata.c (__libelf_set_rawdata_wrlock): Fix unsigned overflow + check. + 2014-11-08 Mark Wielaard * elf_begin.c (__libelf_next_arhdr_wrlock): Use mempcpy not __mempcpy. diff --git a/libelf/elf_getdata.c b/libelf/elf_getdata.c index 33d35d6..1ce1e23 100644 --- a/libelf/elf_getdata.c +++ b/libelf/elf_getdata.c @@ -245,9 +245,8 @@ __libelf_set_rawdata_wrlock (Elf_Scn *scn) /* First see whether the information in the section header is valid and it does not ask for too much. Check for unsigned overflow. */ - if (unlikely (offset + size > elf->maximum_size - || (offset + size + elf->maximum_size - < elf->maximum_size))) + if (unlikely (offset > elf->maximum_size + || elf->maximum_size - offset < size)) { /* Something is wrong. */ __libelf_seterrno (ELF_E_INVALID_SECTION_HEADER); -- 1.8.3.1