* resres.c (probe_binary): Fix test for badly formatted headers.

This commit is contained in:
Nick Clifton 2007-06-18 16:02:45 +00:00
parent 31d99776c7
commit 03997556da
2 changed files with 15 additions and 6 deletions

View File

@ -1,3 +1,7 @@
2007-06-18 Thomas Weidenmueller <w3seek@reactos.org>
* resres.c (probe_binary): Fix test for badly formatted headers.
2007-06-18 Kai Tietz <Kai.Tietz@onevision.com>
* rclex.c: (cpp_line): Add code_page pragma support.

View File

@ -554,10 +554,12 @@ read_unistring (windres_bfd *wrbfd, rc_uint_type *off, rc_uint_type omax,
rc_uint_type l;
rc_uint_type soff = off[0];
do {
read_res_data (wrbfd, &soff, omax, d, sizeof (unichar));
c = windres_get_16 (wrbfd, d, 2);
} while (c != 0);
do
{
read_res_data (wrbfd, &soff, omax, d, sizeof (unichar));
c = windres_get_16 (wrbfd, d, 2);
}
while (c != 0);
l = ((soff - off[0]) / sizeof (unichar));
/* there are hardly any names longer than 256 characters, but anyway. */
@ -592,8 +594,11 @@ probe_binary (windres_bfd *wrbfd, rc_uint_type omax)
if ((off + BIN_RES_HDR_SIZE) >= omax)
return 1;
read_res_data_hdr (wrbfd, &off, omax, &reshdr);
if ((off + reshdr.data_size + reshdr.header_size) > omax)
return 0;
/* off is advanced by BIN_RES_HDR_SIZE in read_res_data_hdr()
which is part of reshdr.header_size. We shouldn't take it
into account twice. */
if ((off - BIN_RES_HDR_SIZE + reshdr.data_size + reshdr.header_size) > omax)
return 0;
return 1;
}