b0f3e50964
The catkey->name could be unaligned since the address of 'void* record' is calculated as offset in bytes to a malloc buffer. The fix is using aligned buffer allocated by grub_malloc for holding the UTF16 string copied from catkey->name. And use that buffer as argument for grub_utf16_to_utf8 to convert to UTF8 strings. In addition, using a new copy of buffer rather than catkey->name itself for processing the endianess conversion, we can also get rid of the hunk restoring byte order of catkey->name to what it was previously. [ 59s] ../grub-core/fs/hfsplus.c: In function 'list_nodes': [ 59s] ../grub-core/fs/hfsplus.c:738:57: error: taking address of packed member of 'struct grub_hfsplus_catkey' may result in an unaligned pointer value [-Werror=address-of-packed-member] [ 59s] 738 | *grub_utf16_to_utf8 ((grub_uint8_t *) filename, catkey->name, [ 59s] | ~~~~~~^~~~~~ [ 59s] ../grub-core/fs/hfsplus.c: In function 'grub_hfsplus_label': [ 59s] ../grub-core/fs/hfsplus.c:1019:57: error: taking address of packed member of 'struct grub_hfsplus_catkey' may result in an unaligned pointer value [-Werror=address-of-packed-member] [ 59s] 1019 | *grub_utf16_to_utf8 ((grub_uint8_t *) (*label), catkey->name, [ 59s] | ~~~~~~^~~~~~ Signed-off-by: Michael Chang <mchang@suse.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com> |
||
---|---|---|
.. | ||
zfs | ||
affs.c | ||
afs.c | ||
archelp.c | ||
bfs.c | ||
btrfs.c | ||
cbfs.c | ||
cpio.c | ||
cpio_be.c | ||
cpio_common.c | ||
exfat.c | ||
ext2.c | ||
f2fs.c | ||
fat.c | ||
fshelp.c | ||
hfs.c | ||
hfsplus.c | ||
hfspluscomp.c | ||
iso9660.c | ||
jfs.c | ||
minix.c | ||
minix2.c | ||
minix2_be.c | ||
minix3.c | ||
minix3_be.c | ||
minix_be.c | ||
newc.c | ||
nilfs2.c | ||
ntfs.c | ||
ntfscomp.c | ||
odc.c | ||
proc.c | ||
reiserfs.c | ||
romfs.c | ||
sfs.c | ||
squash4.c | ||
tar.c | ||
udf.c | ||
ufs.c | ||
ufs2.c | ||
ufs_be.c | ||
xfs.c |