[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 6/8] usbtest: fix gcc9 error address-of-packed-member
From: |
Michael Chang |
Subject: |
[PATCH 6/8] usbtest: fix gcc9 error address-of-packed-member |
Date: |
Tue, 9 Apr 2019 18:46:57 +0800 |
Copy the packed member descstrp->str to the buffer strbuf returned by
grub_malloc, which is supposed to be suitably aligned for any data type
and after we use strbuf as argument to grub_utf16_to_utf8.
The solved gcc9 error like this.
[ 229s] ../../grub-core/commands/usbtest.c: In function 'grub_usb_get_string':
[ 229s] ../../grub-core/commands/usbtest.c:104:58: error: taking address of
packed member of 'struct grub_usb_desc_str' may result in an unaligned pointer
value [-Werror=address-of-packed-member]
[ 229s] 104 | *grub_utf16_to_utf8 ((grub_uint8_t *) *string, descstrp->str,
[ 229s] | ~~~~~~~~^~~~~
Signed-off-by: Michael Chang <address@hidden>
---
grub-core/commands/usbtest.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/grub-core/commands/usbtest.c b/grub-core/commands/usbtest.c
index 01cdca934..b42e746c0 100644
--- a/grub-core/commands/usbtest.c
+++ b/grub-core/commands/usbtest.c
@@ -69,6 +69,7 @@ grub_usb_get_string (grub_usb_device_t dev, grub_uint8_t
index, int langid,
{
struct grub_usb_desc_str descstr;
struct grub_usb_desc_str *descstrp;
+ grub_uint16_t *strbuf;
grub_usb_err_t err;
/* Only get the length. */
@@ -101,8 +102,18 @@ grub_usb_get_string (grub_usb_device_t dev, grub_uint8_t
index, int langid,
return GRUB_USB_ERR_INTERNAL;
}
- *grub_utf16_to_utf8 ((grub_uint8_t *) *string, descstrp->str,
+ strbuf = grub_malloc (descstrp->length - sizeof (*descstrp));
+ if (!strbuf)
+ {
+ grub_free (*string);
+ grub_free (descstrp);
+ return GRUB_USB_ERR_INTERNAL;
+ }
+
+ grub_memcpy (strbuf, descstrp->str, descstrp->length - sizeof (*descstrp));
+ *grub_utf16_to_utf8 ((grub_uint8_t *) *string, strbuf,
descstrp->length / 2 - 1) = 0;
+ grub_free (strbuf);
grub_free (descstrp);
return GRUB_USB_ERR_NONE;
--
2.16.4
- [PATCH 0/8] fix gcc9 build with -Werror=address-of-packed-member, Michael Chang, 2019/04/09
- [PATCH 3/8] hfs: fix gcc9 error address-of-packed-member, Michael Chang, 2019/04/09
- [PATCH 4/8] hfsplus: fix gcc9 error address-of-packed-member, Michael Chang, 2019/04/09
- [PATCH 6/8] usbtest: fix gcc9 error address-of-packed-member,
Michael Chang <=
- [PATCH 2/8] jfs: fix gcc9 error address-of-packed-member, Michael Chang, 2019/04/09
- [PATCH 1/8] cpio: fix gcc9 error address-of-packed-member, Michael Chang, 2019/04/09
- [PATCH 7/8] chainloader: fix gcc9 error address-of-packed-member, Michael Chang, 2019/04/09
- [PATCH 5/8] acpi: fix gcc9 error address-of-packed-member, Michael Chang, 2019/04/09
- [PATCH 8/8] efi: fix gcc9 error address-of-packed-member, Michael Chang, 2019/04/09
- Re: [PATCH 0/8] fix gcc9 build with -Werror=address-of-packed-member, Vladimir 'phcoder' Serbinenko, 2019/04/09