]> git.ipfire.org Git - thirdparty/grub.git/commit
efi: Fix gcc9 error -Waddress-of-packed-member
authorMichael Chang <mchang@suse.com>
Thu, 11 Apr 2019 09:14:09 +0000 (17:14 +0800)
committerDaniel Kiper <daniel.kiper@oracle.com>
Tue, 23 Apr 2019 09:37:08 +0000 (11:37 +0200)
commit4dd4ceec023111a4ccf69f8de6fa0885c6847a35
tree1770461c4e350ef0a340ad377618b51923dfe149
parent4868e17507dfebf2894079ad6b4876e612706f30
efi: Fix gcc9 error -Waddress-of-packed-member

The address of fp->path_name could be unaligned since seeking into the
device path buffer for a given node could end in byte boundary.

The fix is allocating aligned buffer by grub_malloc for holding the
UTF16 string copied from fp->path_name, and after using that buffer as
argument for grub_utf16_to_utf8 to convert it to UTF8 string.

[  255s] ../../grub-core/kern/efi/efi.c: In function 'grub_efi_get_filename':
[  255s] ../../grub-core/kern/efi/efi.c:410:60: error: taking address of packed member of 'struct grub_efi_file_path_device_path' may result in an unaligned pointer value [-Werror=address-of-packed-member]
[  255s]   410 |    p = (char *) grub_utf16_to_utf8 ((unsigned char *) p, fp->path_name, len);
[  255s]       |                                                          ~~^~~~~~~~~~~
[  255s] ../../grub-core/kern/efi/efi.c: In function 'grub_efi_print_device_path':
[  255s] ../../grub-core/kern/efi/efi.c:900:33: error: taking address of packed member of 'struct grub_efi_file_path_device_path' may result in an unaligned pointer value [-Werror=address-of-packed-member]
[  255s]   900 |     *grub_utf16_to_utf8 (buf, fp->path_name,
[  255s]       |                               ~~^~~~~~~~~~~

Signed-off-by: Michael Chang <mchang@suse.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
grub-core/kern/efi/efi.c