mirror of
git://slackware.nl/current.git
synced 2025-01-09 05:24:36 +01:00
d23d57452f
a/kernel-generic-4.19.39-x86_64-1.txz: Upgraded. a/kernel-huge-4.19.39-x86_64-1.txz: Upgraded. a/kernel-modules-4.19.39-x86_64-1.txz: Upgraded. d/gcc-9.1.0-x86_64-2.txz: Rebuilt. d/gcc-brig-9.1.0-x86_64-2.txz: Rebuilt. d/gcc-g++-9.1.0-x86_64-2.txz: Rebuilt. d/gcc-gdc-9.1.0-x86_64-2.txz: Added. This package contains the newly added D language support. The other GCC packages were rebuilt without any functional changes. d/gcc-gfortran-9.1.0-x86_64-2.txz: Rebuilt. d/gcc-gnat-9.1.0-x86_64-2.txz: Rebuilt. d/gcc-go-9.1.0-x86_64-2.txz: Rebuilt. d/gcc-objc-9.1.0-x86_64-2.txz: Rebuilt. d/kernel-headers-4.19.39-x86-1.txz: Upgraded. k/kernel-source-4.19.39-noarch-1.txz: Upgraded. l/imagemagick-6.9.10_44-x86_64-1.txz: Upgraded. l/v4l-utils-1.16.6-x86_64-1.txz: Upgraded. n/dhcpcd-7.2.2-x86_64-1.txz: Upgraded. x/vulkan-sdk-1.1.106.0-x86_64-1.txz: Upgraded. isolinux/initrd.img: Rebuilt. kernels/*: Upgraded. usb-and-pxe-installers/usbboot.img: Rebuilt.
56 lines
2.1 KiB
Diff
56 lines
2.1 KiB
Diff
From b98ba8921010d03f46704a476c69861515deb1ca Mon Sep 17 00:00:00 2001
|
|
From: Peter Jones <pjones@redhat.com>
|
|
Date: Mon, 7 Jan 2019 10:30:59 -0500
|
|
Subject: [PATCH] dp.h: make format_guid() handle misaligned guid pointers
|
|
safely.
|
|
|
|
GCC 9 adds -Werror=address-of-packed-member, which causes us to see the
|
|
build error reported at
|
|
https://bugzilla.opensuse.org/show_bug.cgi?id=1120862 .
|
|
|
|
That bug report shows us the following:
|
|
|
|
In file included from dp.c:26:
|
|
dp.h: In function 'format_vendor_helper':
|
|
dp.h:120:37: error: taking address of packed member of 'struct <anonymous>' may result in an unaligned pointer value [-Werror=address-of-packed-member]
|
|
120 | format_guid(buf, size, off, label, &dp->hw_vendor.vendor_guid);
|
|
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
dp.h:74:25: note: in definition of macro 'format_guid'
|
|
74 | _rc = efi_guid_to_str(guid, &_guidstr); \
|
|
| ^~~~
|
|
cc1: all warnings being treated as errors
|
|
|
|
This patch makes format_guid() use a local variable as a bounce buffer
|
|
in the case that the guid we're passed is aligned as chaotic neutral.
|
|
|
|
Note that this only fixes this instance and there may be others that bz
|
|
didn't show because it exited too soon, and I don't have a gcc 9 build
|
|
in front of me right now.
|
|
|
|
Signed-off-by: Peter Jones <pjones@redhat.com>
|
|
---
|
|
src/dp.h | 11 +++++++++--
|
|
1 file changed, 9 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/src/dp.h b/src/dp.h
|
|
index aa4e390..20cb608 100644
|
|
--- a/src/dp.h
|
|
+++ b/src/dp.h
|
|
@@ -70,8 +70,15 @@
|
|
#define format_guid(buf, size, off, dp_type, guid) ({ \
|
|
int _rc; \
|
|
char *_guidstr = NULL; \
|
|
- \
|
|
- _rc = efi_guid_to_str(guid, &_guidstr); \
|
|
+ efi_guid_t _guid; \
|
|
+ const efi_guid_t * const _guid_p = \
|
|
+ likely(__alignof__(guid) == sizeof(guid)) \
|
|
+ ? guid \
|
|
+ : &_guid; \
|
|
+ \
|
|
+ if (unlikely(__alignof__(guid) == sizeof(guid))) \
|
|
+ memmove(&_guid, guid, sizeof(_guid)); \
|
|
+ _rc = efi_guid_to_str(_guid_p, &_guidstr); \
|
|
if (_rc < 0) { \
|
|
efi_error("could not build %s GUID DP string", \
|
|
dp_type); \
|