projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
gas: run the hwcaps-bump tests with 64-bit sparc objects only.
[deliverable/binutils-gdb.git]
/
binutils
/
resbin.c
diff --git
a/binutils/resbin.c
b/binutils/resbin.c
index 548ff38a6c81704a4728b4c1e6e943f2203e7dcb..11aa63874621acf4f6cab9e80e3abac6b3fd29c1 100644
(file)
--- a/
binutils/resbin.c
+++ b/
binutils/resbin.c
@@
-1,6
+1,5
@@
/* resbin.c -- manipulate the Windows binary resource format.
/* resbin.c -- manipulate the Windows binary resource format.
- Copyright 1997, 1998, 1999, 2002, 2003, 2005, 2006, 2007, 2009, 2010, 2011
- Free Software Foundation, Inc.
+ Copyright (C) 1997-2016 Free Software Foundation, Inc.
Written by Ian Lance Taylor, Cygnus Support.
Rewritten by Kai Tietz, Onevision.
Written by Ian Lance Taylor, Cygnus Support.
Rewritten by Kai Tietz, Onevision.
@@
-962,9
+961,10
@@
bin_to_res_version (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type lengt
get_version_header (wrbfd, data, length, "VS_VERSION_INFO",
(unichar **) NULL, &verlen, &vallen, &type, &off);
get_version_header (wrbfd, data, length, "VS_VERSION_INFO",
(unichar **) NULL, &verlen, &vallen, &type, &off);
- if ((unsigned int) verlen != length)
- fatal (_("version length %d does not match resource length %lu"),
- (int) verlen, (unsigned long) length);
+ /* PR 17512: The verlen field does not include padding length. */
+ if (verlen > length)
+ fatal (_("version length %lu greater than resource length %lu"),
+ (unsigned long) verlen, (unsigned long) length);
if (type != 0)
fatal (_("unexpected version type %d"), (int) type);
if (type != 0)
fatal (_("unexpected version type %d"), (int) type);
@@
-1068,7
+1068,7
@@
bin_to_res_version (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type lengt
verlen -= off;
stverlen -= off;
verlen -= off;
stverlen -= off;
-
+
vst->strings = NULL;
ppvs = &vst->strings;
vst->strings = NULL;
ppvs = &vst->strings;
@@
-1165,8
+1165,15
@@
bin_to_res_version (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type lengt
vallen -= 4;
}
}
vallen -= 4;
}
}
+ else if (ch == 0)
+ {
+ if (length == 8)
+ /* Padding - skip. */
+ break;
+ fatal (_("nul bytes found in version string"));
+ }
else
else
- fatal (_("unexpected version string
")
);
+ fatal (_("unexpected version string
character: %x"), ch
);
vi->next = NULL;
*pp = vi;
vi->next = NULL;
*pp = vi;
@@
-1319,7
+1326,7
@@
resid_to_bin (windres_bfd *wrbfd, rc_uint_type off, rc_res_id id)
if (wrbfd)
{
struct bin_res_id bri;
if (wrbfd)
{
struct bin_res_id bri;
-
+
windres_put_16 (wrbfd, bri.sig, 0xffff);
windres_put_16 (wrbfd, bri.id, id.u.id);
set_windres_bfd_content (wrbfd, &bri, off, BIN_RES_ID);
windres_put_16 (wrbfd, bri.sig, 0xffff);
windres_put_16 (wrbfd, bri.id, id.u.id);
set_windres_bfd_content (wrbfd, &bri, off, BIN_RES_ID);
@@
-1557,7
+1564,7
@@
res_to_bin_dialog (windres_bfd *wrbfd, rc_uint_type off, const rc_dialog *dialog
windres_put_32 (wrbfd, bdc.id, dc->id);
set_windres_bfd_content (wrbfd, &bdc, off, BIN_DIALOGEX_CONTROL_SIZE);
}
windres_put_32 (wrbfd, bdc.id, dc->id);
set_windres_bfd_content (wrbfd, &bdc, off, BIN_DIALOGEX_CONTROL_SIZE);
}
- }
+ }
off += (dialogex != 0 ? BIN_DIALOGEX_CONTROL_SIZE : BIN_DIALOG_CONTROL_SIZE);
off = resid_to_bin (wrbfd, off, dc->class);
off += (dialogex != 0 ? BIN_DIALOGEX_CONTROL_SIZE : BIN_DIALOG_CONTROL_SIZE);
off = resid_to_bin (wrbfd, off, dc->class);
This page took
0.024832 seconds
and
4
git commands to generate.