aboutsummaryrefslogtreecommitdiff
path: root/binutils/rescoff.c
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2016-07-28 15:37:16 +0100
committerNick Clifton <nickc@redhat.com>2016-07-28 15:37:16 +0100
commit4931146e91c3c8208f1e0b8462b8f33e70da506a (patch)
treea9f43d38c4e19c1635af081bfaef07625d630e4f /binutils/rescoff.c
parentff20cab8a222c43de501a340016e11cae6a272a7 (diff)
downloadgdb-4931146e91c3c8208f1e0b8462b8f33e70da506a.zip
gdb-4931146e91c3c8208f1e0b8462b8f33e70da506a.tar.gz
gdb-4931146e91c3c8208f1e0b8462b8f33e70da506a.tar.bz2
Fix decoding of Windows resources.
PR binutils/17512 * rescoff.c (read_coff_res_dir): Fix detection of buffer overrun. * resbin.c (bin_to_res_version): Allow for the padded length of a version block to be longer than the recorded length. Skip padding bytes.
Diffstat (limited to 'binutils/rescoff.c')
-rw-r--r--binutils/rescoff.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/binutils/rescoff.c b/binutils/rescoff.c
index 74a61a7..9151eab 100644
--- a/binutils/rescoff.c
+++ b/binutils/rescoff.c
@@ -249,7 +249,7 @@ read_coff_res_dir (windres_bfd *wrbfd, const bfd_byte *data,
for (j = 0; j < length; j++)
{
/* PR 17512: file: 05dc4a16. */
- if (length < 0 || ers >= (bfd_byte *) ere || ers + j * 2 + 4 >= (bfd_byte *) ere)
+ if (length < 0 || ers >= flaginfo->data_end || ers + j * 2 + 4 >= flaginfo->data_end)
overrun (flaginfo, _("resource name"));
re->id.u.n.name[j] = windres_get_16 (wrbfd, ers + j * 2 + 2, 2);
}