diff options
Diffstat (limited to 'binutils/resbin.c')
-rw-r--r-- | binutils/resbin.c | 558 |
1 files changed, 293 insertions, 265 deletions
diff --git a/binutils/resbin.c b/binutils/resbin.c index 1698e14..889126e 100644 --- a/binutils/resbin.c +++ b/binutils/resbin.c @@ -136,15 +136,15 @@ 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; } - ret = (unichar *) res_alloc ((c + 1) * sizeof (unichar)); + 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 @@ -198,7 +198,7 @@ bin_to_res_generic (windres_bfd *wrbfd ATTRIBUTE_UNUSED, enum rc_res_type type, { rc_res_resource *r; - r = (rc_res_resource *) res_alloc (sizeof (rc_res_resource)); + r = res_alloc (sizeof (rc_res_resource)); r->type = type; r->u.data.data = data; r->u.data.length = length; @@ -220,13 +220,13 @@ bin_to_res_cursor (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length return NULL; } - c = (rc_cursor *) res_alloc (sizeof (rc_cursor)); - c->xhotspot = windres_get_16 (wrbfd, data, 2); - c->yhotspot = windres_get_16 (wrbfd, data + 2, 2); + c = res_alloc (sizeof (rc_cursor)); + c->xhotspot = windres_get_16 (wrbfd, data); + c->yhotspot = windres_get_16 (wrbfd, data + 2); c->length = length - 4; c->data = data + 4; - r = (rc_res_resource *) res_alloc (sizeof *r); + r = res_alloc (sizeof *r); r->type = RES_TYPE_CURSOR; r->u.cursor = c; @@ -242,10 +242,10 @@ bin_to_res_menu (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length) rc_menu *m; rc_uint_type version, got; - r = (rc_res_resource *) res_alloc (sizeof *r); + r = res_alloc (sizeof *r); r->type = RES_TYPE_MENU; - m = (rc_menu *) res_alloc (sizeof (rc_menu)); + m = res_alloc (sizeof (rc_menu)); r->u.menu = m; if (length < 2) @@ -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")); @@ -301,8 +301,8 @@ bin_to_res_menu (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length) /* Convert menu items from binary. */ static rc_menuitem * -bin_to_res_menuitems (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length, - rc_uint_type *got) +bin_to_res_menuitems (windres_bfd *wrbfd, const bfd_byte *data, + rc_uint_type length, rc_uint_type *got) { rc_menuitem *first, **pp; @@ -323,11 +323,11 @@ bin_to_res_menuitems (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type len return NULL; } - mi = (rc_menuitem *) res_alloc (sizeof *mi); + mi = res_alloc (sizeof *mi); 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, rc_uint_type len 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,15 +358,15 @@ bin_to_res_menuitems (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type len 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 { rc_uint_type subread; mi->id = 0; - mi->popup = bin_to_res_menuitems (wrbfd, data + itemlen, length - itemlen, - &subread); + mi->popup = bin_to_res_menuitems (wrbfd, data + itemlen, + length - itemlen, &subread); if (mi->popup == NULL) return NULL; itemlen += subread; @@ -390,8 +390,8 @@ bin_to_res_menuitems (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type len /* Convert menuex items from binary. */ static rc_menuitem * -bin_to_res_menuexitems (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length, - rc_uint_type *got) +bin_to_res_menuexitems (windres_bfd *wrbfd, const bfd_byte *data, + rc_uint_type length, rc_uint_type *got) { rc_menuitem *first, **pp; @@ -412,14 +412,14 @@ bin_to_res_menuexitems (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type l return NULL; } - mi = (rc_menuitem *) 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 = res_alloc (sizeof (rc_menuitem)); + 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, rc_uint_type l 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, rc_uint_type l 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, @@ -492,31 +497,31 @@ bin_to_res_dialog (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length return NULL; } - d = (rc_dialog *) res_alloc (sizeof (rc_dialog)); + 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); return NULL; } - d->ex = (rc_dialog_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 = res_alloc (sizeof (rc_dialog_ex)); + 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; } @@ -602,7 +607,7 @@ bin_to_res_dialog (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length off = (off + 3) &~ 3; - dc = (rc_dialog_control *) res_alloc (sizeof (rc_dialog_control)); + dc = res_alloc (sizeof (rc_dialog_control)); if (d->ex == NULL) { @@ -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) @@ -677,8 +682,7 @@ bin_to_res_dialog (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length return NULL; } - dc->data = ((rc_rcdata_item *) - res_alloc (sizeof (rc_rcdata_item))); + dc->data = res_alloc (sizeof (rc_rcdata_item)); dc->data->next = NULL; dc->data->type = RCDATA_BUFFER; dc->data->u.buffer.length = datalen; @@ -692,7 +696,7 @@ bin_to_res_dialog (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length pp = &dc->next; } - r = (rc_res_resource *) res_alloc (sizeof *r); + r = res_alloc (sizeof *r); r->type = RES_TYPE_DIALOG; r->u.dialog = d; @@ -708,7 +712,7 @@ bin_to_res_string (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length int i; rc_res_resource *r; - st = (rc_stringtable *) res_alloc (sizeof (rc_stringtable)); + st = res_alloc (sizeof (rc_stringtable)); for (i = 0; i < 16; i++) { @@ -719,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) @@ -733,18 +737,18 @@ bin_to_res_string (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length return NULL; } - s = (unichar *) res_alloc (slen * sizeof (unichar)); + s = res_alloc (slen * sizeof (unichar)); 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; length -= 2 + 2 * slen; } - r = (rc_res_resource *) res_alloc (sizeof *r); + r = res_alloc (sizeof *r); r->type = RES_TYPE_STRINGTABLE; r->u.stringtable = st; @@ -754,7 +758,8 @@ bin_to_res_string (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length /* Convert a fontdir resource from binary. */ static rc_res_resource * -bin_to_res_fontdir (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length) +bin_to_res_fontdir (windres_bfd *wrbfd, const bfd_byte *data, + rc_uint_type length) { rc_uint_type c, i; rc_fontdir *first, **pp; @@ -766,7 +771,7 @@ bin_to_res_fontdir (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type lengt return NULL; } - c = windres_get_16 (wrbfd, data, 2); + c = windres_get_16 (wrbfd, data); first = NULL; pp = &first; @@ -784,8 +789,8 @@ bin_to_res_fontdir (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type lengt } bfi = (const struct bin_fontdir_item *) data; - fd = (rc_fontdir *) res_alloc (sizeof *fd); - fd->index = windres_get_16 (wrbfd, bfi->index, 2); + fd = res_alloc (sizeof *fd); + 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 @@ -827,7 +832,7 @@ bin_to_res_fontdir (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type lengt length -= off; } - r = (rc_res_resource *) res_alloc (sizeof *r); + r = res_alloc (sizeof *r); r->type = RES_TYPE_FONTDIR; r->u.fontdir = first; @@ -837,7 +842,8 @@ bin_to_res_fontdir (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type lengt /* Convert an accelerators resource from binary. */ static rc_res_resource * -bin_to_res_accelerators (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length) +bin_to_res_accelerators (windres_bfd *wrbfd, const bfd_byte *data, + rc_uint_type length) { rc_accelerator *first, **pp; rc_res_resource *r; @@ -855,11 +861,11 @@ bin_to_res_accelerators (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type return NULL; } - a = (rc_accelerator *) res_alloc (sizeof (rc_accelerator)); + 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; @@ -872,7 +878,7 @@ bin_to_res_accelerators (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length -= 8; } - r = (rc_res_resource *) res_alloc (sizeof (rc_res_resource)); + r = res_alloc (sizeof (rc_res_resource)); r->type = RES_TYPE_ACCELERATOR; r->u.acc = first; @@ -888,14 +894,14 @@ bin_to_res_rcdata (windres_bfd *wrbfd ATTRIBUTE_UNUSED, const bfd_byte *data, rc_rcdata_item *ri; rc_res_resource *r; - ri = (rc_rcdata_item *) res_alloc (sizeof (rc_rcdata_item)); + ri = res_alloc (sizeof (rc_rcdata_item)); ri->next = NULL; ri->type = RCDATA_BUFFER; ri->u.buffer.length = length; ri->u.buffer.data = data; - r = (rc_res_resource *) res_alloc (sizeof *r); + r = res_alloc (sizeof *r); r->type = rctyp; r->u.rcdata = ri; @@ -905,7 +911,8 @@ bin_to_res_rcdata (windres_bfd *wrbfd ATTRIBUTE_UNUSED, const bfd_byte *data, /* Convert a group cursor resource from binary. */ static rc_res_resource * -bin_to_res_group_cursor (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length) +bin_to_res_group_cursor (windres_bfd *wrbfd, const bfd_byte *data, + rc_uint_type length) { int type, c, i; rc_group_cursor *first, **pp; @@ -917,14 +924,14 @@ bin_to_res_group_cursor (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type 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; @@ -942,14 +949,14 @@ bin_to_res_group_cursor (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type return NULL; } - gc = (rc_group_cursor *) res_alloc (sizeof *gc); + 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; @@ -959,7 +966,7 @@ bin_to_res_group_cursor (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length -= 14; } - r = (rc_res_resource *) res_alloc (sizeof (rc_res_resource)); + r = res_alloc (sizeof (rc_res_resource)); r->type = RES_TYPE_GROUP_CURSOR; r->u.group_cursor = first; @@ -969,7 +976,8 @@ bin_to_res_group_cursor (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type /* Convert a group icon resource from binary. */ static rc_res_resource * -bin_to_res_group_icon (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length) +bin_to_res_group_icon (windres_bfd *wrbfd, const bfd_byte *data, + rc_uint_type length) { int type, c, i; rc_group_icon *first, **pp; @@ -981,14 +989,14 @@ bin_to_res_group_icon (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type le 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; @@ -1006,15 +1014,15 @@ bin_to_res_group_icon (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type le return NULL; } - gi = (rc_group_icon *) res_alloc (sizeof (rc_group_icon)); + 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; @@ -1024,7 +1032,7 @@ bin_to_res_group_icon (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type le length -= 14; } - r = (rc_res_resource *) res_alloc (sizeof *r); + r = res_alloc (sizeof *r); r->type = RES_TYPE_GROUP_ICON; r->u.group_icon = first; @@ -1037,8 +1045,8 @@ bin_to_res_group_icon (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type le to the type, and *OFF to the offset to the children. */ static bool -get_version_header (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length, - const char *key, unichar **pkey, +get_version_header (windres_bfd *wrbfd, const bfd_byte *data, + rc_uint_type length, const char *key, unichar **pkey, rc_uint_type *len, rc_uint_type *vallen, rc_uint_type *type, rc_uint_type *off) { @@ -1048,9 +1056,9 @@ get_version_header (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type lengt 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; @@ -1075,7 +1083,7 @@ get_version_header (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type lengt 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; @@ -1099,7 +1107,8 @@ get_version_header (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type lengt /* Convert a version resource from binary. */ static rc_res_resource * -bin_to_res_version (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length) +bin_to_res_version (windres_bfd *wrbfd, const bfd_byte *data, + rc_uint_type length) { rc_uint_type verlen, vallen, type, off; rc_fixed_versioninfo *fi; @@ -1125,7 +1134,8 @@ bin_to_res_version (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type lengt return NULL; } - /* PR 27686: Ignore any padding bytes after the end of the version structure. */ + /* PR 27686: Ignore any padding bytes after the end of the version + structure. */ length = verlen; data += off; @@ -1150,33 +1160,33 @@ bin_to_res_version (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type lengt 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); return NULL; } - fi = (rc_fixed_versioninfo *) res_alloc (sizeof (rc_fixed_versioninfo)); + 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; @@ -1196,9 +1206,9 @@ bin_to_res_version (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type lengt return NULL; } - vi = (rc_ver_info *) res_alloc (sizeof (rc_ver_info)); + 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') { @@ -1238,9 +1248,9 @@ bin_to_res_version (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type lengt return NULL; } - vst = (rc_ver_stringtable *) res_alloc (sizeof (rc_ver_stringtable)); + vst = res_alloc (sizeof (rc_ver_stringtable)); - if (!get_version_header (wrbfd, data, length, (const char *) NULL, + if (!get_version_header (wrbfd, data, length, "version stringtable", &vst->language, &stverlen, &vallen, &type, &off)) return NULL; @@ -1256,64 +1266,65 @@ bin_to_res_version (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type lengt length -= off; verlen -= off; - stverlen -= off; + stverlen -= off; - vst->strings = NULL; - ppvs = &vst->strings; + vst->strings = NULL; + ppvs = &vst->strings; - while (stverlen > 0) - { - rc_ver_stringinfo *vs; - rc_uint_type sverlen, vslen, valoff; - - if (length < 8) + while (stverlen > 0) { - toosmall (_("version string")); - return NULL; + rc_ver_stringinfo *vs; + rc_uint_type sverlen, vslen, valoff; + + if (length < 8) + { + toosmall (_("version string")); + return NULL; + } + + vs = res_alloc (sizeof (rc_ver_stringinfo)); + + if (!get_version_header (wrbfd, data, length, "version string", + &vs->key, &sverlen, &vallen, + &type, &off)) + return NULL; + + data += off; + length -= off; + + vs->value = get_unicode (wrbfd, data, length, &vslen); + if (vs->value == NULL) + return NULL; + valoff = vslen * 2 + 2; + valoff = (valoff + 3) & ~3; + + if (off + valoff != sverlen) + { + non_fatal (_("unexpected version string length %ld != %ld + %ld"), + (long) sverlen, (long) off, (long) valoff); + return NULL; + } + + data += valoff; + length -= valoff; + + if (stverlen < sverlen) + { + non_fatal (_("unexpected version string length %ld < %ld"), + (long) verlen, (long) sverlen); + return NULL; + } + stverlen -= sverlen; + verlen -= sverlen; + + vs->next = NULL; + *ppvs = vs; + ppvs = &vs->next; } - vs = (rc_ver_stringinfo *) res_alloc (sizeof (rc_ver_stringinfo)); - - if (!get_version_header (wrbfd, data, length, (const char *) NULL, - &vs->key, &sverlen, &vallen, &type, &off)) - return NULL; - - data += off; - length -= off; - - vs->value = get_unicode (wrbfd, data, length, &vslen); - if (vs->value == NULL) - return NULL; - valoff = vslen * 2 + 2; - valoff = (valoff + 3) & ~3; - - if (off + valoff != sverlen) - { - non_fatal (_("unexpected version string length %ld != %ld + %ld"), - (long) sverlen, (long) off, (long) valoff); - return NULL; - } - - data += valoff; - length -= valoff; - - if (stverlen < sverlen) - { - non_fatal (_("unexpected version string length %ld < %ld"), - (long) verlen, (long) sverlen); - return NULL; - } - stverlen -= sverlen; - verlen -= sverlen; - - vs->next = NULL; - *ppvs = vs; - ppvs = &vs->next; - } - - vst->next = NULL; - *ppvst = vst; - ppvst = &vst->next; + vst->next = NULL; + *ppvst = vst; + ppvst = &vst->next; } } else if (ch == 'V') @@ -1337,7 +1348,7 @@ bin_to_res_version (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type lengt data += off; length -= off; - if (!get_version_header (wrbfd, data, length, (const char *) NULL, + if (!get_version_header (wrbfd, data, length, "version varfileinfo", &vi->u.var.key, &verlen, &vallen, &type, &off)) return NULL; @@ -1358,10 +1369,10 @@ bin_to_res_version (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type lengt return NULL; } - vv = (rc_ver_varinfo *) res_alloc (sizeof (rc_ver_varinfo)); + 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; @@ -1399,11 +1410,11 @@ bin_to_res_version (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type lengt pp = &vi->next; } - v = (rc_versioninfo *) res_alloc (sizeof (rc_versioninfo)); + v = res_alloc (sizeof (rc_versioninfo)); v->fixed = fi; v->var = first; - r = (rc_res_resource *) res_alloc (sizeof *r); + r = res_alloc (sizeof *r); r->type = RES_TYPE_VERSIONINFO; r->u.versioninfo = v; @@ -1419,14 +1430,14 @@ bin_to_res_userdata (windres_bfd *wrbfd ATTRIBUTE_UNUSED, const bfd_byte *data, rc_rcdata_item *ri; rc_res_resource *r; - ri = (rc_rcdata_item *) res_alloc (sizeof (rc_rcdata_item)); + ri = res_alloc (sizeof (rc_rcdata_item)); ri->next = NULL; ri->type = RCDATA_BUFFER; ri->u.buffer.length = length; ri->u.buffer.data = data; - r = (rc_res_resource *) res_alloc (sizeof *r); + r = res_alloc (sizeof *r); r->type = RES_TYPE_USERDATA; r->u.rcdata = ri; @@ -1446,36 +1457,39 @@ bin_to_res_toolbar (windres_bfd *wrbfd, const bfd_byte *data, toosmall (_("toolbar")); return NULL; } - ri = (rc_toolbar *) 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 = res_alloc (sizeof (rc_toolbar)); + 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; length -= 12; for (i = 0; i < ri->nitems; i++) - { - rc_toolbar_item *it; - it = (rc_toolbar_item *) res_alloc (sizeof (rc_toolbar_item)); - it->id.named = 0; - if (length < 4) - toosmall (_("toolbar item")); - it->id.u.id = (int) windres_get_32 (wrbfd, data, 4); - it->prev = it->next = NULL; - data += 4; - length -= 4; - if(ri->items) { - rc_toolbar_item *ii = ri->items; - while (ii->next != NULL) - ii = ii->next; - it->prev = ii; - ii->next = it; - } - else - ri->items = it; - } - r = (rc_res_resource *) res_alloc (sizeof *r); + { + rc_toolbar_item *it; + it = res_alloc (sizeof (rc_toolbar_item)); + it->id.named = 0; + if (length < 4) + { + toosmall (_("toolbar item")); + return NULL; + } + it->id.u.id = (int) windres_get_32 (wrbfd, data); + it->prev = it->next = NULL; + data += 4; + length -= 4; + if(ri->items) { + rc_toolbar_item *ii = ri->items; + while (ii->next != NULL) + ii = ii->next; + it->prev = ii; + ii->next = it; + } + else + ri->items = it; + } + r = res_alloc (sizeof *r); r->type = RES_TYPE_TOOLBAR; r->u.toolbar = ri; return r; @@ -1514,7 +1528,8 @@ res_to_bin (windres_bfd *wrbfd, rc_uint_type off, const rc_res_resource *res) case RES_TYPE_FONT: case RES_TYPE_ICON: case RES_TYPE_MESSAGETABLE: - return res_to_bin_generic (wrbfd, off, res->u.data.length, res->u.data.data); + return res_to_bin_generic (wrbfd, off, res->u.data.length, + res->u.data.data); case RES_TYPE_ACCELERATOR: return res_to_bin_accelerator (wrbfd, off, res->u.acc); case RES_TYPE_CURSOR: @@ -1565,13 +1580,13 @@ resid_to_bin (windres_bfd *wrbfd, rc_uint_type off, rc_res_id id) rc_uint_type len = (id.u.n.name ? unichar_len (id.u.n.name) : 0); if (wrbfd) { - bfd_byte *d = (bfd_byte *) reswr_alloc ((len + 1) * sizeof (unichar)); + bfd_byte *d = reswr_alloc ((len + 1) * sizeof (unichar)); rc_uint_type i; for (i = 0; i < len; i++) windres_put_16 (wrbfd, d + (i * sizeof (unichar)), id.u.n.name[i]); windres_put_16 (wrbfd, d + (len * sizeof (unichar)), 0); set_windres_bfd_content (wrbfd, d, off, (len + 1) * sizeof (unichar)); - } + } off += (rc_uint_type) ((len + 1) * sizeof (unichar)); } return off; @@ -1592,7 +1607,7 @@ unicode_to_bin (windres_bfd *wrbfd, rc_uint_type off, const unichar *str) { bfd_byte *d; rc_uint_type i; - d = (bfd_byte *) reswr_alloc ( (len + 1) * sizeof (unichar)); + d = reswr_alloc ((len + 1) * sizeof (unichar)); for (i = 0; i < len; i++) windres_put_16 (wrbfd, d + (i * sizeof (unichar)), str[i]); windres_put_16 (wrbfd, d + (len * sizeof (unichar)), 0); @@ -1617,12 +1632,13 @@ res_to_bin_accelerator (windres_bfd *wrbfd, rc_uint_type off, { struct bin_accelerator ba; - windres_put_16 (wrbfd, ba.flags, a->flags | (a->next != NULL ? 0 : ACC_LAST)); + windres_put_16 (wrbfd, ba.flags, + a->flags | (a->next != NULL ? 0 : ACC_LAST)); windres_put_16 (wrbfd, ba.key, a->key); windres_put_16 (wrbfd, ba.id, a->id); windres_put_16 (wrbfd, ba.pad, 0); set_windres_bfd_content (wrbfd, &ba, off, BIN_ACCELERATOR_SIZE); - } + } off += BIN_ACCELERATOR_SIZE; } return off; @@ -1641,7 +1657,8 @@ res_to_bin_cursor (windres_bfd *wrbfd, rc_uint_type off, const rc_cursor *c) windres_put_16 (wrbfd, bc.yhotspot, c->yhotspot); set_windres_bfd_content (wrbfd, &bc, off, BIN_CURSOR_SIZE); if (c->length) - set_windres_bfd_content (wrbfd, c->data, off + BIN_CURSOR_SIZE, c->length); + set_windres_bfd_content (wrbfd, c->data, off + BIN_CURSOR_SIZE, + c->length); } off = (off + BIN_CURSOR_SIZE + (rc_uint_type) c->length); return off; @@ -1671,8 +1688,9 @@ res_to_bin_group_cursor (windres_bfd *wrbfd, rc_uint_type off, windres_put_16 (wrbfd, bgci.bits, gc->bits); windres_put_32 (wrbfd, bgci.bytes, gc->bytes); windres_put_16 (wrbfd, bgci.index, gc->index); - set_windres_bfd_content (wrbfd, &bgci, off, BIN_GROUP_CURSOR_ITEM_SIZE); - } + set_windres_bfd_content (wrbfd, &bgci, off, + BIN_GROUP_CURSOR_ITEM_SIZE); + } off += BIN_GROUP_CURSOR_ITEM_SIZE; } @@ -1705,17 +1723,17 @@ res_to_bin_dialog (windres_bfd *wrbfd, rc_uint_type off, const rc_dialog *dialog if (wrbfd) { - if (! dialogex) - { + if (! dialogex) + { windres_put_32 (wrbfd, bd.style, dialog->style); windres_put_32 (wrbfd, bd.exstyle, dialog->exstyle); windres_put_16 (wrbfd, bd.x, dialog->x); windres_put_16 (wrbfd, bd.y, dialog->y); windres_put_16 (wrbfd, bd.width, dialog->width); windres_put_16 (wrbfd, bd.height, dialog->height); - } - else - { + } + else + { windres_put_16 (wrbfd, bdx.sig1, 1); windres_put_16 (wrbfd, bdx.sig2, 0xffff); windres_put_32 (wrbfd, bdx.help, (dialog->ex ? dialog->ex->help : 0)); @@ -1748,9 +1766,12 @@ res_to_bin_dialog (windres_bfd *wrbfd, rc_uint_type off, const rc_dialog *dialog { struct bin_dialogexfont bdxf; windres_put_16 (wrbfd, bdxf.pointsize, dialog->pointsize); - windres_put_16 (wrbfd, bdxf.weight, (dialog->ex == NULL ? 0 : dialog->ex->weight)); - windres_put_8 (wrbfd, bdxf.italic, (dialog->ex == NULL ? 0 : dialog->ex->italic)); - windres_put_8 (wrbfd, bdxf.charset, (dialog->ex == NULL ? 1 : dialog->ex->charset)); + windres_put_16 (wrbfd, bdxf.weight, + dialog->ex == NULL ? 0 : dialog->ex->weight); + windres_put_8 (wrbfd, bdxf.italic, + dialog->ex == NULL ? 0 : dialog->ex->italic); + windres_put_8 (wrbfd, bdxf.charset, + dialog->ex == NULL ? 1 : dialog->ex->charset); set_windres_bfd_content (wrbfd, &bdxf, off, BIN_DIALOGEXFONT_SIZE); } } @@ -1764,8 +1785,8 @@ res_to_bin_dialog (windres_bfd *wrbfd, rc_uint_type off, const rc_dialog *dialog off += (4 - ((off - off_delta) & 3)) & 3; if (wrbfd) { - if (! dialogex) - { + if (! dialogex) + { struct bin_dialog_control bdc; windres_put_32 (wrbfd, bdc.style, dc->style); @@ -1775,10 +1796,11 @@ res_to_bin_dialog (windres_bfd *wrbfd, rc_uint_type off, const rc_dialog *dialog windres_put_16 (wrbfd, bdc.width, dc->width); windres_put_16 (wrbfd, bdc.height, dc->height); windres_put_16 (wrbfd, bdc.id, dc->id); - set_windres_bfd_content (wrbfd, &bdc, off, BIN_DIALOG_CONTROL_SIZE); - } - else - { + set_windres_bfd_content (wrbfd, &bdc, off, + BIN_DIALOG_CONTROL_SIZE); + } + else + { struct bin_dialogex_control bdc; windres_put_32 (wrbfd, bdc.help, dc->help); @@ -1789,11 +1811,11 @@ res_to_bin_dialog (windres_bfd *wrbfd, rc_uint_type off, const rc_dialog *dialog windres_put_16 (wrbfd, bdc.width, dc->width); windres_put_16 (wrbfd, bdc.height, dc->height); windres_put_32 (wrbfd, bdc.id, dc->id); - set_windres_bfd_content (wrbfd, &bdc, off, BIN_DIALOGEX_CONTROL_SIZE); + set_windres_bfd_content (wrbfd, &bdc, off, + BIN_DIALOGEX_CONTROL_SIZE); } } - off += (dialogex != 0 ? BIN_DIALOGEX_CONTROL_SIZE : BIN_DIALOG_CONTROL_SIZE); - + off += dialogex != 0 ? BIN_DIALOGEX_CONTROL_SIZE : BIN_DIALOG_CONTROL_SIZE; off = resid_to_bin (wrbfd, off, dc->class); off = resid_to_bin (wrbfd, off, dc->text); @@ -1835,7 +1857,8 @@ res_to_bin_dialog (windres_bfd *wrbfd, rc_uint_type off, const rc_dialog *dialog /* Convert a fontdir resource to binary. */ static rc_uint_type -res_to_bin_fontdir (windres_bfd *wrbfd, rc_uint_type off, const rc_fontdir *fontdirs) +res_to_bin_fontdir (windres_bfd *wrbfd, rc_uint_type off, + const rc_fontdir *fontdirs) { rc_uint_type start; int c; @@ -1869,7 +1892,8 @@ res_to_bin_fontdir (windres_bfd *wrbfd, rc_uint_type off, const rc_fontdir *font /* Convert a group icon resource to binary. */ static rc_uint_type -res_to_bin_group_icon (windres_bfd *wrbfd, rc_uint_type off, const rc_group_icon *group_icons) +res_to_bin_group_icon (windres_bfd *wrbfd, rc_uint_type off, + const rc_group_icon *group_icons) { rc_uint_type start; struct bin_group_icon bgi; @@ -1919,21 +1943,21 @@ res_to_bin_menu (windres_bfd *wrbfd, rc_uint_type off, const rc_menu *menu) if (wrbfd) { - if (! menuex) - { + if (! menuex) + { struct bin_menu bm; windres_put_16 (wrbfd, bm.sig1, 0); windres_put_16 (wrbfd, bm.sig2, 0); set_windres_bfd_content (wrbfd, &bm, off, BIN_MENU_SIZE); - } - else - { + } + else + { struct bin_menuex bm; windres_put_16 (wrbfd, bm.sig1, 1); windres_put_16 (wrbfd, bm.sig2, 4); windres_put_32 (wrbfd, bm.help, menu->help); set_windres_bfd_content (wrbfd, &bm, off, BIN_MENUEX_SIZE); - } + } } off += (menuex != 0 ? BIN_MENUEX_SIZE : BIN_MENU_SIZE); if (! menuex) @@ -1950,7 +1974,8 @@ res_to_bin_menu (windres_bfd *wrbfd, rc_uint_type off, const rc_menu *menu) /* Convert menu items to binary. */ static rc_uint_type -res_to_bin_menuitems (windres_bfd *wrbfd, rc_uint_type off, const rc_menuitem *items) +res_to_bin_menuitems (windres_bfd *wrbfd, rc_uint_type off, + const rc_menuitem *items) { const rc_menuitem *mi; @@ -1990,7 +2015,8 @@ res_to_bin_menuitems (windres_bfd *wrbfd, rc_uint_type off, const rc_menuitem *i /* Convert menuex items to binary. */ static rc_uint_type -res_to_bin_menuexitems (windres_bfd *wrbfd, rc_uint_type off, const rc_menuitem *items) +res_to_bin_menuexitems (windres_bfd *wrbfd, rc_uint_type off, + const rc_menuitem *items) { rc_uint_type off_delta = off; const rc_menuitem *mi; @@ -2043,7 +2069,8 @@ res_to_bin_menuexitems (windres_bfd *wrbfd, rc_uint_type off, const rc_menuitem to binary. */ static rc_uint_type -res_to_bin_rcdata (windres_bfd *wrbfd, rc_uint_type off, const rc_rcdata_item *items) +res_to_bin_rcdata (windres_bfd *wrbfd, rc_uint_type off, + const rc_rcdata_item *items) { const rc_rcdata_item *ri; @@ -2089,9 +2116,10 @@ res_to_bin_rcdata (windres_bfd *wrbfd, rc_uint_type off, const rc_rcdata_item *i { rc_uint_type i; - hp = (bfd_byte *) reswr_alloc (len); + hp = reswr_alloc (len); for (i = 0; i < ri->u.wstring.length; i++) - windres_put_16 (wrbfd, hp + i * sizeof (unichar), ri->u.wstring.w[i]); + windres_put_16 (wrbfd, hp + i * sizeof (unichar), + ri->u.wstring.w[i]); } break; case RCDATA_BUFFER: @@ -2128,7 +2156,7 @@ res_to_bin_stringtable (windres_bfd *wrbfd, rc_uint_type off, bfd_byte *hp; rc_uint_type j; - hp = (bfd_byte *) reswr_alloc (length); + hp = reswr_alloc (length); windres_put_16 (wrbfd, hp, slen); for (j = 0; j < slen; j++) @@ -2155,7 +2183,7 @@ string_to_unicode_bin (windres_bfd *wrbfd, rc_uint_type off, const char *s) rc_uint_type i; bfd_byte *hp; - hp = (bfd_byte *) reswr_alloc ((len + 1) * sizeof (unichar)); + hp = reswr_alloc ((len + 1) * sizeof (unichar)); for (i = 0; i < len; i++) windres_put_16 (wrbfd, hp + i * 2, s[i]); @@ -2182,7 +2210,7 @@ res_to_bin_toolbar (windres_bfd *wrbfd, rc_uint_type off, rc_toolbar *tb) bfd_byte *ids; rc_uint_type i = 0; - ids = (bfd_byte *) reswr_alloc (tb->nitems * 4); + ids = reswr_alloc (tb->nitems * 4); it=tb->items; while(it != NULL) { @@ -2221,7 +2249,7 @@ res_to_bin_versioninfo (windres_bfd *wrbfd, rc_uint_type off, struct bin_fixed_versioninfo bfv; const rc_fixed_versioninfo *fi; - fi = versioninfo->fixed; + fi = versioninfo->fixed; windres_put_32 (wrbfd, bfv.sig1, 0xfeef04bd); windres_put_32 (wrbfd, bfv.sig2, 0x10000); windres_put_32 (wrbfd, bfv.file_version, fi->file_version_ms); @@ -2348,13 +2376,13 @@ res_to_bin_versioninfo (windres_bfd *wrbfd, rc_uint_type off, off += 4; } if (wrbfd) - { + { windres_put_16 (wrbfd, bvvd.size, off - vvd_off); windres_put_16 (wrbfd, bvvd.sig1, off - vvvd_off); windres_put_16 (wrbfd, bvvd.sig2, 0); set_windres_bfd_content (wrbfd, &bvvd, vvd_off, BIN_VER_INFO_SIZE); - } + } break; } @@ -2375,7 +2403,7 @@ res_to_bin_versioninfo (windres_bfd *wrbfd, rc_uint_type off, windres_put_16 (wrbfd, bvi.size, off - start); windres_put_16 (wrbfd, bvi.fixed_size, versioninfo->fixed == NULL ? 0 - : BIN_FIXED_VERSIONINFO_SIZE); + : BIN_FIXED_VERSIONINFO_SIZE); windres_put_16 (wrbfd, bvi.sig2, 0); set_windres_bfd_content (wrbfd, &bvi, start, BIN_VER_INFO_SIZE); } |