* resbin.c (bin_to_res_version): Correct offset
and length calculation of resource. (get_version_header): Apply alignement of 4 to len.
This commit is contained in:
parent
7e20dfcd94
commit
fb98f7b782
2 changed files with 11 additions and 9 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2012-11-27 Kai Tietz <ktietz@redhat.com>
|
||||||
|
|
||||||
|
* resbin.c (bin_to_res_version): Correct offset
|
||||||
|
and length calculation of resource.
|
||||||
|
(get_version_header): Apply alignement of 4 to len.
|
||||||
|
|
||||||
2012-11-16 H.J. Lu <hongjiu.lu@intel.com>
|
2012-11-16 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
* readelf.c (process_dynamic_section): Correct DF_1_CONFALT.
|
* readelf.c (process_dynamic_section): Correct DF_1_CONFALT.
|
||||||
|
|
|
@ -909,7 +909,7 @@ get_version_header (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type lengt
|
||||||
if (length < 8)
|
if (length < 8)
|
||||||
toosmall (key);
|
toosmall (key);
|
||||||
|
|
||||||
*len = windres_get_16 (wrbfd, data, 2);
|
*len = (windres_get_16 (wrbfd, data, 2) + 3) & ~3;
|
||||||
*vallen = windres_get_16 (wrbfd, data + 2, 2);
|
*vallen = windres_get_16 (wrbfd, data + 2, 2);
|
||||||
*type = windres_get_16 (wrbfd, data + 4, 2);
|
*type = windres_get_16 (wrbfd, data + 4, 2);
|
||||||
|
|
||||||
|
@ -1041,10 +1041,7 @@ bin_to_res_version (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type lengt
|
||||||
data += off;
|
data += off;
|
||||||
length -= off;
|
length -= off;
|
||||||
|
|
||||||
/* It's convenient to round verlen to a 4 byte alignment,
|
verlen -= off;
|
||||||
since we round the subvariables in the loop. */
|
|
||||||
|
|
||||||
verlen = (verlen + 3) &~ 3;
|
|
||||||
|
|
||||||
vi->u.string.stringtables = NULL;
|
vi->u.string.stringtables = NULL;
|
||||||
ppvst = &vi->u.string.stringtables;
|
ppvst = &vi->u.string.stringtables;
|
||||||
|
@ -1070,7 +1067,7 @@ bin_to_res_version (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type lengt
|
||||||
length -= off;
|
length -= off;
|
||||||
verlen -= off;
|
verlen -= off;
|
||||||
|
|
||||||
stverlen = (stverlen + 3) &~ 3;
|
stverlen -= off;
|
||||||
|
|
||||||
vst->strings = NULL;
|
vst->strings = NULL;
|
||||||
ppvs = &vst->strings;
|
ppvs = &vst->strings;
|
||||||
|
@ -1088,14 +1085,12 @@ bin_to_res_version (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type lengt
|
||||||
get_version_header (wrbfd, data, length, (const char *) NULL,
|
get_version_header (wrbfd, data, length, (const char *) NULL,
|
||||||
&vs->key, &sverlen, &vallen, &type, &off);
|
&vs->key, &sverlen, &vallen, &type, &off);
|
||||||
|
|
||||||
sverlen = (sverlen + 3) &~ 3;
|
|
||||||
|
|
||||||
data += off;
|
data += off;
|
||||||
length -= off;
|
length -= off;
|
||||||
|
|
||||||
vs->value = get_unicode (wrbfd, data, length, &vslen);
|
vs->value = get_unicode (wrbfd, data, length, &vslen);
|
||||||
valoff = vslen * 2 + 2;
|
valoff = vslen * 2 + 2;
|
||||||
valoff = (valoff + 3) &~ 3;
|
valoff = (valoff + 3) & ~3;
|
||||||
|
|
||||||
if (off + valoff != sverlen)
|
if (off + valoff != sverlen)
|
||||||
fatal (_("unexpected version string length %ld != %ld + %ld"),
|
fatal (_("unexpected version string length %ld != %ld + %ld"),
|
||||||
|
@ -1108,6 +1103,7 @@ bin_to_res_version (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type lengt
|
||||||
fatal (_("unexpected version string length %ld < %ld"),
|
fatal (_("unexpected version string length %ld < %ld"),
|
||||||
(long) verlen, (long) sverlen);
|
(long) verlen, (long) sverlen);
|
||||||
stverlen -= sverlen;
|
stverlen -= sverlen;
|
||||||
|
verlen -= sverlen;
|
||||||
|
|
||||||
vs->next = NULL;
|
vs->next = NULL;
|
||||||
*ppvs = vs;
|
*ppvs = vs;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue