From a8d4be01f437f811eaa42e58ee8d73efccb1c74b Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Fri, 4 Apr 2025 01:15:19 +0900 Subject: [PATCH] sbsign: rename WIN_CERTIFICATE -> WIN_CERTIFICATE_HEADER and drop trailing flexible array To allow building sbsign with -Werror=flex-array-member-not-at-end. --- src/fundamental/efi-fundamental.h | 5 ++--- src/sbsign/sbsign.c | 8 ++++---- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/fundamental/efi-fundamental.h b/src/fundamental/efi-fundamental.h index de7ae6cd8a4..f72290e1b3f 100644 --- a/src/fundamental/efi-fundamental.h +++ b/src/fundamental/efi-fundamental.h @@ -36,11 +36,10 @@ typedef struct { uint32_t dwLength; uint16_t wRevision; uint16_t wCertificateType; - uint8_t bCertificate[]; -} WIN_CERTIFICATE; +} WIN_CERTIFICATE_HEADER; typedef struct { - WIN_CERTIFICATE Hdr; + WIN_CERTIFICATE_HEADER Hdr; EFI_GUID CertType; uint8_t CertData[]; } WIN_CERTIFICATE_UEFI_GUID; diff --git a/src/sbsign/sbsign.c b/src/sbsign/sbsign.c index b2f0d861ce1..74e05d4b400 100644 --- a/src/sbsign/sbsign.c +++ b/src/sbsign/sbsign.c @@ -669,18 +669,18 @@ static int verb_sign(int argc, char *argv[], void *userdata) { end += n; } - uint32_t certsz = offsetof(WIN_CERTIFICATE, bCertificate) + sigsz; + uint32_t certsz = sizeof(WIN_CERTIFICATE_HEADER) + sigsz; n = pwrite(dstfd, - &(WIN_CERTIFICATE) { + &(WIN_CERTIFICATE_HEADER) { .wRevision = htole16(0x200), .wCertificateType = htole16(0x0002), /* PKCS7 signedData */ .dwLength = htole32(ROUND_UP(certsz, 8)), }, - sizeof(WIN_CERTIFICATE), + sizeof(WIN_CERTIFICATE_HEADER), end); if (n < 0) return log_error_errno(errno, "Failed to write certificate header: %m"); - if (n != sizeof(WIN_CERTIFICATE)) + if (n != sizeof(WIN_CERTIFICATE_HEADER)) return log_error_errno(SYNTHETIC_ERRNO(EIO), "Short write while writing certificate header."); end += n; -- 2.47.3