From 13bb569b751822cbfd58303b2929a081585bca41 Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Tue, 30 May 2023 10:21:26 +0200 Subject: [PATCH 1/4] boot: make Event a standard-conforming flexible array --- src/boot/efi/proto/tcg.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/boot/efi/proto/tcg.h b/src/boot/efi/proto/tcg.h index af6989c854..d8802ae0e3 100644 --- a/src/boot/efi/proto/tcg.h +++ b/src/boot/efi/proto/tcg.h @@ -54,7 +54,7 @@ typedef struct { uint8_t Digest[20]; } Digest; uint32_t EventSize; - uint8_t Event[0]; + uint8_t Event[]; } _packed_ TCG_PCR_EVENT; typedef struct { From 6405afdaf5b87ad378c474820b4222853ddcca26 Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Tue, 30 May 2023 10:30:15 +0200 Subject: [PATCH 2/4] meson: use -Werror=strict-flex-arrays --- meson.build | 1 + 1 file changed, 1 insertion(+) diff --git a/meson.build b/meson.build index 8262f5ff76..c64c4b8ac2 100644 --- a/meson.build +++ b/meson.build @@ -376,6 +376,7 @@ possible_common_cc_flags = [ '-Werror=return-type', '-Werror=shift-count-overflow', '-Werror=shift-overflow=2', + '-Werror=strict-flex-arrays', '-Werror=undef', '-Wfloat-equal', # gperf prevents us from enabling this because it does not emit fallthrough From 4189d009aecc0ba992ea42654e26f68bbd193891 Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Tue, 30 May 2023 09:07:39 +0200 Subject: [PATCH 3/4] ci: add gcc-13, drop gcc-12 --- .github/workflows/build_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_test.yml b/.github/workflows/build_test.yml index ce298e5efe..9284bec988 100644 --- a/.github/workflows/build_test.yml +++ b/.github/workflows/build_test.yml @@ -26,7 +26,7 @@ jobs: matrix: env: - { COMPILER: "gcc", COMPILER_VERSION: "11", LINKER: "bfd", CRYPTOLIB: "gcrypt" } - - { COMPILER: "gcc", COMPILER_VERSION: "12", LINKER: "gold", CRYPTOLIB: "openssl" } + - { COMPILER: "gcc", COMPILER_VERSION: "13", LINKER: "gold", CRYPTOLIB: "openssl" } - { COMPILER: "clang", COMPILER_VERSION: "14", LINKER: "mold", CRYPTOLIB: "gcrypt" } - { COMPILER: "clang", COMPILER_VERSION: "15", LINKER: "lld", CRYPTOLIB: "openssl" } - { COMPILER: "clang", COMPILER_VERSION: "16", LINKER: "bfd", CRYPTOLIB: "auto" } From 241ecd1cc262e186ba1eef79d3cf48d5ddf08c76 Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Tue, 30 May 2023 12:40:19 +0200 Subject: [PATCH 4/4] core,shared: add a couple of asserts To appease the LTO overlords: In file included from ../../../../src/basic/macro.h:446, from ../../../../src/shared/blockdev-util.h:8, from ../../../../src/shared/creds-util.c:11: ../../../../src/shared/creds-util.c: In function 'get_credential_host_secret': ../../../../src/shared/creds-util.c:379:52: error: '%s' directive argument is null [-Werror=format-overflow=] 379 | log_debug_errno(r, "Credential secret %s/%s appeared while we were creating it, rereading.", | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../../../src/basic/log.h:214:86: note: in definition of macro 'log_full_errno_zerook' 214 | ? log_internal(_level, _e, PROJECT_FILE, __LINE__, __func__, __VA_ARGS__) \ | ^~~~~~~~~~~ ../../../../src/basic/log.h:250:41: note: in expansion of macro 'log_full_errno' 250 | #define log_debug_errno(error, ...) log_full_errno(LOG_DEBUG, error, __VA_ARGS__) | ^~~~~~~~~~~~~~ ../../../../src/shared/creds-util.c:379:33: note: in expansion of macro 'log_debug_errno' 379 | log_debug_errno(r, "Credential secret %s/%s appeared while we were creating it, rereading.", | ^~~~~~~~~~~~~~~ ../../../../src/shared/creds-util.c:379:74: note: format string is defined here 379 | log_debug_errno(r, "Credential secret %s/%s appeared while we were creating it, rereading.", | ^~ cc1: some warnings being treated as errors ../../../../src/core/transaction.c: In function 'transaction_verify_order_one': ../../../../src/core/transaction.c:338:38: error: '%s' directive argument is null [-Werror=format-overflow=] 338 | sprintf(ans + size, "%s%s", unit_log_field, *unit_id); | ^~ cc1: some warnings being treated as errors --- src/core/transaction.c | 2 ++ src/shared/creds-util.c | 3 +++ 2 files changed, 5 insertions(+) diff --git a/src/core/transaction.c b/src/core/transaction.c index c3d6ffccc1..65a00bd928 100644 --- a/src/core/transaction.c +++ b/src/core/transaction.c @@ -325,6 +325,8 @@ static char* merge_unit_ids(const char* unit_log_field, char * const* pairs) { _cleanup_free_ char *ans = NULL; size_t size = 0; + assert(unit_log_field); + STRV_FOREACH_PAIR(unit_id, job_type, pairs) { size_t next; diff --git a/src/shared/creds-util.c b/src/shared/creds-util.c index 59f580775d..efc36e2d6d 100644 --- a/src/shared/creds-util.c +++ b/src/shared/creds-util.c @@ -342,6 +342,9 @@ int get_credential_host_secret(CredentialSecretFlags flags, void **ret, size_t * filename = "credential.secret"; } + assert(dirname); + assert(filename); + mkdir_parents(dirname, 0755); dfd = open_mkdir_at(AT_FDCWD, dirname, O_CLOEXEC, 0755); if (dfd < 0)