From 4c0d8d967300fde858f83ec4b361db19e3e257c8 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Mon, 6 Jul 2026 22:08:46 +0900 Subject: [PATCH] tree-wide: embed dlopen notes into individual executables Previously, when a library was dynamically loaded via a helper function inside libsystemd-shared.so, the resulting dlopen ELF note was not propagated to the invoking executable's ELF metadata. This commit explicitly annotates each executable with the relevant dlopen ELF notes for any optional dependencies it might potentially load. This ensures that package managers and build systems can properly discover runtime dependencies that are triggered indirectly. --- src/analyze/analyze.c | 15 +++++++++++++++ src/bless-boot/bless-boot.c | 3 +++ src/bootctl/bootctl.c | 8 ++++++++ src/core/executor.c | 7 +++++++ src/core/main.c | 13 +++++++++++++ src/coredump/coredump.c | 7 +++++++ src/coredump/coredumpctl.c | 8 ++++++++ src/creds/creds.c | 4 ++++ src/cryptenroll/cryptenroll.c | 8 ++++++++ .../cryptsetup-token-systemd-fido2.c | 5 ++++- .../cryptsetup-token-systemd-pkcs11.c | 6 +++++- .../cryptsetup-token-systemd-tpm2.c | 5 ++++- src/cryptsetup/cryptsetup.c | 7 +++++++ src/debug-generator/debug-generator.c | 4 ++++ src/dissect/dissect.c | 8 ++++++++ src/firstboot/firstboot.c | 9 +++++++++ src/fstab-generator/fstab-generator.c | 6 ++++++ src/getty-generator/getty-generator.c | 4 ++++ src/gpt-auto-generator/gpt-auto-generator.c | 5 +++++ src/growfs/growfs.c | 3 +++ src/growfs/makefs.c | 4 ++++ src/home/homectl.c | 7 +++++++ src/home/homed.c | 4 ++++ src/home/homework.c | 7 +++++++ src/hostname/hostnamed.c | 3 +++ src/hwdb/hwdb.c | 3 +++ src/import/export.c | 4 ++++ src/import/import-fs.c | 3 +++ src/import/import-generator.c | 4 ++++ src/import/import.c | 4 ++++ src/import/importd.c | 3 +++ src/import/pull.c | 5 +++++ src/journal-remote/journal-gatewayd.c | 3 +++ src/journal-remote/journal-remote-main.c | 6 ++++++ src/journal-remote/journal-upload.c | 3 +++ src/journal/bsod.c | 4 ++++ src/journal/journalctl.c | 9 +++++++++ src/journal/journald.c | 7 +++++++ src/kernel-install/kernel-install.c | 6 ++++++ src/locale/localed.c | 3 +++ src/login/loginctl.c | 3 +++ src/login/logind.c | 5 +++++ src/login/user-runtime-dir.c | 4 ++++ src/machine-id-setup/machine-id-setup-main.c | 7 +++++++ src/machine/machinectl.c | 4 ++++ src/machine/machined.c | 7 +++++++ src/measure/measure-tool.c | 3 +++ src/modules-load/modules-load.c | 3 +++ src/mount/mount-tool.c | 3 +++ src/mountfsd/mountwork.c | 6 ++++++ src/mstack/mstack-tool.c | 6 ++++++ src/network/generator/network-generator-main.c | 3 +++ src/network/networkctl.c | 4 ++++ src/network/networkd.c | 10 ++++++++++ src/nspawn/meson.build | 4 ++++ src/nspawn/nspawn.c | 9 ++++++++- src/pcrextend/pcrextend.c | 4 ++++ src/pcrlock/pcrlock.c | 5 +++++ src/portable/portabled.c | 5 +++++ src/pstore/pstore.c | 3 +++ src/remount-fs/remount-fs.c | 3 +++ src/repart/repart.c | 3 +++ src/resolve/resolvectl.c | 3 +++ src/resolve/resolved.c | 3 +++ src/shutdown/shutdown.c | 3 +++ src/socket-activate/socket-activate.c | 3 +++ src/ssh-generator/ssh-generator.c | 4 ++++ src/sysext/sysext.c | 4 ++++ src/sysinstall/sysinstall.c | 6 ++++++ src/systemctl/systemctl-main.c | 8 ++++++++ src/sysupdate/sysupdate.c | 6 ++++++ src/sysusers/sysusers.c | 9 +++++++++ src/timedate/timedated.c | 3 +++ src/tmpfiles/tmpfiles.c | 7 +++++++ src/tpm2-setup/tpm2-clear.c | 5 +++++ src/tpm2-setup/tpm2-generator.c | 5 +++++ src/tpm2-setup/tpm2-setup.c | 3 +++ src/tpm2-setup/tpm2-swtpm.c | 3 +++ .../tty-ask-password-agent.c | 3 +++ src/udev/udevadm.c | 5 +++++ src/update-done/update-done.c | 3 +++ src/update-utmp/update-utmp.c | 3 +++ src/user-sessions/user-sessions.c | 3 +++ src/userdb/userdbctl.c | 3 +++ src/veritysetup/veritysetup.c | 3 +++ src/vmspawn/vmspawn.c | 4 ++++ src/volatile-root/volatile-root.c | 3 +++ 87 files changed, 432 insertions(+), 4 deletions(-) diff --git a/src/analyze/analyze.c b/src/analyze/analyze.c index 67a9135767..df41db77ad 100644 --- a/src/analyze/analyze.c +++ b/src/analyze/analyze.c @@ -55,6 +55,7 @@ #include "bus-util.h" #include "calendarspec.h" #include "dissect-image.h" +#include "dlopen-note.h" #include "extract-word.h" #include "format-table.h" #include "help-util.h" @@ -685,6 +686,20 @@ static int run(int argc, char *argv[]) { _cleanup_strv_free_ char **args = NULL; int r; + LIBACL_NOTE(recommended); + LIBAPPARMOR_NOTE(recommended); + LIBAUDIT_NOTE(recommended); + LIBBLKID_NOTE(recommended); + LIBBPF_NOTE(recommended); + LIBCRYPTO_NOTE(suggested); + LIBCRYPTSETUP_NOTE(recommended); + LIBDW_NOTE(suggested); + LIBELF_NOTE(suggested); + LIBMOUNT_NOTE(recommended); + LIBPCRE2_NOTE(suggested); + LIBSELINUX_NOTE(recommended); + TPM2_NOTE(suggested); + setlocale(LC_ALL, ""); setlocale(LC_NUMERIC, "C"); /* we want to format/parse floats in C style */ diff --git a/src/bless-boot/bless-boot.c b/src/bless-boot/bless-boot.c index 4242182ac1..6e31ea72f0 100644 --- a/src/bless-boot/bless-boot.c +++ b/src/bless-boot/bless-boot.c @@ -5,6 +5,7 @@ #include "alloc-util.h" #include "build.h" #include "devnum-util.h" +#include "dlopen-note.h" #include "efivars.h" #include "fd-util.h" #include "find-esp.h" @@ -566,6 +567,8 @@ static int run(int argc, char *argv[]) { char **args = NULL; int r; + LIBBLKID_NOTE(recommended); + log_setup(); r = parse_argv(argc, argv, &args); diff --git a/src/bootctl/bootctl.c b/src/bootctl/bootctl.c index 6e522f01e6..72d96bc1b0 100644 --- a/src/bootctl/bootctl.c +++ b/src/bootctl/bootctl.c @@ -22,6 +22,7 @@ #include "crypto-util.h" #include "devnum-util.h" #include "dissect-image.h" +#include "dlopen-note.h" #include "efi-loader.h" #include "efivars.h" #include "escape.h" @@ -858,6 +859,13 @@ static int run(int argc, char *argv[]) { _cleanup_(umount_and_freep) char *mounted_dir = NULL; int r; + LIBBLKID_NOTE(recommended); + LIBCRYPTSETUP_NOTE(suggested); + LIBMOUNT_NOTE(recommended); + LIBTSS2_ESYS_NOTE(suggested); + LIBTSS2_MU_NOTE(suggested); + LIBTSS2_RC_NOTE(suggested); + log_setup(); char **args = NULL; diff --git a/src/core/executor.c b/src/core/executor.c index e771bdc024..d0cd16aa9a 100644 --- a/src/core/executor.c +++ b/src/core/executor.c @@ -9,6 +9,7 @@ #include "build.h" #include "capability-util.h" #include "cgroup.h" +#include "dlopen-note.h" #include "dynamic-user.h" #include "exec-invoke.h" #include "execute.h" @@ -232,6 +233,12 @@ static int run(int argc, char *argv[]) { int run_executor(int argc, char *argv[]) { int r; + LIBACL_NOTE(recommended); + LIBAPPARMOR_NOTE(recommended); + LIBBLKID_NOTE(recommended); + LIBSELINUX_NOTE(recommended); + TPM2_NOTE(suggested); + /* We use safe_fork() for spawning sd-pam helper process, which internally calls rename_process(). * As the last step of renaming, all saved argvs are memzero()-ed. Hence, we need to save the argv * first to prevent showing "intense" cmdline. See #30352. */ diff --git a/src/core/main.c b/src/core/main.c index a05715dcfc..84e6c75bef 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -41,6 +41,7 @@ #include "dbus.h" #include "dbus-manager.h" #include "dev-setup.h" +#include "dlopen-note.h" #include "efi-random.h" #include "emergency-action.h" #include "env-util.h" @@ -4018,6 +4019,18 @@ finish: } int main(int argc, char *argv[]) { + LIBACL_NOTE(recommended); + LIBAPPARMOR_NOTE(recommended); + LIBAUDIT_NOTE(recommended); + LIBBLKID_NOTE(recommended); + LIBBPF_NOTE(recommended); + LIBCRYPTO_NOTE(suggested); + LIBCRYPTSETUP_NOTE(recommended); + LIBKMOD_NOTE(recommended); + LIBPCRE2_NOTE(suggested); + LIBSECCOMP_NOTE(recommended); + TPM2_NOTE(suggested); + #if SYSTEMD_MULTICALL_BINARY if (invoked_as(argv, "executor")) return run_executor(argc, argv); diff --git a/src/coredump/coredump.c b/src/coredump/coredump.c index 6a758ac277..649756d332 100644 --- a/src/coredump/coredump.c +++ b/src/coredump/coredump.c @@ -6,6 +6,7 @@ #include "coredump-kernel-helper.h" #include "coredump-receive.h" #include "coredump-util.h" +#include "dlopen-note.h" #include "log.h" #include "main-func.h" #include "string-util.h" @@ -13,6 +14,12 @@ static int run(int argc, char *argv[]) { int r; + COMPRESS_DEFAULT_NOTE; + LIBACL_NOTE(recommended); + LIBDW_NOTE(suggested); + LIBELF_NOTE(suggested); + LIBSELINUX_NOTE(recommended); + /* When running as backtrace mode, it is not necessary to use kmsg, not necessary to disable coredump * from the command, and unexpectedly passed file descriptors can be silently ignored. */ if (streq_ptr(argv[1], "--backtrace")) diff --git a/src/coredump/coredumpctl.c b/src/coredump/coredumpctl.c index c13cfa1cce..d69137466b 100644 --- a/src/coredump/coredumpctl.c +++ b/src/coredump/coredumpctl.c @@ -21,6 +21,7 @@ #include "chase.h" #include "compress.h" #include "dissect-image.h" +#include "dlopen-note.h" #include "errno-util.h" #include "escape.h" #include "extract-word.h" @@ -1489,6 +1490,13 @@ static int run(int argc, char *argv[]) { char **args = NULL; int r, units_active; + COMPRESS_DEFAULT_NOTE; + LIBACL_NOTE(recommended); + LIBBLKID_NOTE(recommended); + LIBCRYPTO_NOTE(suggested); + LIBCRYPTSETUP_NOTE(suggested); + LIBMOUNT_NOTE(recommended); + setlocale(LC_ALL, ""); log_setup(); diff --git a/src/creds/creds.c b/src/creds/creds.c index 455b157a02..d559b59e6b 100644 --- a/src/creds/creds.c +++ b/src/creds/creds.c @@ -12,6 +12,7 @@ #include "bus-util.h" #include "creds-util.h" #include "dirent-util.h" +#include "dlopen-note.h" #include "errno-util.h" #include "escape.h" #include "fileio.h" @@ -1467,6 +1468,9 @@ static int vl_server(void) { static int run(int argc, char *argv[]) { int r; + LIBCRYPTO_NOTE(suggested); + TPM2_NOTE(suggested); + log_setup(); char **args = NULL; diff --git a/src/cryptenroll/cryptenroll.c b/src/cryptenroll/cryptenroll.c index 1b5bbc3016..ae70814661 100644 --- a/src/cryptenroll/cryptenroll.c +++ b/src/cryptenroll/cryptenroll.c @@ -21,6 +21,7 @@ #include "cryptenroll-varlink.h" #include "cryptenroll-wipe.h" #include "cryptsetup-util.h" +#include "dlopen-note.h" #include "extract-word.h" #include "format-table.h" #include "help-util.h" @@ -1019,6 +1020,13 @@ static int run(int argc, char *argv[]) { _cleanup_(enroll_context_done) EnrollContext c = ENROLL_CONTEXT_NULL; int slot, r; + LIBCRYPTO_NOTE(suggested); + LIBFIDO2_NOTE(suggested); + LIBP11KIT_NOTE(suggested); + LIBQRENCODE_NOTE(suggested); + PASSWORD_NOTE(suggested); + TPM2_NOTE(suggested); + log_setup(); /* A delicious drop of snake oil */ diff --git a/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-fido2.c b/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-fido2.c index 800b297ae8..93be8dcb3c 100644 --- a/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-fido2.c +++ b/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-fido2.c @@ -8,6 +8,7 @@ #include "alloc-util.h" #include "cryptsetup-token.h" #include "cryptsetup-token-util.h" +#include "dlopen-note.h" #include "luks2-fido2.h" #include "memory-util.h" #include "version.h" @@ -17,7 +18,9 @@ #define TOKEN_VERSION_MINOR "0" /* for libcryptsetup debug purpose */ -_public_ const char *cryptsetup_token_version(void) { +_public_ const char* cryptsetup_token_version(void) { + LIBFIDO2_NOTE(suggested); + return TOKEN_VERSION_MAJOR "." TOKEN_VERSION_MINOR " systemd-v" PROJECT_VERSION_FULL " (" GIT_VERSION ")"; } diff --git a/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-pkcs11.c b/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-pkcs11.c index 483686f671..3c55866fb2 100644 --- a/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-pkcs11.c +++ b/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-pkcs11.c @@ -7,6 +7,7 @@ #include "alloc-util.h" #include "cryptsetup-token.h" #include "cryptsetup-token-util.h" +#include "dlopen-note.h" #include "luks2-pkcs11.h" #include "memory-util.h" #include "pkcs11-util.h" @@ -17,7 +18,10 @@ #define TOKEN_VERSION_MINOR "0" /* for libcryptsetup debug purpose */ -_public_ const char *cryptsetup_token_version(void) { +_public_ const char* cryptsetup_token_version(void) { + LIBCRYPTO_NOTE(suggested); + LIBP11KIT_NOTE(suggested); + return TOKEN_VERSION_MAJOR "." TOKEN_VERSION_MINOR " systemd-v" PROJECT_VERSION_FULL " (" GIT_VERSION ")"; } diff --git a/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-tpm2.c b/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-tpm2.c index dd1cb77d8c..dc67ebeb7a 100644 --- a/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-tpm2.c +++ b/src/cryptsetup/cryptsetup-tokens/cryptsetup-token-systemd-tpm2.c @@ -5,6 +5,7 @@ #include "alloc-util.h" #include "cryptsetup-token.h" #include "cryptsetup-token-util.h" +#include "dlopen-note.h" #include "hexdecoct.h" #include "json-util.h" #include "luks2-tpm2.h" @@ -18,7 +19,9 @@ #define TOKEN_VERSION_MINOR "0" /* for libcryptsetup debug purpose */ -_public_ const char *cryptsetup_token_version(void) { +_public_ const char* cryptsetup_token_version(void) { + LIBCRYPTO_NOTE(suggested); + TPM2_NOTE(suggested); return TOKEN_VERSION_MAJOR "." TOKEN_VERSION_MINOR " systemd-v" PROJECT_VERSION_FULL " (" GIT_VERSION ")"; } diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c index 9be25d004d..db34b7e974 100644 --- a/src/cryptsetup/cryptsetup.c +++ b/src/cryptsetup/cryptsetup.c @@ -18,6 +18,7 @@ #include "cryptsetup-pkcs11.h" #include "cryptsetup-tpm2.h" #include "cryptsetup-util.h" +#include "dlopen-note.h" #include "efi-api.h" #include "efi-loader.h" #include "efivars.h" @@ -2884,6 +2885,12 @@ static int verb_detach(int argc, char *argv[], uintptr_t _data, void *userdata) static int run(int argc, char *argv[]) { int r; + LIBBLKID_NOTE(recommended); + LIBFIDO2_NOTE(suggested); + LIBMOUNT_NOTE(recommended); + LIBP11KIT_NOTE(suggested); + TPM2_NOTE(suggested); + log_setup(); umask(0022); diff --git a/src/debug-generator/debug-generator.c b/src/debug-generator/debug-generator.c index 700ad52893..c0c799b06f 100644 --- a/src/debug-generator/debug-generator.c +++ b/src/debug-generator/debug-generator.c @@ -5,6 +5,7 @@ #include "alloc-util.h" #include "bitfield.h" #include "creds-util.h" +#include "dlopen-note.h" #include "dropin.h" #include "errno-util.h" #include "extract-word.h" @@ -364,6 +365,9 @@ static int run(const char *dest, const char *dest_early, const char *dest_late) const char *credentials_dir; int r; + LIBCRYPTO_NOTE(suggested); + TPM2_NOTE(suggested); + assert_se(arg_dest = dest_early); r = proc_cmdline_parse(parse_proc_cmdline_item, NULL, PROC_CMDLINE_RD_STRICT | PROC_CMDLINE_STRIP_RD_PREFIX); diff --git a/src/dissect/dissect.c b/src/dissect/dissect.c index e3db8470b6..352d7ffa91 100644 --- a/src/dissect/dissect.c +++ b/src/dissect/dissect.c @@ -19,6 +19,7 @@ #include "device-util.h" #include "discover-image.h" #include "dissect-image.h" +#include "dlopen-note.h" #include "env-util.h" #include "errno-util.h" #include "escape.h" @@ -1968,6 +1969,13 @@ static int run(int argc, char *argv[]) { _cleanup_close_ int userns_fd = -EBADF; int r; + LIBACL_NOTE(recommended); + LIBBLKID_NOTE(recommended); + LIBCRYPTO_NOTE(suggested); + LIBCRYPTSETUP_NOTE(suggested); + LIBMOUNT_NOTE(recommended); + LIBSELINUX_NOTE(recommended); + log_setup(); if (invoked_as(argv, "mount.ddi")) diff --git a/src/firstboot/firstboot.c b/src/firstboot/firstboot.c index e81923beb5..55b4f922c1 100644 --- a/src/firstboot/firstboot.c +++ b/src/firstboot/firstboot.c @@ -20,6 +20,7 @@ #include "copy.h" #include "creds-util.h" #include "dissect-image.h" +#include "dlopen-note.h" #include "env-file.h" #include "errno-util.h" #include "fd-util.h" @@ -1702,6 +1703,14 @@ static int run(int argc, char *argv[]) { _cleanup_close_ int rfd = -EBADF; int r; + LIBBLKID_NOTE(recommended); + LIBCRYPT_NOTE(recommended); + LIBCRYPTO_NOTE(suggested); + LIBCRYPTSETUP_NOTE(suggested); + LIBMOUNT_NOTE(recommended); + LIBSELINUX_NOTE(recommended); + PASSWORD_NOTE(suggested); + r = parse_argv(argc, argv); if (r <= 0) return r; diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index 3a5ce47691..b723868f51 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -14,6 +14,7 @@ #include "bus-util.h" #include "chase.h" #include "creds-util.h" +#include "dlopen-note.h" #include "efi-loader.h" #include "env-util.h" #include "errno-util.h" @@ -1729,6 +1730,11 @@ static int run_generator(void) { } static int run(int argc, char **argv) { + LIBCRYPTO_NOTE(suggested); + LIBMOUNT_NOTE(recommended); + LIBSELINUX_NOTE(recommended); + TPM2_NOTE(suggested); + arg_sysroot_check = invoked_as(argv, "systemd-sysroot-fstab-check"); if (arg_sysroot_check) { diff --git a/src/getty-generator/getty-generator.c b/src/getty-generator/getty-generator.c index 69ef0aae04..62e0735dd7 100644 --- a/src/getty-generator/getty-generator.c +++ b/src/getty-generator/getty-generator.c @@ -5,6 +5,7 @@ #include "alloc-util.h" #include "creds-util.h" +#include "dlopen-note.h" #include "extract-word.h" #include "fd-util.h" #include "fileio.h" @@ -277,6 +278,9 @@ static int run(const char *dest, const char *dest_early, const char *dest_late) assert_se(arg_dest = dest); + LIBCRYPTO_NOTE(suggested); + TPM2_NOTE(suggested); + if (in_initrd()) { log_debug("Skipping generator, running in the initrd."); return EXIT_SUCCESS; diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c index b92ac8f66a..5305957bd9 100644 --- a/src/gpt-auto-generator/gpt-auto-generator.c +++ b/src/gpt-auto-generator/gpt-auto-generator.c @@ -9,6 +9,7 @@ #include "device-util.h" #include "devnum-util.h" #include "dissect-image.h" +#include "dlopen-note.h" #include "dropin.h" #include "efi-loader.h" #include "efivars.h" @@ -1359,6 +1360,10 @@ static int parse_proc_cmdline_item(const char *key, const char *value, void *dat static int run(const char *dest, const char *dest_early, const char *dest_late) { int r; + LIBBLKID_NOTE(recommended); + LIBMOUNT_NOTE(recommended); + LIBSELINUX_NOTE(recommended); + assert_se(arg_dest = dest); assert_se(arg_dest_late = dest_late); diff --git a/src/growfs/growfs.c b/src/growfs/growfs.c index f54266a110..e9b34529b5 100644 --- a/src/growfs/growfs.c +++ b/src/growfs/growfs.c @@ -11,6 +11,7 @@ #include "device-util.h" #include "devnum-util.h" #include "dissect-image.h" +#include "dlopen-note.h" #include "fd-util.h" #include "format-table.h" #include "format-util.h" @@ -192,6 +193,8 @@ static int run(int argc, char *argv[]) { dev_t devno; int r; + LIBBLKID_NOTE(recommended); + log_setup(); r = parse_argv(argc, argv); diff --git a/src/growfs/makefs.c b/src/growfs/makefs.c index 3747bc0ee2..26d3f5a4bf 100644 --- a/src/growfs/makefs.c +++ b/src/growfs/makefs.c @@ -7,6 +7,7 @@ #include "alloc-util.h" #include "blockdev-util.h" #include "dissect-image.h" +#include "dlopen-note.h" #include "fd-util.h" #include "log.h" #include "main-func.h" @@ -20,6 +21,9 @@ static int run(int argc, char *argv[]) { struct stat st; int r; + LIBBLKID_NOTE(recommended); + LIBMOUNT_NOTE(recommended); + log_setup(); if (argc != 3) diff --git a/src/home/homectl.c b/src/home/homectl.c index 84e3ea1205..f4be3c0e70 100644 --- a/src/home/homectl.c +++ b/src/home/homectl.c @@ -19,6 +19,7 @@ #include "creds-util.h" #include "crypto-util.h" #include "dirent-util.h" +#include "dlopen-note.h" #include "dns-domain.h" #include "env-util.h" #include "errno-util.h" @@ -5183,6 +5184,12 @@ static int run(int argc, char *argv[]) { char **args = NULL; int r; + LIBCRYPT_NOTE(recommended); + LIBFIDO2_NOTE(suggested); + LIBP11KIT_NOTE(suggested); + LIBQRENCODE_NOTE(suggested); + PASSWORD_NOTE(suggested); + log_setup(); r = redirect_bus_mgr(); diff --git a/src/home/homed.c b/src/home/homed.c index 753aa95eb3..fc573c5f78 100644 --- a/src/home/homed.c +++ b/src/home/homed.c @@ -7,6 +7,7 @@ #include "bus-log-control-api.h" #include "bus-object.h" #include "daemon-util.h" +#include "dlopen-note.h" #include "homed-manager.h" #include "homed-manager-bus.h" #include "log.h" @@ -18,6 +19,9 @@ static int run(int argc, char *argv[]) { _unused_ _cleanup_(notify_on_cleanup) const char *notify_stop = NULL; int r; + LIBCRYPT_NOTE(recommended); + PASSWORD_NOTE(suggested); + log_setup(); r = service_parse_argv("systemd-homed.service", diff --git a/src/home/homework.c b/src/home/homework.c index 81775e8872..7e48f01206 100644 --- a/src/home/homework.c +++ b/src/home/homework.c @@ -13,6 +13,7 @@ #include "chown-recursive.h" #include "copy.h" #include "cryptsetup-util.h" +#include "dlopen-note.h" #include "env-util.h" #include "errno-util.h" #include "fd-util.h" @@ -1998,6 +1999,12 @@ static int run(int argc, char *argv[]) { sd_json_variant *fdmap, *blob_fd_variant; int r; + LIBCRYPT_NOTE(recommended); + LIBFIDO2_NOTE(suggested); + LIBMOUNT_NOTE(recommended); + LIBP11KIT_NOTE(suggested); + LIBSELINUX_NOTE(recommended); + start = now(CLOCK_MONOTONIC); log_setup(); diff --git a/src/hostname/hostnamed.c b/src/hostname/hostnamed.c index 99de3f23f6..98ade098a7 100644 --- a/src/hostname/hostnamed.c +++ b/src/hostname/hostnamed.c @@ -22,6 +22,7 @@ #include "daemon-util.h" #include "device-private.h" #include "device-util.h" +#include "dlopen-note.h" #include "env-file.h" #include "env-util.h" #include "extract-word.h" @@ -2659,6 +2660,8 @@ static int run(int argc, char *argv[]) { }; int r; + LIBSELINUX_NOTE(recommended); + log_setup(); r = service_parse_argv("systemd-hostnamed.service", diff --git a/src/hwdb/hwdb.c b/src/hwdb/hwdb.c index 4d2d6fe8c4..c172153bc2 100644 --- a/src/hwdb/hwdb.c +++ b/src/hwdb/hwdb.c @@ -2,6 +2,7 @@ #include "alloc-util.h" #include "build.h" +#include "dlopen-note.h" #include "format-table.h" #include "hwdb-util.h" #include "label-util.h" @@ -114,6 +115,8 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { static int run(int argc, char *argv[]) { int r; + LIBSELINUX_NOTE(recommended); + log_setup(); char **args = NULL; diff --git a/src/import/export.c b/src/import/export.c index 0b6d27b9ff..2e1576c467 100644 --- a/src/import/export.c +++ b/src/import/export.c @@ -9,6 +9,7 @@ #include "ansi-color.h" #include "build.h" #include "discover-image.h" +#include "dlopen-note.h" #include "export-raw.h" #include "export-tar.h" #include "fd-util.h" @@ -282,6 +283,9 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { static int run(int argc, char *argv[]) { int r; + ARCHIVE_NOTE(recommended); + LIBSELINUX_NOTE(recommended); + setlocale(LC_ALL, ""); log_setup(); diff --git a/src/import/import-fs.c b/src/import/import-fs.c index dcb0f8c511..fd54faefc0 100644 --- a/src/import/import-fs.c +++ b/src/import/import-fs.c @@ -9,6 +9,7 @@ #include "build.h" #include "copy.h" #include "discover-image.h" +#include "dlopen-note.h" #include "fd-util.h" #include "format-table.h" #include "format-util.h" @@ -392,6 +393,8 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { static int run(int argc, char *argv[]) { int r; + LIBSELINUX_NOTE(recommended); + setlocale(LC_ALL, ""); log_setup(); diff --git a/src/import/import-generator.c b/src/import/import-generator.c index f176492a54..46b605b995 100644 --- a/src/import/import-generator.c +++ b/src/import/import-generator.c @@ -5,6 +5,7 @@ #include "alloc-util.h" #include "creds-util.h" #include "discover-image.h" +#include "dlopen-note.h" #include "efivars.h" #include "errno-util.h" #include "extract-word.h" @@ -426,6 +427,9 @@ static int generate(void) { static int run(const char *dest, const char *dest_early, const char *dest_late) { int r; + LIBCRYPTO_NOTE(suggested); + TPM2_NOTE(suggested); + assert_se(arg_dest = dest); r = proc_cmdline_parse(parse_proc_cmdline_item, NULL, PROC_CMDLINE_RD_STRICT|PROC_CMDLINE_STRIP_RD_PREFIX); diff --git a/src/import/import.c b/src/import/import.c index 18276fa72d..782557a221 100644 --- a/src/import/import.c +++ b/src/import/import.c @@ -9,6 +9,7 @@ #include "ansi-color.h" #include "build.h" #include "discover-image.h" +#include "dlopen-note.h" #include "env-util.h" #include "fd-util.h" #include "format-table.h" @@ -469,6 +470,9 @@ static void parse_env(void) { static int run(int argc, char *argv[]) { int r; + ARCHIVE_NOTE(recommended); + LIBSELINUX_NOTE(recommended); + setlocale(LC_ALL, ""); log_setup(); diff --git a/src/import/importd.c b/src/import/importd.c index c329491386..5220b3ba03 100644 --- a/src/import/importd.c +++ b/src/import/importd.c @@ -19,6 +19,7 @@ #include "constants.h" #include "daemon-util.h" #include "discover-image.h" +#include "dlopen-note.h" #include "env-util.h" #include "event-util.h" #include "fd-util.h" @@ -2081,6 +2082,8 @@ static int run(int argc, char *argv[]) { RuntimeScope scope = RUNTIME_SCOPE_SYSTEM; int r; + LIBSELINUX_NOTE(recommended); + log_setup(); r = service_parse_argv("systemd-importd.service", diff --git a/src/import/pull.c b/src/import/pull.c index 09294bc6fc..7fe3a7e4dd 100644 --- a/src/import/pull.c +++ b/src/import/pull.c @@ -9,6 +9,7 @@ #include "ansi-color.h" #include "build.h" #include "discover-image.h" +#include "dlopen-note.h" #include "env-util.h" #include "format-table.h" #include "hexdecoct.h" @@ -608,6 +609,10 @@ static void parse_env(void) { static int run(int argc, char *argv[]) { int r; + ARCHIVE_NOTE(recommended); + LIBCURL_NOTE(suggested); + LIBSELINUX_NOTE(recommended); + setlocale(LC_ALL, ""); log_setup(); diff --git a/src/journal-remote/journal-gatewayd.c b/src/journal-remote/journal-gatewayd.c index a6ef7c77fa..9def4a3bc9 100644 --- a/src/journal-remote/journal-gatewayd.c +++ b/src/journal-remote/journal-gatewayd.c @@ -1259,6 +1259,9 @@ static int run(int argc, char *argv[]) { MHD_USE_THREAD_PER_CONNECTION; int r, n; + COMPRESS_DEFAULT_NOTE; + LIBGNUTLS_NOTE(suggested); + log_setup(); r = parse_argv(argc, argv); diff --git a/src/journal-remote/journal-remote-main.c b/src/journal-remote/journal-remote-main.c index ff283a2ea5..504471fc8a 100644 --- a/src/journal-remote/journal-remote-main.c +++ b/src/journal-remote/journal-remote-main.c @@ -9,6 +9,7 @@ #include "build.h" #include "conf-parser.h" #include "daemon-util.h" +#include "dlopen-note.h" #include "extract-word.h" #include "fd-util.h" #include "format-table.h" @@ -1165,6 +1166,11 @@ static int run(int argc, char **argv) { _cleanup_free_ char *cert = NULL, *trust = NULL; int r; + COMPRESS_DEFAULT_NOTE; + LIBCRYPTO_NOTE(suggested); + LIBGNUTLS_NOTE(suggested); + LIBSELINUX_NOTE(recommended); + log_setup(); journal_auth_init(); diff --git a/src/journal-remote/journal-upload.c b/src/journal-remote/journal-upload.c index a24f577c89..48a8df559e 100644 --- a/src/journal-remote/journal-upload.c +++ b/src/journal-remote/journal-upload.c @@ -12,6 +12,7 @@ #include "conf-parser.h" #include "curl-util.h" #include "daemon-util.h" +#include "dlopen-note.h" #include "env-file.h" #include "extract-word.h" #include "fd-util.h" @@ -869,6 +870,8 @@ static int run(int argc, char **argv) { bool use_journal; int r; + COMPRESS_DEFAULT_NOTE; + log_setup(); r = parse_config(); diff --git a/src/journal/bsod.c b/src/journal/bsod.c index e380e08b1c..9a9067088c 100644 --- a/src/journal/bsod.c +++ b/src/journal/bsod.c @@ -8,6 +8,7 @@ #include "alloc-util.h" #include "build.h" +#include "dlopen-note.h" #include "fd-util.h" #include "fileio.h" #include "format-table.h" @@ -287,6 +288,9 @@ static int run(int argc, char *argv[]) { _cleanup_free_ char *message = NULL; int r; + COMPRESS_DEFAULT_NOTE; + LIBQRENCODE_NOTE(suggested); + log_setup(); r = parse_argv(argc, argv); diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index 71f4f717f4..bb5b376a93 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -7,6 +7,7 @@ #include "build.h" #include "dissect-image.h" +#include "dlopen-note.h" #include "extract-word.h" #include "format-table.h" #include "glob-util.h" @@ -1021,6 +1022,14 @@ static int run(int argc, char *argv[]) { _cleanup_strv_free_ char **args = NULL; int r; + COMPRESS_DEFAULT_NOTE; + LIBACL_NOTE(recommended); + LIBBLKID_NOTE(recommended); + LIBCRYPTSETUP_NOTE(suggested); + LIBMOUNT_NOTE(recommended); + LIBPCRE2_NOTE(suggested); + LIBQRENCODE_NOTE(suggested); + setlocale(LC_ALL, ""); log_setup(); diff --git a/src/journal/journald.c b/src/journal/journald.c index 91f02178f5..3cab48f6b7 100644 --- a/src/journal/journald.c +++ b/src/journal/journald.c @@ -6,6 +6,7 @@ #include "sd-event.h" #include "sd-messages.h" +#include "dlopen-note.h" #include "format-util.h" #include "journal-authenticate.h" #include "journald-kmsg.h" @@ -25,6 +26,12 @@ static int run(int argc, char *argv[]) { LogTarget log_target; int r; + COMPRESS_DEFAULT_NOTE; + LIBACL_NOTE(recommended); + LIBCRYPTO_NOTE(suggested); + LIBPCRE2_NOTE(suggested); + LIBSELINUX_NOTE(recommended); + if (argc > 2) return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "This program takes one or no arguments."); diff --git a/src/kernel-install/kernel-install.c b/src/kernel-install/kernel-install.c index 132ae803df..69fdbcfc34 100644 --- a/src/kernel-install/kernel-install.c +++ b/src/kernel-install/kernel-install.c @@ -12,6 +12,7 @@ #include "chase.h" #include "conf-files.h" #include "dissect-image.h" +#include "dlopen-note.h" #include "env-file.h" #include "env-util.h" #include "exec-util.h" @@ -1664,6 +1665,11 @@ static int parse_argv(int argc, char *argv[], char ***remaining_args) { static int run(int argc, char* argv[]) { int r; + LIBBLKID_NOTE(recommended); + LIBCRYPTO_NOTE(suggested); + LIBCRYPTSETUP_NOTE(suggested); + LIBMOUNT_NOTE(recommended); + log_setup(); char **args = NULL; diff --git a/src/locale/localed.c b/src/locale/localed.c index 4296db6f2f..a6ff82ffbc 100644 --- a/src/locale/localed.c +++ b/src/locale/localed.c @@ -15,6 +15,7 @@ #include "bus-util.h" #include "constants.h" #include "daemon-util.h" +#include "dlopen-note.h" #include "hashmap.h" #include "label-util.h" #include "localed-util.h" @@ -632,6 +633,8 @@ static int run(int argc, char *argv[]) { _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; int r; + LIBSELINUX_NOTE(recommended); + log_setup(); r = service_parse_argv("systemd-localed.service", diff --git a/src/login/loginctl.c b/src/login/loginctl.c index 19ee4c5b75..be67025421 100644 --- a/src/login/loginctl.c +++ b/src/login/loginctl.c @@ -17,6 +17,7 @@ #include "bus-util.h" #include "cgroup-show.h" #include "cgroup-util.h" +#include "dlopen-note.h" #include "format-table.h" #include "format-util.h" #include "help-util.h" @@ -1661,6 +1662,8 @@ static int run(int argc, char *argv[]) { char **args = NULL; int r; + COMPRESS_DEFAULT_NOTE; + setlocale(LC_ALL, ""); log_setup(); diff --git a/src/login/logind.c b/src/login/logind.c index fb8e841b9d..9fcf57ab91 100644 --- a/src/login/logind.c +++ b/src/login/logind.c @@ -17,6 +17,7 @@ #include "device-util.h" #include "devnum-util.h" #include "dirent-util.h" +#include "dlopen-note.h" #include "errno-util.h" #include "escape.h" #include "fd-util.h" @@ -1351,6 +1352,10 @@ static int run(int argc, char *argv[]) { _unused_ _cleanup_(notify_on_cleanup) const char *notify_message = NULL; int r; + LIBACL_NOTE(recommended); + LIBBLKID_NOTE(recommended); + LIBSELINUX_NOTE(recommended); + log_set_facility(LOG_AUTH); log_setup(); diff --git a/src/login/user-runtime-dir.c b/src/login/user-runtime-dir.c index bc522bcbca..728b15f4d3 100644 --- a/src/login/user-runtime-dir.c +++ b/src/login/user-runtime-dir.c @@ -8,6 +8,7 @@ #include "bus-error.h" #include "bus-locator.h" #include "devnum-util.h" +#include "dlopen-note.h" #include "errno-util.h" #include "fd-util.h" #include "format-util.h" @@ -327,6 +328,9 @@ static int do_tmpfs_quota(UserRecord *ur) { static int run(int argc, char *argv[]) { int r; + LIBMOUNT_NOTE(recommended); + LIBSELINUX_NOTE(recommended); + log_setup(); if (argc != 3) diff --git a/src/machine-id-setup/machine-id-setup-main.c b/src/machine-id-setup/machine-id-setup-main.c index 2363427b5f..1eb372be64 100644 --- a/src/machine-id-setup/machine-id-setup-main.c +++ b/src/machine-id-setup/machine-id-setup-main.c @@ -5,6 +5,7 @@ #include "alloc-util.h" #include "build.h" #include "dissect-image.h" +#include "dlopen-note.h" #include "format-table.h" #include "id128-util.h" #include "image-policy.h" @@ -131,6 +132,12 @@ static int run(int argc, char *argv[]) { _cleanup_(umount_and_freep) char *mounted_dir = NULL; int r; + LIBBLKID_NOTE(recommended); + LIBCRYPTO_NOTE(suggested); + LIBCRYPTSETUP_NOTE(suggested); + LIBMOUNT_NOTE(recommended); + TPM2_NOTE(suggested); + log_setup(); r = parse_argv(argc, argv); diff --git a/src/machine/machinectl.c b/src/machine/machinectl.c index b0efb6ec02..dc2381fc84 100644 --- a/src/machine/machinectl.c +++ b/src/machine/machinectl.c @@ -26,6 +26,7 @@ #include "bus-wait-for-jobs.h" #include "cgroup-show.h" #include "cgroup-util.h" +#include "dlopen-note.h" #include "edit-util.h" #include "env-util.h" #include "fd-util.h" @@ -2634,6 +2635,9 @@ static int run(int argc, char *argv[]) { _cleanup_strv_free_ char **args = NULL; int r; + COMPRESS_DEFAULT_NOTE; + LIBSELINUX_NOTE(recommended); + setlocale(LC_ALL, ""); log_setup(); diff --git a/src/machine/machined.c b/src/machine/machined.c index 954e260692..47b7650caf 100644 --- a/src/machine/machined.c +++ b/src/machine/machined.c @@ -16,6 +16,7 @@ #include "constants.h" #include "daemon-util.h" #include "dirent-util.h" +#include "dlopen-note.h" #include "errno-util.h" #include "fd-util.h" #include "hash-funcs.h" @@ -347,6 +348,12 @@ static int run(int argc, char *argv[]) { RuntimeScope scope = RUNTIME_SCOPE_SYSTEM; int r; + LIBBLKID_NOTE(recommended); + LIBCRYPTO_NOTE(suggested); + LIBCRYPTSETUP_NOTE(suggested); + LIBMOUNT_NOTE(recommended); + LIBSELINUX_NOTE(recommended); + log_set_facility(LOG_AUTH); log_setup(); diff --git a/src/measure/measure-tool.c b/src/measure/measure-tool.c index 893fd4e593..b224f95b35 100644 --- a/src/measure/measure-tool.c +++ b/src/measure/measure-tool.c @@ -8,6 +8,7 @@ #include "ask-password-api.h" #include "build.h" #include "crypto-util.h" +#include "dlopen-note.h" #include "efi-loader.h" #include "efivars.h" #include "fd-util.h" @@ -1130,6 +1131,8 @@ static int verb_policy_digest(int argc, char *argv[], uintptr_t _data, void *use static int run(int argc, char *argv[]) { int r; + TPM2_NOTE(suggested); + log_setup(); char **args = NULL; diff --git a/src/modules-load/modules-load.c b/src/modules-load/modules-load.c index eb58b70c7b..85452f62a5 100644 --- a/src/modules-load/modules-load.c +++ b/src/modules-load/modules-load.c @@ -12,6 +12,7 @@ #include "conf-files.h" #include "constants.h" #include "cpu-set-util.h" +#include "dlopen-note.h" #include "errno-util.h" #include "fd-util.h" #include "fileio.h" @@ -390,6 +391,8 @@ static int run(int argc, char *argv[]) { char *module; int ret = 0, r; + LIBKMOD_NOTE(required); + char **args = NULL; r = parse_argv(argc, argv, &args); if (r <= 0) diff --git a/src/mount/mount-tool.c b/src/mount/mount-tool.c index c35769e56a..58b689190d 100644 --- a/src/mount/mount-tool.c +++ b/src/mount/mount-tool.c @@ -14,6 +14,7 @@ #include "chase.h" #include "device-private.h" #include "device-util.h" +#include "dlopen-note.h" #include "errno-util.h" #include "escape.h" #include "fd-util.h" @@ -1479,6 +1480,8 @@ static int run(int argc, char* argv[]) { char **args = NULL; int r; + LIBMOUNT_NOTE(recommended); + log_setup(); r = parse_argv(argc, argv, &args); diff --git a/src/mountfsd/mountwork.c b/src/mountfsd/mountwork.c index 4cd4e4abdd..af84ace1eb 100644 --- a/src/mountfsd/mountwork.c +++ b/src/mountfsd/mountwork.c @@ -15,6 +15,7 @@ #include "chase.h" #include "discover-image.h" #include "dissect-image.h" +#include "dlopen-note.h" #include "env-util.h" #include "errno-util.h" #include "escape.h" @@ -1489,6 +1490,11 @@ static int run(int argc, char *argv[]) { unsigned n_iterations = 0; int m, listen_fd, r; + LIBBLKID_NOTE(recommended); + LIBCRYPTO_NOTE(suggested); + LIBCRYPTSETUP_NOTE(suggested); + LIBMOUNT_NOTE(recommended); + log_setup(); m = sd_listen_fds(false); diff --git a/src/mstack/mstack-tool.c b/src/mstack/mstack-tool.c index 244e7dc682..45c699d574 100644 --- a/src/mstack/mstack-tool.c +++ b/src/mstack/mstack-tool.c @@ -6,6 +6,7 @@ #include "argv-util.h" #include "build.h" #include "chase.h" +#include "dlopen-note.h" #include "errno-util.h" #include "extract-word.h" #include "fd-util.h" @@ -376,6 +377,11 @@ static int umount_mstack(void) { static int run(int argc, char *argv[]) { int r; + LIBBLKID_NOTE(recommended); + LIBCRYPTO_NOTE(suggested); + LIBCRYPTSETUP_NOTE(suggested); + LIBMOUNT_NOTE(recommended); + log_setup(); if (invoked_as(argv, "mount.mstack")) diff --git a/src/network/generator/network-generator-main.c b/src/network/generator/network-generator-main.c index df9ce9265d..ae15dff2b1 100644 --- a/src/network/generator/network-generator-main.c +++ b/src/network/generator/network-generator-main.c @@ -5,6 +5,7 @@ #include "alloc-util.h" #include "build.h" #include "creds-util.h" +#include "dlopen-note.h" #include "errno-util.h" #include "fd-util.h" #include "format-table.h" @@ -197,6 +198,8 @@ static int run(int argc, char *argv[]) { _cleanup_(context_clear) Context context = {}; int r, ret = 0; + LIBSELINUX_NOTE(recommended); + log_setup(); umask(0022); diff --git a/src/network/networkctl.c b/src/network/networkctl.c index bf74f10a4a..f85c74b6af 100644 --- a/src/network/networkctl.c +++ b/src/network/networkctl.c @@ -4,6 +4,7 @@ #include "alloc-util.h" #include "build.h" +#include "dlopen-note.h" #include "format-table.h" #include "help-util.h" #include "log.h" @@ -208,6 +209,9 @@ static int run(int argc, char* argv[]) { char **args = NULL; int r; + COMPRESS_DEFAULT_NOTE; + LIBSELINUX_NOTE(recommended); + log_setup(); r = parse_argv(argc, argv, &args); diff --git a/src/network/networkd.c b/src/network/networkd.c index 230339ba0c..9415c09025 100644 --- a/src/network/networkd.c +++ b/src/network/networkd.c @@ -9,6 +9,7 @@ #include "bus-object.h" #include "capability-util.h" #include "daemon-util.h" +#include "dlopen-note.h" #include "main-func.h" #include "mkdir.h" #include "networkd-conf.h" @@ -24,6 +25,15 @@ static int run(int argc, char *argv[]) { _unused_ _cleanup_(notify_on_cleanup) const char *notify_message = NULL; int r; + LIBAPPARMOR_NOTE(recommended); + LIBAUDIT_NOTE(recommended); + LIBIDN2_NOTE(suggested); + LIBMOUNT_NOTE(recommended); + LIBSELINUX_NOTE(recommended); + LIBTSS2_ESYS_NOTE(suggested); + LIBTSS2_MU_NOTE(suggested); + LIBTSS2_RC_NOTE(suggested); + log_setup(); r = service_parse_argv("systemd-networkd.service", diff --git a/src/nspawn/meson.build b/src/nspawn/meson.build index ddf859c63d..366cec23f6 100644 --- a/src/nspawn/meson.build +++ b/src/nspawn/meson.build @@ -47,7 +47,11 @@ executables += [ executable_template['include_directories'], ], 'dependencies' : [ + libacl_cflags, + libblkid_cflags, + libcryptsetup_cflags, libmount_cflags, + libopenssl_cflags, libseccomp_cflags, libselinux_cflags, ], diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index c4dfc9584e..f4d85c0418 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -20,9 +20,11 @@ #include "sd-path.h" #include "sd-varlink.h" +#include "acl-util.h" #include "alloc-util.h" #include "barrier.h" #include "base-filesystem.h" +#include "blkid-util.h" #include "btrfs-util.h" #include "build.h" #include "bus-error.h" @@ -36,12 +38,13 @@ #include "constants.h" #include "copy.h" #include "cpu-set-util.h" +#include "crypto-util.h" +#include "cryptsetup-util.h" #include "daemon-util.h" #include "dev-setup.h" #include "devnum-util.h" #include "discover-image.h" #include "dissect-image.h" -#include "dlfcn-util.h" #include "env-util.h" #include "escape.h" #include "ether-addr-util.h" @@ -6141,6 +6144,10 @@ static int run(int argc, char *argv[]) { if (arg_cleanup) return do_cleanup(); + (void) DLOPEN_CRYPTSETUP(LOG_DEBUG, suggested); + (void) DLOPEN_LIBACL(LOG_DEBUG, recommended); + (void) DLOPEN_LIBBLKID(LOG_DEBUG, recommended); + (void) DLOPEN_LIBCRYPTO(LOG_WARNING, recommended); (void) DLOPEN_LIBMOUNT(LOG_DEBUG, recommended); (void) DLOPEN_LIBSECCOMP(LOG_DEBUG, recommended); (void) DLOPEN_LIBSELINUX(LOG_DEBUG, recommended); diff --git a/src/pcrextend/pcrextend.c b/src/pcrextend/pcrextend.c index ab212600df..693435f3a4 100644 --- a/src/pcrextend/pcrextend.c +++ b/src/pcrextend/pcrextend.c @@ -7,6 +7,7 @@ #include "alloc-util.h" #include "build.h" #include "crypto-util.h" +#include "dlopen-note.h" #include "efi-loader.h" #include "escape.h" #include "format-table.h" @@ -512,6 +513,9 @@ static int run(int argc, char *argv[]) { Tpm2UserspaceEventType event = _TPM2_USERSPACE_EVENT_TYPE_INVALID; int r; + LIBBLKID_NOTE(recommended); + TPM2_NOTE(suggested); + log_setup(); char **args = NULL; diff --git a/src/pcrlock/pcrlock.c b/src/pcrlock/pcrlock.c index d51215d522..2d084d8eb1 100644 --- a/src/pcrlock/pcrlock.c +++ b/src/pcrlock/pcrlock.c @@ -21,6 +21,7 @@ #include "copy.h" #include "creds-util.h" #include "crypto-util.h" +#include "dlopen-note.h" #include "efi-api.h" #include "efivars.h" #include "env-util.h" @@ -5698,6 +5699,10 @@ static int vl_method_on_completed_update(sd_varlink *link, sd_json_variant *para static int run(int argc, char *argv[]) { int r; + LIBBLKID_NOTE(recommended); + LIBSELINUX_NOTE(recommended); + TPM2_NOTE(suggested); + log_setup(); r = mac_init(); diff --git a/src/portable/portabled.c b/src/portable/portabled.c index 23982c6ede..2a8bdc36c7 100644 --- a/src/portable/portabled.c +++ b/src/portable/portabled.c @@ -12,6 +12,7 @@ #include "common-signal.h" #include "constants.h" #include "daemon-util.h" +#include "dlopen-note.h" #include "hashmap.h" #include "log.h" #include "main-func.h" @@ -143,6 +144,10 @@ static int run(int argc, char *argv[]) { RuntimeScope scope = RUNTIME_SCOPE_SYSTEM; int r; + LIBBLKID_NOTE(recommended); + LIBCRYPTO_NOTE(suggested); + LIBSELINUX_NOTE(recommended); + log_setup(); r = service_parse_argv("systemd-portabled.service", diff --git a/src/pstore/pstore.c b/src/pstore/pstore.c index 3e84b25bfb..35e03a814d 100644 --- a/src/pstore/pstore.c +++ b/src/pstore/pstore.c @@ -13,6 +13,7 @@ #include "conf-parser.h" #include "copy.h" #include "dirent-util.h" +#include "dlopen-note.h" #include "fd-util.h" #include "fileio.h" #include "iovec-util.h" @@ -309,6 +310,8 @@ static int run(int argc, char *argv[]) { _cleanup_(pstore_entries_reset) PStoreList list = {}; int r; + LIBSELINUX_NOTE(recommended); + log_setup(); if (argc == 3) { diff --git a/src/remount-fs/remount-fs.c b/src/remount-fs/remount-fs.c index 698bb80a4f..1d5457728f 100644 --- a/src/remount-fs/remount-fs.c +++ b/src/remount-fs/remount-fs.c @@ -5,6 +5,7 @@ #include #include "alloc-util.h" +#include "dlopen-note.h" #include "env-util.h" #include "exit-status.h" #include "format-util.h" @@ -122,6 +123,8 @@ static int run(int argc, char *argv[]) { _cleanup_hashmap_free_ Hashmap *pids = NULL; int r; + LIBMOUNT_NOTE(recommended); + log_setup(); if (argc > 1) diff --git a/src/repart/repart.c b/src/repart/repart.c index 099b901226..3eada3bc42 100644 --- a/src/repart/repart.c +++ b/src/repart/repart.c @@ -11614,6 +11614,9 @@ static int run(int argc, char *argv[]) { bool node_is_our_loop = false; int r; + LIBSELINUX_NOTE(recommended); + TPM2_NOTE(suggested); + log_setup(); r = parse_argv(argc, argv); diff --git a/src/resolve/resolvectl.c b/src/resolve/resolvectl.c index 011162865b..ea6ee54ba6 100644 --- a/src/resolve/resolvectl.c +++ b/src/resolve/resolvectl.c @@ -20,6 +20,7 @@ #include "bus-locator.h" #include "bus-util.h" #include "crypto-util.h" +#include "dlopen-note.h" #include "dns-configuration.h" #include "dns-domain.h" #include "dns-packet.h" @@ -3792,6 +3793,8 @@ static int run(int argc, char **argv) { bool compat = false; int r; + LIBCRYPTO_NOTE(suggested); + setlocale(LC_ALL, ""); log_setup(); diff --git a/src/resolve/resolved.c b/src/resolve/resolved.c index 66171e9b34..ba487c9172 100644 --- a/src/resolve/resolved.c +++ b/src/resolve/resolved.c @@ -9,6 +9,7 @@ #include "bus-object.h" #include "capability-util.h" #include "daemon-util.h" +#include "dlopen-note.h" #include "label-util.h" #include "log.h" #include "main-func.h" @@ -24,6 +25,8 @@ static int run(int argc, char *argv[]) { _unused_ _cleanup_(notify_on_cleanup) const char *notify_stop = NULL; int r; + LIBSELINUX_NOTE(recommended); + log_setup(); r = service_parse_argv("systemd-resolved.service", diff --git a/src/shutdown/shutdown.c b/src/shutdown/shutdown.c index 1eec7726ef..17f526b727 100644 --- a/src/shutdown/shutdown.c +++ b/src/shutdown/shutdown.c @@ -24,6 +24,7 @@ #include "detach-loopback.h" #include "detach-md.h" #include "detach-swap.h" +#include "dlopen-note.h" #include "errno-util.h" #include "exec-util.h" #include "fd-util.h" @@ -378,6 +379,8 @@ int main(int argc, char *argv[]) { size_t n_luo_fds = 0; int cmd, r; + LIBSELINUX_NOTE(recommended); + /* LUO will preserve these across kexec */ dual_timestamp_now(&shutdown_late_start); diff --git a/src/socket-activate/socket-activate.c b/src/socket-activate/socket-activate.c index be0179ccc9..fa60131ba9 100644 --- a/src/socket-activate/socket-activate.c +++ b/src/socket-activate/socket-activate.c @@ -9,6 +9,7 @@ #include "alloc-util.h" #include "build.h" #include "daemon-util.h" +#include "dlopen-note.h" #include "env-util.h" #include "errno-util.h" #include "escape.h" @@ -468,6 +469,8 @@ static int run(int argc, char **argv) { _cleanup_strv_free_ char **exec_argv = NULL; int r, n; + LIBSELINUX_NOTE(recommended); + log_setup(); char **args = NULL; diff --git a/src/ssh-generator/ssh-generator.c b/src/ssh-generator/ssh-generator.c index 7d67d4178e..a5ae111043 100644 --- a/src/ssh-generator/ssh-generator.c +++ b/src/ssh-generator/ssh-generator.c @@ -4,6 +4,7 @@ #include "alloc-util.h" #include "creds-util.h" +#include "dlopen-note.h" #include "errno-util.h" #include "fd-util.h" #include "fileio.h" @@ -450,6 +451,9 @@ static int run(const char *dest, const char *dest_early, const char *dest_late) assert(dest); + LIBCRYPTO_NOTE(suggested); + TPM2_NOTE(suggested); + r = proc_cmdline_parse(parse_proc_cmdline_item, /* userdata= */ NULL, /* flags= */ 0); if (r < 0) log_warning_errno(r, "Failed to parse kernel command line, ignoring: %m"); diff --git a/src/sysext/sysext.c b/src/sysext/sysext.c index c8c50279f5..3c308bd8b6 100644 --- a/src/sysext/sysext.c +++ b/src/sysext/sysext.c @@ -28,6 +28,7 @@ #include "devnum-util.h" #include "discover-image.h" #include "dissect-image.h" +#include "dlopen-note.h" #include "env-util.h" #include "errno-util.h" #include "escape.h" @@ -3175,6 +3176,9 @@ static int run(int argc, char *argv[]) { char **args = NULL; int r; + LIBCRYPTO_NOTE(suggested); + LIBSELINUX_NOTE(recommended); + log_setup(); arg_image_class = invoked_as(argv, "systemd-confext") ? IMAGE_CONFEXT : IMAGE_SYSEXT; diff --git a/src/sysinstall/sysinstall.c b/src/sysinstall/sysinstall.c index e1346a5e26..82232f8ccb 100644 --- a/src/sysinstall/sysinstall.c +++ b/src/sysinstall/sysinstall.c @@ -15,6 +15,7 @@ #include "chase.h" #include "conf-files.h" #include "constants.h" +#include "dlopen-note.h" #include "efi-loader.h" #include "efivars.h" #include "env-file.h" @@ -2068,6 +2069,11 @@ static void end_marker(void) { static int run(int argc, char *argv[]) { int r; + LIBBLKID_NOTE(recommended); + LIBCRYPTO_NOTE(suggested); + LIBCRYPTSETUP_NOTE(suggested); + LIBMOUNT_NOTE(recommended); + setlocale(LC_ALL, ""); r = parse_argv(argc, argv); diff --git a/src/systemctl/systemctl-main.c b/src/systemctl/systemctl-main.c index 8e2b1c170d..fea186d9cd 100644 --- a/src/systemctl/systemctl-main.c +++ b/src/systemctl/systemctl-main.c @@ -3,6 +3,7 @@ #include #include "dissect-image.h" +#include "dlopen-note.h" #include "glyph-util.h" #include "log.h" #include "logs-show.h" @@ -23,6 +24,13 @@ static int run(int argc, char *argv[]) { char **args = STRV_EMPTY; int r; + COMPRESS_DEFAULT_NOTE; + LIBBLKID_NOTE(recommended); + LIBCRYPTO_NOTE(suggested); + LIBCRYPTSETUP_NOTE(suggested); + LIBMOUNT_NOTE(recommended); + LIBSELINUX_NOTE(recommended); + setlocale(LC_ALL, ""); log_setup(); diff --git a/src/sysupdate/sysupdate.c b/src/sysupdate/sysupdate.c index 16aff0b681..fe39d31f6a 100644 --- a/src/sysupdate/sysupdate.c +++ b/src/sysupdate/sysupdate.c @@ -14,6 +14,7 @@ #include "constants.h" #include "discover-image.h" #include "dissect-image.h" +#include "dlopen-note.h" #include "env-util.h" #include "errno-util.h" #include "fd-util.h" @@ -2685,6 +2686,11 @@ static int vl_server(void) { static int run(int argc, char *argv[]) { int r; + LIBBLKID_NOTE(recommended); + LIBCRYPTO_NOTE(suggested); + LIBCRYPTSETUP_NOTE(suggested); + LIBMOUNT_NOTE(recommended); + log_setup(); char **args = NULL; diff --git a/src/sysusers/sysusers.c b/src/sysusers/sysusers.c index 48d256b15c..c32fb72d5e 100644 --- a/src/sysusers/sysusers.c +++ b/src/sysusers/sysusers.c @@ -11,6 +11,7 @@ #include "copy.h" #include "creds-util.h" #include "dissect-image.h" +#include "dlopen-note.h" #include "errno-util.h" #include "extract-word.h" #include "fd-util.h" @@ -2269,6 +2270,14 @@ static int run(int argc, char *argv[]) { Item *i; int r; + LIBAUDIT_NOTE(recommended); + LIBBLKID_NOTE(recommended); + LIBCRYPT_NOTE(recommended); + LIBCRYPTSETUP_NOTE(suggested); + LIBCRYPTO_NOTE(suggested); + LIBMOUNT_NOTE(recommended); + LIBSELINUX_NOTE(recommended); + char **args = NULL; r = parse_argv(argc, argv, &args); if (r <= 0) diff --git a/src/timedate/timedated.c b/src/timedate/timedated.c index 5d20e6ca06..efc255d5e5 100644 --- a/src/timedate/timedated.c +++ b/src/timedate/timedated.c @@ -25,6 +25,7 @@ #include "conf-files.h" #include "constants.h" #include "daemon-util.h" +#include "dlopen-note.h" #include "extract-word.h" #include "fd-util.h" #include "fileio.h" @@ -1164,6 +1165,8 @@ static int run(int argc, char *argv[]) { _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; int r; + LIBSELINUX_NOTE(recommended); + log_setup(); r = service_parse_argv("systemd-timedated.service", diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c index 261a4f0b92..0667b5b71f 100644 --- a/src/tmpfiles/tmpfiles.c +++ b/src/tmpfiles/tmpfiles.c @@ -25,6 +25,7 @@ #include "devnum-util.h" #include "dirent-util.h" #include "dissect-image.h" +#include "dlopen-note.h" #include "env-util.h" #include "errno-util.h" #include "escape.h" @@ -4853,6 +4854,12 @@ static int run(int argc, char *argv[]) { } phase; int r; + LIBBLKID_NOTE(recommended); + LIBCRYPTSETUP_NOTE(suggested); + LIBCRYPTO_NOTE(suggested); + LIBMOUNT_NOTE(recommended); + LIBSELINUX_NOTE(recommended); + char **args = NULL; r = parse_argv(argc, argv, &args); if (r <= 0) diff --git a/src/tpm2-setup/tpm2-clear.c b/src/tpm2-setup/tpm2-clear.c index 19186ecc02..fcef2b76bb 100644 --- a/src/tpm2-setup/tpm2-clear.c +++ b/src/tpm2-setup/tpm2-clear.c @@ -4,6 +4,7 @@ #include "alloc-util.h" #include "build.h" +#include "dlopen-note.h" #include "env-util.h" #include "fileio.h" #include "format-table.h" @@ -110,6 +111,10 @@ static int request_tpm2_clear(void) { static int run(int argc, char *argv[]) { int r; + LIBTSS2_ESYS_NOTE(suggested); + LIBTSS2_MU_NOTE(suggested); + LIBTSS2_RC_NOTE(suggested); + log_setup(); r = parse_argv(argc, argv); diff --git a/src/tpm2-setup/tpm2-generator.c b/src/tpm2-setup/tpm2-generator.c index 5a4a88bf9f..7a826a0be1 100644 --- a/src/tpm2-setup/tpm2-generator.c +++ b/src/tpm2-setup/tpm2-generator.c @@ -2,6 +2,7 @@ #include +#include "dlopen-note.h" #include "dropin.h" #include "efivars.h" #include "generator.h" @@ -169,6 +170,10 @@ static int run(const char *dest, const char *dest_early, const char *dest_late) assert_se(arg_dest = dest); + LIBTSS2_ESYS_NOTE(suggested); + LIBTSS2_MU_NOTE(suggested); + LIBTSS2_RC_NOTE(suggested); + r = proc_cmdline_parse(parse_proc_cmdline_item, NULL, PROC_CMDLINE_STRIP_RD_PREFIX); if (r < 0) log_warning_errno(r, "Failed to parse kernel command line, ignoring: %m"); diff --git a/src/tpm2-setup/tpm2-setup.c b/src/tpm2-setup/tpm2-setup.c index 897c4daf14..d655ab46d3 100644 --- a/src/tpm2-setup/tpm2-setup.c +++ b/src/tpm2-setup/tpm2-setup.c @@ -10,6 +10,7 @@ #include "conf-files.h" #include "constants.h" #include "crypto-util.h" +#include "dlopen-note.h" #include "errno-util.h" #include "fd-util.h" #include "fileio.h" @@ -599,6 +600,8 @@ static int run(int argc, char *argv[]) { return EXIT_SUCCESS; } + LIBBLKID_NOTE(recommended); + r = DLOPEN_LIBCRYPTO(LOG_ERR, required); if (r < 0) return r; diff --git a/src/tpm2-setup/tpm2-swtpm.c b/src/tpm2-setup/tpm2-swtpm.c index 33d5defd06..a97c7c31be 100644 --- a/src/tpm2-setup/tpm2-swtpm.c +++ b/src/tpm2-setup/tpm2-swtpm.c @@ -6,6 +6,7 @@ #include "alloc-util.h" #include "chase.h" +#include "dlopen-note.h" #include "errno-util.h" #include "escape.h" #include "fd-util.h" @@ -145,6 +146,8 @@ static int setup_swtpm(const char *state_dir, int state_fd, const char *secret) static int run(int argc, char *argv[]) { int r; + LIBBLKID_NOTE(recommended); + log_setup(); _cleanup_free_ char *runtime_dir = NULL; diff --git a/src/tty-ask-password-agent/tty-ask-password-agent.c b/src/tty-ask-password-agent/tty-ask-password-agent.c index c7b1fb3e1f..d57ade56c9 100644 --- a/src/tty-ask-password-agent/tty-ask-password-agent.c +++ b/src/tty-ask-password-agent/tty-ask-password-agent.c @@ -19,6 +19,7 @@ #include "daemon-util.h" #include "devnum-util.h" #include "dirent-util.h" +#include "dlopen-note.h" #include "errno-util.h" #include "exit-status.h" #include "fd-util.h" @@ -700,6 +701,8 @@ static int ask_on_consoles(char *argv[]) { static int run(int argc, char *argv[]) { int r; + LIBSELINUX_NOTE(recommended); + log_setup(); umask(0022); diff --git a/src/udev/udevadm.c b/src/udev/udevadm.c index 9b7b09370a..341e00d118 100644 --- a/src/udev/udevadm.c +++ b/src/udev/udevadm.c @@ -3,6 +3,7 @@ #include #include "argv-util.h" +#include "dlopen-note.h" #include "format-table.h" #include "help-util.h" #include "label-util.h" @@ -101,6 +102,10 @@ static int run(int argc, char *argv[]) { char **args = NULL; int r; + LIBAPPARMOR_NOTE(recommended); + LIBAUDIT_NOTE(recommended); + LIBSELINUX_NOTE(recommended); + if (invoked_as(argv, "udevd")) return run_udevd(argc, argv); diff --git a/src/update-done/update-done.c b/src/update-done/update-done.c index 67ce353e11..ceb8337495 100644 --- a/src/update-done/update-done.c +++ b/src/update-done/update-done.c @@ -5,6 +5,7 @@ #include "alloc-util.h" #include "build.h" #include "chase.h" +#include "dlopen-note.h" #include "errno-util.h" #include "fd-util.h" #include "fileio.h" @@ -124,6 +125,8 @@ static int run(int argc, char *argv[]) { struct stat st; int r; + LIBSELINUX_NOTE(recommended); + r = parse_argv(argc, argv); if (r <= 0) return r; diff --git a/src/update-utmp/update-utmp.c b/src/update-utmp/update-utmp.c index d27616c2cd..3ae949f114 100644 --- a/src/update-utmp/update-utmp.c +++ b/src/update-utmp/update-utmp.c @@ -7,6 +7,7 @@ #include "bus-error.h" #include "bus-locator.h" #include "bus-util.h" +#include "dlopen-note.h" #include "libaudit-util.h" #include "log.h" #include "main-func.h" @@ -109,6 +110,8 @@ static int run(int argc, char *argv[]) { .audit_fd = -EBADF, }; + LIBAUDIT_NOTE(recommended); + log_setup(); umask(0022); diff --git a/src/user-sessions/user-sessions.c b/src/user-sessions/user-sessions.c index faf37602af..f9717b88cc 100644 --- a/src/user-sessions/user-sessions.c +++ b/src/user-sessions/user-sessions.c @@ -2,6 +2,7 @@ #include +#include "dlopen-note.h" #include "fs-util.h" #include "label-util.h" #include "log.h" @@ -12,6 +13,8 @@ static int run(int argc, char *argv[]) { int r; + LIBSELINUX_NOTE(recommended); + if (argc != 2) return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "This program requires one argument."); diff --git a/src/userdb/userdbctl.c b/src/userdb/userdbctl.c index fd349b2826..e4fd5a9e8d 100644 --- a/src/userdb/userdbctl.c +++ b/src/userdb/userdbctl.c @@ -10,6 +10,7 @@ #include "copy.h" #include "creds-util.h" #include "dirent-util.h" +#include "dlopen-note.h" #include "errno-list.h" #include "errno-util.h" #include "escape.h" @@ -1853,6 +1854,8 @@ static int run(int argc, char *argv[]) { _cleanup_strv_free_ char **args = NULL; int r; + LIBSELINUX_NOTE(recommended); + log_setup(); r = parse_argv(argc, argv, &args); diff --git a/src/veritysetup/veritysetup.c b/src/veritysetup/veritysetup.c index dde1910866..56c199dbd7 100644 --- a/src/veritysetup/veritysetup.c +++ b/src/veritysetup/veritysetup.c @@ -8,6 +8,7 @@ #include "alloc-util.h" #include "argv-util.h" #include "cryptsetup-util.h" +#include "dlopen-note.h" #include "extract-word.h" #include "fileio.h" #include "format-table.h" @@ -493,6 +494,8 @@ static int run(int argc, char *argv[]) { log_setup(); + LIBCRYPTO_NOTE(suggested); + r = DLOPEN_CRYPTSETUP(LOG_ERR, required); if (r < 0) return r; diff --git a/src/vmspawn/vmspawn.c b/src/vmspawn/vmspawn.c index 2a3ee83512..460219c144 100644 --- a/src/vmspawn/vmspawn.c +++ b/src/vmspawn/vmspawn.c @@ -29,6 +29,7 @@ #include "copy.h" #include "discover-image.h" #include "dissect-image.h" +#include "dlopen-note.h" #include "escape.h" #include "ether-addr-util.h" #include "event-util.h" @@ -4286,6 +4287,9 @@ static int run(int argc, char *argv[]) { int r, kvm_device_fd = -EBADF, vhost_device_fd = -EBADF; _cleanup_strv_free_ char **names = NULL; + LIBBLKID_NOTE(recommended); + LIBSELINUX_NOTE(recommended); + log_setup(); arg_runtime_scope = getuid() == 0 ? RUNTIME_SCOPE_SYSTEM : RUNTIME_SCOPE_USER; diff --git a/src/volatile-root/volatile-root.c b/src/volatile-root/volatile-root.c index 883f193ff4..9e337958ab 100644 --- a/src/volatile-root/volatile-root.c +++ b/src/volatile-root/volatile-root.c @@ -7,6 +7,7 @@ #include "blockdev-util.h" #include "chase.h" #include "devnum-util.h" +#include "dlopen-note.h" #include "escape.h" #include "log.h" #include "main-func.h" @@ -122,6 +123,8 @@ static int run(int argc, char *argv[]) { dev_t devt; int r; + LIBMOUNT_NOTE(recommended); + log_setup(); if (argc > 3)