aboutsummaryrefslogtreecommitdiff
path: root/binutils
diff options
context:
space:
mode:
Diffstat (limited to 'binutils')
-rw-r--r--binutils/resbin.c193
-rw-r--r--binutils/rescoff.c32
-rw-r--r--binutils/resrc.c221
-rw-r--r--binutils/resres.c22
-rw-r--r--binutils/windint.h6
-rw-r--r--binutils/windres.c37
6 files changed, 259 insertions, 252 deletions
diff --git a/binutils/resbin.c b/binutils/resbin.c
index 98dd68b..3bce84f 100644
--- a/binutils/resbin.c
+++ b/binutils/resbin.c
@@ -136,7 +136,7 @@ get_unicode (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length,
toosmall (_("null terminated unicode string"));
return NULL;
}
- if (windres_get_16 (wrbfd, data + c * 2, 2) == 0)
+ if (windres_get_16 (wrbfd, data + c * 2) == 0)
break;
++c;
}
@@ -144,7 +144,7 @@ get_unicode (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length,
ret = res_alloc ((c + 1) * sizeof (unichar));
for (i = 0; i < c; i++)
- ret[i] = windres_get_16 (wrbfd, data + i * 2, 2);
+ ret[i] = windres_get_16 (wrbfd, data + i * 2);
ret[i] = 0;
if (retlen != NULL)
@@ -167,7 +167,7 @@ get_resid (windres_bfd *wrbfd, rc_res_id *id, const bfd_byte *data,
return -1;
}
- first = windres_get_16 (wrbfd, data, 2);
+ first = windres_get_16 (wrbfd, data);
if (first == 0xffff)
{
if (length < 4)
@@ -176,7 +176,7 @@ get_resid (windres_bfd *wrbfd, rc_res_id *id, const bfd_byte *data,
return -1;
}
id->named = 0;
- id->u.id = windres_get_16 (wrbfd, data + 2, 2);
+ id->u.id = windres_get_16 (wrbfd, data + 2);
return 4;
}
else
@@ -221,8 +221,8 @@ bin_to_res_cursor (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length
}
c = res_alloc (sizeof (rc_cursor));
- c->xhotspot = windres_get_16 (wrbfd, data, 2);
- c->yhotspot = windres_get_16 (wrbfd, data + 2, 2);
+ c->xhotspot = windres_get_16 (wrbfd, data);
+ c->yhotspot = windres_get_16 (wrbfd, data + 2);
c->length = length - 4;
c->data = data + 4;
@@ -254,7 +254,7 @@ bin_to_res_menu (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length)
return NULL;
}
- version = windres_get_16 (wrbfd, data, 2);
+ version = windres_get_16 (wrbfd, data);
if (version == 0)
{
@@ -277,8 +277,8 @@ bin_to_res_menu (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length)
toosmall (_("menuex header"));
return NULL;
}
- m->help = windres_get_32 (wrbfd, data + 4, 4);
- offset = windres_get_16 (wrbfd, data + 2, 2);
+ m->help = windres_get_32 (wrbfd, data + 4);
+ offset = windres_get_16 (wrbfd, data + 2);
if (offset + 4 >= length)
{
toosmall (_("menuex offset"));
@@ -327,7 +327,7 @@ bin_to_res_menuitems (windres_bfd *wrbfd, const bfd_byte *data,
mi->state = 0;
mi->help = 0;
- flags = windres_get_16 (wrbfd, data, 2);
+ flags = windres_get_16 (wrbfd, data);
mi->type = flags &~ (MENUITEM_POPUP | MENUITEM_ENDMENU);
if ((flags & MENUITEM_POPUP) == 0)
@@ -341,7 +341,7 @@ bin_to_res_menuitems (windres_bfd *wrbfd, const bfd_byte *data,
return NULL;
}
- if (windres_get_16 (wrbfd, data + stroff, 2) == 0)
+ if (windres_get_16 (wrbfd, data + stroff) == 0)
{
slen = 0;
mi->text = NULL;
@@ -358,7 +358,7 @@ bin_to_res_menuitems (windres_bfd *wrbfd, const bfd_byte *data,
if ((flags & MENUITEM_POPUP) == 0)
{
mi->popup = NULL;
- mi->id = windres_get_16 (wrbfd, data + 2, 2);
+ mi->id = windres_get_16 (wrbfd, data + 2);
}
else
{
@@ -413,13 +413,13 @@ bin_to_res_menuexitems (windres_bfd *wrbfd, const bfd_byte *data,
}
mi = res_alloc (sizeof (rc_menuitem));
- mi->type = windres_get_32 (wrbfd, data, 4);
- mi->state = windres_get_32 (wrbfd, data + 4, 4);
- mi->id = windres_get_32 (wrbfd, data + 8, 4);
+ mi->type = windres_get_32 (wrbfd, data);
+ mi->state = windres_get_32 (wrbfd, data + 4);
+ mi->id = windres_get_32 (wrbfd, data + 8);
- flags = windres_get_16 (wrbfd, data + 12, 2);
+ flags = windres_get_16 (wrbfd, data + 12);
- if (windres_get_16 (wrbfd, data + 14, 2) == 0)
+ if (windres_get_16 (wrbfd, data + 14) == 0)
{
slen = 0;
mi->text = NULL;
@@ -433,6 +433,11 @@ bin_to_res_menuexitems (windres_bfd *wrbfd, const bfd_byte *data,
itemlen = 14 + slen * 2 + 2;
itemlen = (itemlen + 3) &~ 3;
+ /* Don't allow rounding up of itemlen to exceed length. This
+ is an anti-fuzzer measure to cope with unexpected offsets and
+ lengths. */
+ if (itemlen > length)
+ itemlen = length;
if ((flags & 1) == 0)
{
@@ -448,7 +453,7 @@ bin_to_res_menuexitems (windres_bfd *wrbfd, const bfd_byte *data,
toosmall (_("menuitem"));
return NULL;
}
- mi->help = windres_get_32 (wrbfd, data + itemlen, 4);
+ mi->help = windres_get_32 (wrbfd, data + itemlen);
itemlen += 4;
mi->popup = bin_to_res_menuexitems (wrbfd, data + itemlen,
@@ -494,19 +499,19 @@ bin_to_res_dialog (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length
d = res_alloc (sizeof (rc_dialog));
- signature = windres_get_16 (wrbfd, data + 2, 2);
+ signature = windres_get_16 (wrbfd, data + 2);
if (signature != 0xffff)
{
d->ex = NULL;
- d->style = windres_get_32 (wrbfd, data, 4);
- d->exstyle = windres_get_32 (wrbfd, data + 4, 4);
+ d->style = windres_get_32 (wrbfd, data);
+ d->exstyle = windres_get_32 (wrbfd, data + 4);
off = 8;
}
else
{
int version;
- version = windres_get_16 (wrbfd, data, 2);
+ version = windres_get_16 (wrbfd, data);
if (version != 1)
{
non_fatal (_("unexpected DIALOGEX version %d"), version);
@@ -514,9 +519,9 @@ bin_to_res_dialog (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length
}
d->ex = res_alloc (sizeof (rc_dialog_ex));
- d->ex->help = windres_get_32 (wrbfd, data + 4, 4);
- d->exstyle = windres_get_32 (wrbfd, data + 8, 4);
- d->style = windres_get_32 (wrbfd, data + 12, 4);
+ d->ex->help = windres_get_32 (wrbfd, data + 4);
+ d->exstyle = windres_get_32 (wrbfd, data + 8);
+ d->style = windres_get_32 (wrbfd, data + 12);
off = 16;
}
@@ -526,11 +531,11 @@ bin_to_res_dialog (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length
return NULL;
}
- c = windres_get_16 (wrbfd, data + off, 2);
- d->x = windres_get_16 (wrbfd, data + off + 2, 2);
- d->y = windres_get_16 (wrbfd, data + off + 4, 2);
- d->width = windres_get_16 (wrbfd, data + off + 6, 2);
- d->height = windres_get_16 (wrbfd, data + off + 8, 2);
+ c = windres_get_16 (wrbfd, data + off);
+ d->x = windres_get_16 (wrbfd, data + off + 2);
+ d->y = windres_get_16 (wrbfd, data + off + 4);
+ d->width = windres_get_16 (wrbfd, data + off + 6);
+ d->height = windres_get_16 (wrbfd, data + off + 8);
off += 10;
@@ -570,7 +575,7 @@ bin_to_res_dialog (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length
return NULL;
}
- d->pointsize = windres_get_16 (wrbfd, data + off, 2);
+ d->pointsize = windres_get_16 (wrbfd, data + off);
off += 2;
if (d->ex != NULL)
@@ -580,9 +585,9 @@ bin_to_res_dialog (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length
toosmall (_("dialogex font information"));
return NULL;
}
- d->ex->weight = windres_get_16 (wrbfd, data + off, 2);
- d->ex->italic = windres_get_8 (wrbfd, data + off + 2, 1);
- d->ex->charset = windres_get_8 (wrbfd, data + off + 3, 1);
+ d->ex->weight = windres_get_16 (wrbfd, data + off);
+ d->ex->italic = windres_get_8 (wrbfd, data + off + 2);
+ d->ex->charset = windres_get_8 (wrbfd, data + off + 3);
off += 4;
}
@@ -612,8 +617,8 @@ bin_to_res_dialog (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length
return NULL;
}
- dc->style = windres_get_32 (wrbfd, data + off, 4);
- dc->exstyle = windres_get_32 (wrbfd, data + off + 4, 4);
+ dc->style = windres_get_32 (wrbfd, data + off);
+ dc->exstyle = windres_get_32 (wrbfd, data + off + 4);
dc->help = 0;
off += 8;
}
@@ -624,9 +629,9 @@ bin_to_res_dialog (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length
toosmall (_("dialogex control"));
return NULL;
}
- dc->help = windres_get_32 (wrbfd, data + off, 4);
- dc->exstyle = windres_get_32 (wrbfd, data + off + 4, 4);
- dc->style = windres_get_32 (wrbfd, data + off + 8, 4);
+ dc->help = windres_get_32 (wrbfd, data + off);
+ dc->exstyle = windres_get_32 (wrbfd, data + off + 4);
+ dc->style = windres_get_32 (wrbfd, data + off + 8);
off += 12;
}
@@ -636,15 +641,15 @@ bin_to_res_dialog (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length
return NULL;
}
- dc->x = windres_get_16 (wrbfd, data + off, 2);
- dc->y = windres_get_16 (wrbfd, data + off + 2, 2);
- dc->width = windres_get_16 (wrbfd, data + off + 4, 2);
- dc->height = windres_get_16 (wrbfd, data + off + 6, 2);
+ dc->x = windres_get_16 (wrbfd, data + off);
+ dc->y = windres_get_16 (wrbfd, data + off + 2);
+ dc->width = windres_get_16 (wrbfd, data + off + 4);
+ dc->height = windres_get_16 (wrbfd, data + off + 6);
if (d->ex != NULL)
- dc->id = windres_get_32 (wrbfd, data + off + 8, 4);
+ dc->id = windres_get_32 (wrbfd, data + off + 8);
else
- dc->id = windres_get_16 (wrbfd, data + off + 8, 2);
+ dc->id = windres_get_16 (wrbfd, data + off + 8);
off += 10 + (d->ex != NULL ? 2 : 0);
@@ -664,7 +669,7 @@ bin_to_res_dialog (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length
return NULL;
}
- datalen = windres_get_16 (wrbfd, data + off, 2);
+ datalen = windres_get_16 (wrbfd, data + off);
off += 2;
if (datalen == 0)
@@ -718,7 +723,7 @@ bin_to_res_string (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length
toosmall (_("stringtable string length"));
return NULL;
}
- slen = windres_get_16 (wrbfd, data, 2);
+ slen = windres_get_16 (wrbfd, data);
st->strings[i].length = slen;
if (slen > 0)
@@ -736,7 +741,7 @@ bin_to_res_string (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length
st->strings[i].string = s;
for (j = 0; j < slen; j++)
- s[j] = windres_get_16 (wrbfd, data + 2 + j * 2, 2);
+ s[j] = windres_get_16 (wrbfd, data + 2 + j * 2);
}
data += 2 + 2 * slen;
@@ -766,7 +771,7 @@ bin_to_res_fontdir (windres_bfd *wrbfd, const bfd_byte *data,
return NULL;
}
- c = windres_get_16 (wrbfd, data, 2);
+ c = windres_get_16 (wrbfd, data);
first = NULL;
pp = &first;
@@ -785,7 +790,7 @@ bin_to_res_fontdir (windres_bfd *wrbfd, const bfd_byte *data,
bfi = (const struct bin_fontdir_item *) data;
fd = res_alloc (sizeof *fd);
- fd->index = windres_get_16 (wrbfd, bfi->index, 2);
+ fd->index = windres_get_16 (wrbfd, bfi->index);
/* To work out the length of the fontdir data, we must get the
length of the device name and face name strings, even though
@@ -858,9 +863,9 @@ bin_to_res_accelerators (windres_bfd *wrbfd, const bfd_byte *data,
a = res_alloc (sizeof (rc_accelerator));
- a->flags = windres_get_16 (wrbfd, data, 2);
- a->key = windres_get_16 (wrbfd, data + 2, 2);
- a->id = windres_get_16 (wrbfd, data + 4, 2);
+ a->flags = windres_get_16 (wrbfd, data);
+ a->key = windres_get_16 (wrbfd, data + 2);
+ a->id = windres_get_16 (wrbfd, data + 4);
a->next = NULL;
*pp = a;
@@ -919,14 +924,14 @@ bin_to_res_group_cursor (windres_bfd *wrbfd, const bfd_byte *data,
return NULL;
}
- type = windres_get_16 (wrbfd, data + 2, 2);
+ type = windres_get_16 (wrbfd, data + 2);
if (type != 2)
{
non_fatal (_("unexpected group cursor type %d"), type);
return NULL;
}
- c = windres_get_16 (wrbfd, data + 4, 2);
+ c = windres_get_16 (wrbfd, data + 4);
data += 6;
length -= 6;
@@ -946,12 +951,12 @@ bin_to_res_group_cursor (windres_bfd *wrbfd, const bfd_byte *data,
gc = res_alloc (sizeof *gc);
- gc->width = windres_get_16 (wrbfd, data, 2);
- gc->height = windres_get_16 (wrbfd, data + 2, 2);
- gc->planes = windres_get_16 (wrbfd, data + 4, 2);
- gc->bits = windres_get_16 (wrbfd, data + 6, 2);
- gc->bytes = windres_get_32 (wrbfd, data + 8, 4);
- gc->index = windres_get_16 (wrbfd, data + 12, 2);
+ gc->width = windres_get_16 (wrbfd, data);
+ gc->height = windres_get_16 (wrbfd, data + 2);
+ gc->planes = windres_get_16 (wrbfd, data + 4);
+ gc->bits = windres_get_16 (wrbfd, data + 6);
+ gc->bytes = windres_get_32 (wrbfd, data + 8);
+ gc->index = windres_get_16 (wrbfd, data + 12);
gc->next = NULL;
*pp = gc;
@@ -984,14 +989,14 @@ bin_to_res_group_icon (windres_bfd *wrbfd, const bfd_byte *data,
return NULL;
}
- type = windres_get_16 (wrbfd, data + 2, 2);
+ type = windres_get_16 (wrbfd, data + 2);
if (type != 1)
{
non_fatal (_("unexpected group icon type %d"), type);
return NULL;
}
- c = windres_get_16 (wrbfd, data + 4, 2);
+ c = windres_get_16 (wrbfd, data + 4);
data += 6;
length -= 6;
@@ -1011,13 +1016,13 @@ bin_to_res_group_icon (windres_bfd *wrbfd, const bfd_byte *data,
gi = res_alloc (sizeof (rc_group_icon));
- gi->width = windres_get_8 (wrbfd, data, 1);
- gi->height = windres_get_8 (wrbfd, data + 1, 1);
- gi->colors = windres_get_8 (wrbfd, data + 2, 1);
- gi->planes = windres_get_16 (wrbfd, data + 4, 2);
- gi->bits = windres_get_16 (wrbfd, data + 6, 2);
- gi->bytes = windres_get_32 (wrbfd, data + 8, 4);
- gi->index = windres_get_16 (wrbfd, data + 12, 2);
+ gi->width = windres_get_8 (wrbfd, data);
+ gi->height = windres_get_8 (wrbfd, data + 1);
+ gi->colors = windres_get_8 (wrbfd, data + 2);
+ gi->planes = windres_get_16 (wrbfd, data + 4);
+ gi->bits = windres_get_16 (wrbfd, data + 6);
+ gi->bytes = windres_get_32 (wrbfd, data + 8);
+ gi->index = windres_get_16 (wrbfd, data + 12);
gi->next = NULL;
*pp = gi;
@@ -1051,9 +1056,9 @@ get_version_header (windres_bfd *wrbfd, const bfd_byte *data,
return false;
}
- *len = (windres_get_16 (wrbfd, data, 2) + 3) & ~3;
- *vallen = windres_get_16 (wrbfd, data + 2, 2);
- *type = windres_get_16 (wrbfd, data + 4, 2);
+ *len = (windres_get_16 (wrbfd, data) + 3) & ~3;
+ *vallen = windres_get_16 (wrbfd, data + 2);
+ *type = windres_get_16 (wrbfd, data + 4);
*off = 6;
@@ -1078,7 +1083,7 @@ get_version_header (windres_bfd *wrbfd, const bfd_byte *data,
toosmall (key);
return false;
}
- if (windres_get_16 (wrbfd, data, 2) != (bfd_byte) *key)
+ if (windres_get_16 (wrbfd, data) != (bfd_byte) *key)
{
non_fatal (_("unexpected version string"));
return false;
@@ -1155,14 +1160,14 @@ bin_to_res_version (windres_bfd *wrbfd, const bfd_byte *data,
return NULL;
}
- signature = windres_get_32 (wrbfd, data, 4);
+ signature = windres_get_32 (wrbfd, data);
if (signature != 0xfeef04bd)
{
non_fatal (_("unexpected fixed version signature %lu"), signature);
return NULL;
}
- fiv = windres_get_32 (wrbfd, data + 4, 4);
+ fiv = windres_get_32 (wrbfd, data + 4);
if (fiv != 0 && fiv != 0x10000)
{
non_fatal (_("unexpected fixed version info version %lu"), fiv);
@@ -1171,17 +1176,17 @@ bin_to_res_version (windres_bfd *wrbfd, const bfd_byte *data,
fi = res_alloc (sizeof (rc_fixed_versioninfo));
- fi->file_version_ms = windres_get_32 (wrbfd, data + 8, 4);
- fi->file_version_ls = windres_get_32 (wrbfd, data + 12, 4);
- fi->product_version_ms = windres_get_32 (wrbfd, data + 16, 4);
- fi->product_version_ls = windres_get_32 (wrbfd, data + 20, 4);
- fi->file_flags_mask = windres_get_32 (wrbfd, data + 24, 4);
- fi->file_flags = windres_get_32 (wrbfd, data + 28, 4);
- fi->file_os = windres_get_32 (wrbfd, data + 32, 4);
- fi->file_type = windres_get_32 (wrbfd, data + 36, 4);
- fi->file_subtype = windres_get_32 (wrbfd, data + 40, 4);
- fi->file_date_ms = windres_get_32 (wrbfd, data + 44, 4);
- fi->file_date_ls = windres_get_32 (wrbfd, data + 48, 4);
+ fi->file_version_ms = windres_get_32 (wrbfd, data + 8);
+ fi->file_version_ls = windres_get_32 (wrbfd, data + 12);
+ fi->product_version_ms = windres_get_32 (wrbfd, data + 16);
+ fi->product_version_ls = windres_get_32 (wrbfd, data + 20);
+ fi->file_flags_mask = windres_get_32 (wrbfd, data + 24);
+ fi->file_flags = windres_get_32 (wrbfd, data + 28);
+ fi->file_os = windres_get_32 (wrbfd, data + 32);
+ fi->file_type = windres_get_32 (wrbfd, data + 36);
+ fi->file_subtype = windres_get_32 (wrbfd, data + 40);
+ fi->file_date_ms = windres_get_32 (wrbfd, data + 44);
+ fi->file_date_ls = windres_get_32 (wrbfd, data + 48);
data += 52;
length -= 52;
@@ -1203,7 +1208,7 @@ bin_to_res_version (windres_bfd *wrbfd, const bfd_byte *data,
vi = res_alloc (sizeof (rc_ver_info));
- ch = windres_get_16 (wrbfd, data + 6, 2);
+ ch = windres_get_16 (wrbfd, data + 6);
if (ch == 'S')
{
@@ -1366,8 +1371,8 @@ bin_to_res_version (windres_bfd *wrbfd, const bfd_byte *data,
vv = res_alloc (sizeof (rc_ver_varinfo));
- vv->language = windres_get_16 (wrbfd, data, 2);
- vv->charset = windres_get_16 (wrbfd, data + 2, 2);
+ vv->language = windres_get_16 (wrbfd, data);
+ vv->charset = windres_get_16 (wrbfd, data + 2);
vv->next = NULL;
*ppvv = vv;
@@ -1453,9 +1458,9 @@ bin_to_res_toolbar (windres_bfd *wrbfd, const bfd_byte *data,
return NULL;
}
ri = res_alloc (sizeof (rc_toolbar));
- ri->button_width = windres_get_32 (wrbfd, data, 4);
- ri->button_height = windres_get_32 (wrbfd, data + 4, 4);
- ri->nitems = windres_get_32 (wrbfd, data + 8, 4);
+ ri->button_width = windres_get_32 (wrbfd, data);
+ ri->button_height = windres_get_32 (wrbfd, data + 4);
+ ri->nitems = windres_get_32 (wrbfd, data + 8);
ri->items = NULL;
data += 12;
@@ -1470,7 +1475,7 @@ bin_to_res_toolbar (windres_bfd *wrbfd, const bfd_byte *data,
toosmall (_("toolbar item"));
return NULL;
}
- it->id.u.id = (int) windres_get_32 (wrbfd, data, 4);
+ it->id.u.id = (int) windres_get_32 (wrbfd, data);
it->prev = it->next = NULL;
data += 4;
length -= 4;
diff --git a/binutils/rescoff.c b/binutils/rescoff.c
index 6031602..14546a4 100644
--- a/binutils/rescoff.c
+++ b/binutils/rescoff.c
@@ -232,14 +232,14 @@ read_coff_res_dir (windres_bfd *wrbfd, const bfd_byte *data,
erd = (const struct extern_res_directory *) data;
rd = (rc_res_directory *) res_alloc (sizeof (rc_res_directory));
- rd->characteristics = windres_get_32 (wrbfd, erd->characteristics, 4);
- rd->time = windres_get_32 (wrbfd, erd->time, 4);
- rd->major = windres_get_16 (wrbfd, erd->major, 2);
- rd->minor = windres_get_16 (wrbfd, erd->minor, 2);
+ rd->characteristics = windres_get_32 (wrbfd, erd->characteristics);
+ rd->time = windres_get_32 (wrbfd, erd->time);
+ rd->major = windres_get_16 (wrbfd, erd->major);
+ rd->minor = windres_get_16 (wrbfd, erd->minor);
rd->entries = NULL;
- name_count = windres_get_16 (wrbfd, erd->name_count, 2);
- id_count = windres_get_16 (wrbfd, erd->id_count, 2);
+ name_count = windres_get_16 (wrbfd, erd->name_count);
+ id_count = windres_get_16 (wrbfd, erd->id_count);
pp = &rd->entries;
@@ -261,8 +261,8 @@ read_coff_res_dir (windres_bfd *wrbfd, const bfd_byte *data,
return NULL;
}
- name = windres_get_32 (wrbfd, ere->name, 4);
- rva = windres_get_32 (wrbfd, ere->rva, 4);
+ name = windres_get_32 (wrbfd, ere->name);
+ rva = windres_get_32 (wrbfd, ere->rva);
/* For some reason the high bit in NAME is set. */
name &=~ 0x80000000;
@@ -279,7 +279,7 @@ read_coff_res_dir (windres_bfd *wrbfd, const bfd_byte *data,
overrun (flaginfo, _("resource name"));
return NULL;
}
- length = windres_get_16 (wrbfd, ers, 2);
+ length = windres_get_16 (wrbfd, ers);
/* PR 17512: file: 05dc4a16. */
if (length * 2 + 4 > flaginfo->data_end - ers)
{
@@ -292,7 +292,7 @@ read_coff_res_dir (windres_bfd *wrbfd, const bfd_byte *data,
re->id.u.n.length = length;
re->id.u.n.name = (unichar *) res_alloc (length * sizeof (unichar));
for (j = 0; j < length; j++)
- re->id.u.n.name[j] = windres_get_16 (wrbfd, ers + j * 2 + 2, 2);
+ re->id.u.n.name[j] = windres_get_16 (wrbfd, ers + j * 2 + 2);
if (level == 0)
type = &re->id;
@@ -337,8 +337,8 @@ read_coff_res_dir (windres_bfd *wrbfd, const bfd_byte *data,
return NULL;
}
- name = windres_get_32 (wrbfd, ere->name, 4);
- rva = windres_get_32 (wrbfd, ere->rva, 4);
+ name = windres_get_32 (wrbfd, ere->name);
+ rva = windres_get_32 (wrbfd, ere->rva);
re = (rc_res_entry *) res_alloc (sizeof *re);
re->next = NULL;
@@ -405,8 +405,8 @@ read_coff_data_entry (windres_bfd *wrbfd, const bfd_byte *data,
erd = (const struct extern_res_data *) data;
- size = windres_get_32 (wrbfd, erd->size, 4);
- rva = windres_get_32 (wrbfd, erd->rva, 4);
+ size = windres_get_32 (wrbfd, erd->size);
+ rva = windres_get_32 (wrbfd, erd->rva);
if (rva < flaginfo->secaddr
|| rva - flaginfo->secaddr >= (rc_uint_type) (flaginfo->data_end - flaginfo->data))
{
@@ -426,8 +426,8 @@ read_coff_data_entry (windres_bfd *wrbfd, const bfd_byte *data,
if (r != NULL)
{
memset (&r->res_info, 0, sizeof (rc_res_res_info));
- r->coff_info.codepage = windres_get_32 (wrbfd, erd->codepage, 4);
- r->coff_info.reserved = windres_get_32 (wrbfd, erd->reserved, 4);
+ r->coff_info.codepage = windres_get_32 (wrbfd, erd->codepage);
+ r->coff_info.reserved = windres_get_32 (wrbfd, erd->reserved);
}
return r;
diff --git a/binutils/resrc.c b/binutils/resrc.c
index 8f9451b..4ab830f 100644
--- a/binutils/resrc.c
+++ b/binutils/resrc.c
@@ -299,7 +299,7 @@ run_cmd (char *cmd, const char *redir)
if (WEXITSTATUS (wait_status) != 0)
{
fatal (_("%s exited with status %d"), cmd,
- WEXITSTATUS (wait_status));
+ WEXITSTATUS (wait_status));
retcode = 1;
}
}
@@ -331,7 +331,7 @@ open_input_stream (char *cmd)
if (verbose)
fprintf (stderr,
- _("Using temporary file `%s' to read preprocessor output\n"),
+ _("Using temporary file `%s' to read preprocessor output\n"),
cpp_temp_file);
}
else
@@ -359,15 +359,15 @@ filename_need_quotes (const char *filename)
while (*filename != 0)
{
switch (*filename)
- {
- case '&':
- case ' ':
- case '<':
- case '>':
- case '|':
- case '%':
- return 1;
- }
+ {
+ case '&':
+ case ' ':
+ case '<':
+ case '>':
+ case '|':
+ case '%':
+ return 1;
+ }
++filename;
}
return 0;
@@ -529,7 +529,7 @@ read_rc_file (const char *filename, const char *preprocessor,
if (slash && ! cpp_pipe)
{
/* Next, try looking for a gcc in the same directory as
- that windres */
+ that windres */
cpp_pipe = look_for_default (cmd, program_name, slash - program_name + 1,
preprocargs, filename);
@@ -586,11 +586,11 @@ close_input_stream (void)
else
{
if (cpp_pipe != NULL)
- {
+ {
int err;
err = pclose (cpp_pipe);
/* We are reading from a pipe, therefore we don't
- know if cpp failed or succeeded until pclose. */
+ know if cpp failed or succeeded until pclose. */
if (err != 0 || errno == ECHILD)
{
/* Since this is also run via xatexit, safeguard. */
@@ -598,7 +598,7 @@ close_input_stream (void)
cpp_temp_file = NULL;
fatal (_("preprocessing failed."));
}
- }
+ }
}
/* Since this is also run via xatexit, safeguard. */
@@ -679,6 +679,22 @@ get_data (FILE *e, bfd_byte *p, rc_uint_type c, const char *msg)
fatal (_("%s: read of %lu returned %lu"),
msg, (unsigned long) c, (unsigned long) got);
}
+
+static rc_uint_type
+target_get_16 (const void *p, size_t len)
+{
+ if (len < 2)
+ fatal (_("not enough data"));
+ return windres_get_16 (&wrtarget, p);
+}
+
+static rc_uint_type
+target_get_32 (const void *p, size_t len)
+{
+ if (len < 4)
+ fatal (_("not enough data"));
+ return windres_get_32 (&wrtarget, p);
+}
/* Define an accelerator resource. */
@@ -1094,7 +1110,7 @@ define_fontdir_rcdata (rc_res_id id,const rc_res_res_info *resinfo,
if (pb_data)
{
rc_uint_type off = 2;
- c = windres_get_16 (&wrtarget, pb_data, len_data);
+ c = target_get_16 (pb_data, len_data);
for (; c > 0; c--)
{
size_t len;
@@ -1103,7 +1119,7 @@ define_fontdir_rcdata (rc_res_id id,const rc_res_res_info *resinfo,
bfi = (const struct bin_fontdir_item *) pb_data + off;
fd = (rc_fontdir *) res_alloc (sizeof (rc_fontdir));
- fd->index = windres_get_16 (&wrtarget, bfi->index, len_data - off);
+ fd->index = target_get_16 (bfi->index, len_data - off);
fd->data = pb_data + off;
off += 56;
len = strlen ((char *) bfi->device_name) + 1;
@@ -1230,8 +1246,8 @@ define_icon (rc_res_id id, const rc_res_res_info *resinfo,
rc_group_icon *cg;
/* For some reason, at least in some files the planes and bits
- are zero. We instead set them from the color. This is
- copied from rcl. */
+ are zero. We instead set them from the color. This is
+ copied from rcl. */
cg = (rc_group_icon *) res_alloc (sizeof (rc_group_icon));
cg->next = NULL;
@@ -1288,10 +1304,10 @@ define_group_icon_rcdata (rc_res_id id, const rc_res_res_info *resinfo,
{
int c, i;
unsigned short type;
- type = windres_get_16 (&wrtarget, pb_data + 2, len_data - 2);
+ type = target_get_16 (pb_data + 2, len_data - 2);
if (type != 1)
fatal (_("unexpected group icon type %d"), type);
- c = windres_get_16 (&wrtarget, pb_data + 4, len_data - 4);
+ c = target_get_16 (pb_data + 4, len_data - 4);
len_data -= 6;
pb_data += 6;
@@ -1304,10 +1320,10 @@ define_group_icon_rcdata (rc_res_id id, const rc_res_res_info *resinfo,
cg->width = pb_data[0];
cg->height = pb_data[1];
cg->colors = pb_data[2];
- cg->planes = windres_get_16 (&wrtarget, pb_data + 4, len_data - 4);
- cg->bits = windres_get_16 (&wrtarget, pb_data + 6, len_data - 6);
- cg->bytes = windres_get_32 (&wrtarget, pb_data + 8, len_data - 8);
- cg->index = windres_get_16 (&wrtarget, pb_data + 12, len_data - 12);
+ cg->planes = target_get_16 (pb_data + 4, len_data - 4);
+ cg->bits = target_get_16 (pb_data + 6, len_data - 6);
+ cg->bytes = target_get_32 (pb_data + 8, len_data - 8);
+ cg->index = target_get_16 (pb_data + 12, len_data - 12);
if (! first)
first = cg;
else
@@ -1341,10 +1357,10 @@ define_group_cursor_rcdata (rc_res_id id, const rc_res_res_info *resinfo,
{
int c, i;
unsigned short type;
- type = windres_get_16 (&wrtarget, pb_data + 2, len_data - 2);
+ type = target_get_16 (pb_data + 2, len_data - 2);
if (type != 2)
fatal (_("unexpected group cursor type %d"), type);
- c = windres_get_16 (&wrtarget, pb_data + 4, len_data - 4);
+ c = target_get_16 (pb_data + 4, len_data - 4);
len_data -= 6;
pb_data += 6;
@@ -1354,12 +1370,12 @@ define_group_cursor_rcdata (rc_res_id id, const rc_res_res_info *resinfo,
fatal ("too small group icon rcdata");
cg = (rc_group_cursor *) res_alloc (sizeof (rc_group_cursor));
cg->next = NULL;
- cg->width = windres_get_16 (&wrtarget, pb_data, len_data);
- cg->height = windres_get_16 (&wrtarget, pb_data + 2, len_data - 2);
- cg->planes = windres_get_16 (&wrtarget, pb_data + 4, len_data - 4);
- cg->bits = windres_get_16 (&wrtarget, pb_data + 6, len_data - 6);
- cg->bytes = windres_get_32 (&wrtarget, pb_data + 8, len_data - 8);
- cg->index = windres_get_16 (&wrtarget, pb_data + 12, len_data - 12);
+ cg->width = target_get_16 (pb_data, len_data);
+ cg->height = target_get_16 (pb_data + 2, len_data - 2);
+ cg->planes = target_get_16 (pb_data + 4, len_data - 4);
+ cg->bits = target_get_16 (pb_data + 6, len_data - 6);
+ cg->bytes = target_get_32 (pb_data + 8, len_data - 8);
+ cg->index = target_get_16 (pb_data + 12, len_data - 12);
if (! first)
first = cg;
else
@@ -1389,8 +1405,8 @@ define_cursor_rcdata (rc_res_id id, const rc_res_res_info *resinfo,
pb_data = rcdata_render_as_buffer (data, &len_data);
c = (rc_cursor *) res_alloc (sizeof (rc_cursor));
- c->xhotspot = windres_get_16 (&wrtarget, pb_data, len_data);
- c->yhotspot = windres_get_16 (&wrtarget, pb_data + 2, len_data - 2);
+ c->xhotspot = target_get_16 (pb_data, len_data);
+ c->yhotspot = target_get_16 (pb_data + 2, len_data - 2);
c->length = len_data - BIN_CURSOR_SIZE;
c->data = (const bfd_byte *) (data + BIN_CURSOR_SIZE);
@@ -1994,9 +2010,9 @@ write_rc_directory (FILE *e, const rc_res_directory *rd,
{
case 1:
/* If we're at level 1, the key of this resource is the
- type. This normally duplicates the information we have
- stored with the resource itself, but we need to remember
- the type if this is a user define resource type. */
+ type. This normally duplicates the information we have
+ stored with the resource itself, but we need to remember
+ the type if this is a user define resource type. */
type = &re->id;
break;
@@ -2031,10 +2047,10 @@ write_rc_directory (FILE *e, const rc_res_directory *rd,
if (level == 3)
{
/* This is the normal case: the three levels are
- TYPE/NAME/LANGUAGE. NAME will have been set at level
- 2, and represents the name to use. We probably just
- set LANGUAGE, and it will probably match what the
- resource itself records if anything. */
+ TYPE/NAME/LANGUAGE. NAME will have been set at level
+ 2, and represents the name to use. We probably just
+ set LANGUAGE, and it will probably match what the
+ resource itself records if anything. */
write_rc_resource (e, type, name, re->u.res, language);
}
else
@@ -2493,7 +2509,7 @@ write_rc_cursor (FILE *e, const rc_cursor *cursor)
(unsigned int) cursor->xhotspot, (unsigned int) cursor->yhotspot,
(int) cursor->xhotspot, (int) cursor->yhotspot);
write_rc_datablock (e, (rc_uint_type) cursor->length, (const bfd_byte *) cursor->data,
- 0, 0, 0);
+ 0, 0, 0);
fprintf (e, "END\n");
}
@@ -2654,10 +2670,10 @@ write_rc_dialog_control (FILE *e, const rc_dialog_control *control)
/* For EDITTEXT, COMBOBOX, LISTBOX, and SCROLLBAR don't dump text. */
if ((control->text.named || control->text.u.id != 0)
&& (!ci
- || (ci->class != CTL_EDIT
- && ci->class != CTL_COMBOBOX
- && ci->class != CTL_LISTBOX
- && ci->class != CTL_SCROLLBAR)))
+ || (ci->class != CTL_EDIT
+ && ci->class != CTL_COMBOBOX
+ && ci->class != CTL_LISTBOX
+ && ci->class != CTL_SCROLLBAR)))
{
fprintf (e, " ");
res_id_print (e, control->text, 1);
@@ -2906,8 +2922,8 @@ test_rc_datablock_text (rc_uint_type length, const bfd_byte *data)
for (i = 0, c = 0; i < length; i++)
{
if (! ISPRINT (data[i]) && data[i] != '\n'
- && ! (data[i] == '\r' && (i + 1) < length && data[i + 1] == '\n')
- && data[i] != '\t'
+ && ! (data[i] == '\r' && (i + 1) < length && data[i + 1] == '\n')
+ && data[i] != '\t'
&& ! (data[i] == 0 && (i + 1) != length))
{
if (data[i] <= 7)
@@ -2944,7 +2960,7 @@ write_rc_messagetable (FILE *e, rc_uint_type length, const bfd_byte *data)
rc_uint_type m, i;
mt = (const struct bin_messagetable *) data;
- m = windres_get_32 (&wrtarget, mt->cblocks, length);
+ m = target_get_32 (mt->cblocks, length);
if (length < (BIN_MESSAGETABLE_SIZE + m * BIN_MESSAGETABLE_BLOCK_SIZE))
{
@@ -2956,9 +2972,9 @@ write_rc_messagetable (FILE *e, rc_uint_type length, const bfd_byte *data)
rc_uint_type low, high, offset;
const struct bin_messagetable_item *mti;
- low = windres_get_32 (&wrtarget, mt->items[i].lowid, 4);
- high = windres_get_32 (&wrtarget, mt->items[i].highid, 4);
- offset = windres_get_32 (&wrtarget, mt->items[i].offset, 4);
+ low = windres_get_32 (&wrtarget, mt->items[i].lowid);
+ high = windres_get_32 (&wrtarget, mt->items[i].highid);
+ offset = windres_get_32 (&wrtarget, mt->items[i].offset);
while (low <= high)
{
@@ -2969,8 +2985,8 @@ write_rc_messagetable (FILE *e, rc_uint_type length, const bfd_byte *data)
break;
}
mti = (const struct bin_messagetable_item *) &data[offset];
- elen = windres_get_16 (&wrtarget, mti->length, 2);
- flags = windres_get_16 (&wrtarget, mti->flags, 2);
+ elen = windres_get_16 (&wrtarget, mti->length);
+ flags = windres_get_16 (&wrtarget, mti->flags);
if ((offset + elen) > length)
{
has_error = 1;
@@ -3008,8 +3024,8 @@ write_rc_messagetable (FILE *e, rc_uint_type length, const bfd_byte *data)
}
static void
-write_rc_datablock (FILE *e, rc_uint_type length, const bfd_byte *data, int has_next,
- int hasblock, int show_comment)
+write_rc_datablock (FILE *e, rc_uint_type length, const bfd_byte *data,
+ int has_next, int hasblock, int show_comment)
{
int plen;
@@ -3031,23 +3047,23 @@ write_rc_datablock (FILE *e, rc_uint_type length, const bfd_byte *data, int has_
if (i < length && data[i] == '\n')
++i, ++c;
ascii_print(e, (const char *) &data[i - c], c);
- fprintf (e, "\"");
+ fprintf (e, "\"");
if (i < length)
fprintf (e, "\n");
}
if (i == 0)
- {
+ {
indent (e, 2);
fprintf (e, "\"\"");
- }
+ }
if (has_next)
fprintf (e, ",");
fprintf (e, "\n");
if (hasblock)
fprintf (e, "END\n");
return;
- }
+ }
if (test_rc_datablock_unicode (length, data))
{
rc_uint_type i, c;
@@ -3057,20 +3073,20 @@ write_rc_datablock (FILE *e, rc_uint_type length, const bfd_byte *data, int has_
u = (const unichar *) &data[i];
indent (e, 2);
- fprintf (e, "L\"");
+ fprintf (e, "L\"");
for (c = 0; i < length && c < 160 && u[c] != '\n'; c++, i += 2)
;
if (i < length && u[c] == '\n')
i += 2, ++c;
unicode_print (e, u, c);
- fprintf (e, "\"");
+ fprintf (e, "\"");
if (i < length)
fprintf (e, "\n");
}
if (i == 0)
- {
+ {
indent (e, 2);
fprintf (e, "L\"\"");
}
@@ -3086,14 +3102,14 @@ write_rc_datablock (FILE *e, rc_uint_type length, const bfd_byte *data, int has_
}
if (length != 0)
- {
+ {
rc_uint_type i, max_row;
int first = 1;
max_row = (show_comment ? 4 : 8);
indent (e, 2);
for (i = 0; i + 3 < length;)
- {
+ {
rc_uint_type k;
rc_uint_type comment_start;
@@ -3103,65 +3119,68 @@ write_rc_datablock (FILE *e, rc_uint_type length, const bfd_byte *data, int has_
indent (e, 2);
for (k = 0; k < max_row && i + 3 < length; k++, i += 4)
- {
+ {
if (k == 0)
- plen = fprintf (e, "0x%lxL",
- (unsigned long) windres_get_32 (&wrtarget, data + i, length - i));
- else
+ plen = fprintf (e, "0x%lxL",
+ (unsigned long) target_get_32 (data + i,
+ length - i));
+ else
plen = fprintf (e, " 0x%lxL",
- (unsigned long) windres_get_32 (&wrtarget, data + i, length - i)) - 1;
+ (unsigned long) target_get_32 (data + i,
+ length - i)) - 1;
if (has_next || (i + 4) < length)
- {
+ {
if (plen>0 && plen < 11)
indent (e, 11 - plen);
fprintf (e, ",");
- }
- }
+ }
+ }
if (show_comment)
{
fprintf (e, "\t/* ");
- ascii_print (e, (const char *) &data[comment_start], i - comment_start);
+ ascii_print (e, (const char *) &data[comment_start],
+ i - comment_start);
fprintf (e, ". */");
- }
- fprintf (e, "\n");
- first = 0;
- }
+ }
+ fprintf (e, "\n");
+ first = 0;
+ }
if (i + 1 < length)
- {
- if (! first)
+ {
+ if (! first)
indent (e, 2);
plen = fprintf (e, "0x%x",
- (int) windres_get_16 (&wrtarget, data + i, length - i));
+ (int) target_get_16 (data + i, length - i));
if (has_next || i + 2 < length)
- {
+ {
if (plen > 0 && plen < 11)
indent (e, 11 - plen);
fprintf (e, ",");
- }
+ }
if (show_comment)
{
fprintf (e, "\t/* ");
ascii_print (e, (const char *) &data[i], 2);
fprintf (e, ". */");
- }
- fprintf (e, "\n");
- i += 2;
- first = 0;
- }
+ }
+ fprintf (e, "\n");
+ i += 2;
+ first = 0;
+ }
if (i < length)
- {
- if (! first)
+ {
+ if (! first)
indent (e, 2);
fprintf (e, "\"");
ascii_print (e, (const char *) &data[i], 1);
fprintf (e, "\"");
if (has_next)
- fprintf (e, ",");
- fprintf (e, "\n");
- first = 0;
- }
+ fprintf (e, ",");
+ fprintf (e, "\n");
+ first = 0;
+ }
}
if (hasblock)
fprintf (e, "END\n");
@@ -3214,9 +3233,9 @@ write_rc_rcdata (FILE *e, const rc_rcdata_item *rcdata, int ind)
case RCDATA_BUFFER:
write_rc_datablock (e, (rc_uint_type) ri->u.buffer.length,
- (const bfd_byte *) ri->u.buffer.data,
- ri->next != NULL, 0, -1);
- break;
+ (const bfd_byte *) ri->u.buffer.data,
+ ri->next != NULL, 0, -1);
+ break;
}
if (ri->type != RCDATA_BUFFER)
@@ -3257,7 +3276,7 @@ write_rc_stringtable (FILE *e, const rc_res_id *name,
{
fprintf (e, " %lu, ", (unsigned long) offset + i);
unicode_print_quoted (e, stringtable->strings[i].string,
- stringtable->strings[i].length);
+ stringtable->strings[i].length);
fprintf (e, "\n");
}
}
@@ -3298,7 +3317,7 @@ write_rc_versioninfo (FILE *e, const rc_versioninfo *versioninfo)
fprintf (e, " FILESUBTYPE 0x%x\n", (unsigned int) f->file_subtype);
if (f->file_date_ms != 0 || f->file_date_ls != 0)
fprintf (e, "/* Date: %u, %u. */\n",
- (unsigned int) f->file_date_ms, (unsigned int) f->file_date_ls);
+ (unsigned int) f->file_date_ms, (unsigned int) f->file_date_ls);
fprintf (e, "BEGIN\n");
@@ -3366,7 +3385,7 @@ rcdata_copy (const rc_rcdata_item *src, bfd_byte *dst)
if (! src)
return 0;
switch (src->type)
- {
+ {
case RCDATA_WORD:
if (dst)
windres_put_16 (&wrtarget, dst, (rc_uint_type) src->u.word);
diff --git a/binutils/resres.c b/binutils/resres.c
index d96fb14..6505580 100644
--- a/binutils/resres.c
+++ b/binutils/resres.c
@@ -201,11 +201,11 @@ read_resource_entry (windres_bfd *wrbfd, rc_uint_type *off, rc_uint_type omax)
/* Read additional resource header */
read_res_data (wrbfd, off, omax, &l, BIN_RES_INFO_SIZE);
- resinfo.version = windres_get_32 (wrbfd, l.version, 4);
- resinfo.memflags = windres_get_16 (wrbfd, l.memflags, 2);
- resinfo.language = windres_get_16 (wrbfd, l.language, 2);
- /* resinfo.version2 = windres_get_32 (wrbfd, l.version2, 4); */
- resinfo.characteristics = windres_get_32 (wrbfd, l.characteristics, 4);
+ resinfo.version = windres_get_32 (wrbfd, l.version);
+ resinfo.memflags = windres_get_16 (wrbfd, l.memflags);
+ resinfo.language = windres_get_16 (wrbfd, l.language);
+ /* resinfo.version2 = windres_get_32 (wrbfd, l.version2); */
+ resinfo.characteristics = windres_get_32 (wrbfd, l.characteristics);
off[0] = (off[0] + 3) & ~3;
@@ -464,8 +464,8 @@ read_res_data_hdr (windres_bfd *wrbfd, rc_uint_type *off, rc_uint_type omax,
fatal ("%s: unexpected end of file %ld/%ld", filename,(long) off[0], (long) omax);
get_windres_bfd_content (wrbfd, &brh, off[0], BIN_RES_HDR_SIZE);
- reshdr->data_size = windres_get_32 (wrbfd, brh.data_size, 4);
- reshdr->header_size = windres_get_32 (wrbfd, brh.header_size, 4);
+ reshdr->data_size = windres_get_32 (wrbfd, brh.data_size);
+ reshdr->header_size = windres_get_32 (wrbfd, brh.header_size);
off[0] += BIN_RES_HDR_SIZE;
}
@@ -542,12 +542,12 @@ read_res_id (windres_bfd *wrbfd, rc_uint_type *off, rc_uint_type omax, rc_res_id
rc_uint_type len;
read_res_data (wrbfd, off, omax, &bid, BIN_RES_ID - 2);
- ord = (unsigned short) windres_get_16 (wrbfd, bid.sig, 2);
+ ord = (unsigned short) windres_get_16 (wrbfd, bid.sig);
if (ord == 0xFFFF) /* an ordinal id */
{
read_res_data (wrbfd, off, omax, bid.id, BIN_RES_ID - 2);
id->named = 0;
- id->u.id = windres_get_16 (wrbfd, bid.id, 2);
+ id->u.id = windres_get_16 (wrbfd, bid.id);
}
else
/* named id */
@@ -575,7 +575,7 @@ read_unistring (windres_bfd *wrbfd, rc_uint_type *off, rc_uint_type omax,
do
{
read_res_data (wrbfd, &soff, omax, d, sizeof (unichar));
- c = windres_get_16 (wrbfd, d, 2);
+ c = windres_get_16 (wrbfd, d);
}
while (c != 0);
l = ((soff - off[0]) / sizeof (unichar));
@@ -585,7 +585,7 @@ read_unistring (windres_bfd *wrbfd, rc_uint_type *off, rc_uint_type omax,
do
{
read_res_data (wrbfd, off, omax, d, sizeof (unichar));
- c = windres_get_16 (wrbfd, d, 2);
+ c = windres_get_16 (wrbfd, d);
*p++ = c;
}
while (c != 0);
diff --git a/binutils/windint.h b/binutils/windint.h
index 3b950ac..10cf46e 100644
--- a/binutils/windint.h
+++ b/binutils/windint.h
@@ -1087,9 +1087,9 @@ extern void get_windres_bfd_content (windres_bfd *, void *, rc_uint_type, rc_uin
extern void windres_put_8 (windres_bfd *, void *, rc_uint_type);
extern void windres_put_16 (windres_bfd *, void *, rc_uint_type);
extern void windres_put_32 (windres_bfd *, void *, rc_uint_type);
-extern rc_uint_type windres_get_8 (windres_bfd *, const void *, rc_uint_type);
-extern rc_uint_type windres_get_16 (windres_bfd *, const void *, rc_uint_type);
-extern rc_uint_type windres_get_32 (windres_bfd *, const void *, rc_uint_type);
+extern rc_uint_type windres_get_8 (windres_bfd *, const void *);
+extern rc_uint_type windres_get_16 (windres_bfd *, const void *);
+extern rc_uint_type windres_get_32 (windres_bfd *, const void *);
extern void set_windres_bfd (windres_bfd *, bfd *, asection *, rc_uint_type);
extern void set_windres_bfd_endianness (windres_bfd *, int);
diff --git a/binutils/windres.c b/binutils/windres.c
index b41353b..cfd306b 100644
--- a/binutils/windres.c
+++ b/binutils/windres.c
@@ -1210,23 +1210,15 @@ target_put_32 (void *p, rc_uint_type value)
}
static rc_uint_type
-target_get_8 (const void *p, rc_uint_type length)
+target_get_8 (const void *p)
{
- rc_uint_type ret;
-
- if (length < 1)
- fatal ("Resource too small for getting 8-bit value.");
-
- ret = (rc_uint_type) *((const bfd_byte *) p);
+ rc_uint_type ret = *((const bfd_byte *) p);
return ret & 0xff;
}
static rc_uint_type
-target_get_16 (const void *p, rc_uint_type length)
+target_get_16 (const void *p)
{
- if (length < 2)
- fatal ("Resource too small for getting 16-bit value.");
-
if (target_is_bigendian)
return bfd_getb16 (p);
else
@@ -1234,11 +1226,8 @@ target_get_16 (const void *p, rc_uint_type length)
}
static rc_uint_type
-target_get_32 (const void *p, rc_uint_type length)
+target_get_32 (const void *p)
{
- if (length < 4)
- fatal ("Resource too small for getting 32-bit value.");
-
if (target_is_bigendian)
return bfd_getb32 (p);
else
@@ -1304,14 +1293,12 @@ windres_put_32 (windres_bfd *wrbfd, void *data, rc_uint_type value)
}
rc_uint_type
-windres_get_8 (windres_bfd *wrbfd, const void *data, rc_uint_type length)
+windres_get_8 (windres_bfd *wrbfd, const void *data)
{
- if (length < 1)
- fatal ("windres_get_8: unexpected eob.");
switch (WR_KIND(wrbfd))
{
case WR_KIND_TARGET:
- return target_get_8 (data, length);
+ return target_get_8 (data);
case WR_KIND_BFD:
case WR_KIND_BFD_BIN_B:
case WR_KIND_BFD_BIN_L:
@@ -1323,14 +1310,12 @@ windres_get_8 (windres_bfd *wrbfd, const void *data, rc_uint_type length)
}
rc_uint_type
-windres_get_16 (windres_bfd *wrbfd, const void *data, rc_uint_type length)
+windres_get_16 (windres_bfd *wrbfd, const void *data)
{
- if (length < 2)
- fatal ("windres_get_16: unexpected eob.");
switch (WR_KIND(wrbfd))
{
case WR_KIND_TARGET:
- return target_get_16 (data, length);
+ return target_get_16 (data);
case WR_KIND_BFD:
case WR_KIND_BFD_BIN_B:
return bfd_get_16 (WR_BFD(wrbfd), data);
@@ -1343,14 +1328,12 @@ windres_get_16 (windres_bfd *wrbfd, const void *data, rc_uint_type length)
}
rc_uint_type
-windres_get_32 (windres_bfd *wrbfd, const void *data, rc_uint_type length)
+windres_get_32 (windres_bfd *wrbfd, const void *data)
{
- if (length < 4)
- fatal ("windres_get_32: unexpected eob.");
switch (WR_KIND(wrbfd))
{
case WR_KIND_TARGET:
- return target_get_32 (data, length);
+ return target_get_32 (data);
case WR_KIND_BFD:
case WR_KIND_BFD_BIN_B:
return bfd_get_32 (WR_BFD(wrbfd), data);