diff options
| -rw-r--r-- | src/ChangeLog | 4 | ||||
| -rw-r--r-- | src/strip.c | 3 |
2 files changed, 6 insertions, 1 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 007236a4..cb00bb04 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2011-05-30 Mark Wielaard <[email protected]> + + * strip.c (relocate): Make offset check overflow-proof. + 2011-05-23 Mark Wielaard <[email protected]> * strip.c (relocate): Take new arguments is_rela to indicate diff --git a/src/strip.c b/src/strip.c index cf6bd971..f135e7c9 100644 --- a/src/strip.c +++ b/src/strip.c @@ -1727,7 +1727,8 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname, return false; } - if (offset + size > tdata->d_size) + if (offset > tdata->d_size + || tdata->d_size - offset < size) error (0, 0, gettext ("bad relocation")); /* When the symbol value is zero then for SHT_REL |
