From: Vladimir 'phcoder' Serbinenko Date: Tue, 13 Dec 2011 15:35:12 +0000 (+0100) Subject: * grub-core/fs/iso9660.c (grub_iso9660_convert_string): Make first X-Git-Tag: 2.00~884 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9b4baaa4ee24a54d354f64cf294dd4b9a35947bd;p=thirdparty%2Fgrub.git * grub-core/fs/iso9660.c (grub_iso9660_convert_string): Make first argument a u8 pointer. All users updated. Handle unaligned buffers. --- diff --git a/ChangeLog b/ChangeLog index 8f30b557a..833d80a8a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2011-12-13 Vladimir Serbinenko + + * grub-core/fs/iso9660.c (grub_iso9660_convert_string): Make first + argument a u8 pointer. All users updated. + Handle unaligned buffers. + 2011-12-13 Vladimir Serbinenko * grub-core/fs/iso9660.c (grub_iso9660_iterate_dir): Force inlining of diff --git a/grub-core/fs/iso9660.c b/grub-core/fs/iso9660.c index 048c361a6..fb5da2aa7 100644 --- a/grub-core/fs/iso9660.c +++ b/grub-core/fs/iso9660.c @@ -331,19 +331,20 @@ grub_iso9660_susp_iterate (grub_fshelp_node_t node, grub_off_t off, } static char * -grub_iso9660_convert_string (grub_uint16_t *us, int len) +grub_iso9660_convert_string (grub_uint8_t *us, int len) { char *p; int i; + grub_uint16_t t[len]; - p = grub_malloc (len * 4 + 1); + p = grub_malloc (len * GRUB_MAX_UTF8_PER_UTF16 + 1); if (! p) return p; for (i=0; i> 1); + ((grub_uint8_t *) oldname, dirent.namelen >> 1); semicolon = grub_strrchr (filename, ';'); if (semicolon) @@ -978,8 +979,7 @@ grub_iso9660_label (grub_device_t device, char **label) if (data) { if (data->joliet) - *label = grub_iso9660_convert_string - ((grub_uint16_t *) &data->voldesc.volname, 16); + *label = grub_iso9660_convert_string (data->voldesc.volname, 16); else *label = grub_strndup ((char *) data->voldesc.volname, 32); if (*label)