From 3537577c37d2c23a518540d36884a127aab944f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 9 Oct 2020 18:02:54 +0200 Subject: [PATCH] tmpfiles,sysusers: disable --image= support in standalone versions Fixes #17278. --- meson.build | 2 ++ src/sysusers/sysusers.c | 11 +++++++++++ src/tmpfiles/tmpfiles.c | 14 ++++++++++++-- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/meson.build b/meson.build index 889dad781e..b6dcc95907 100644 --- a/meson.build +++ b/meson.build @@ -3058,6 +3058,7 @@ if enable_sysusers 'systemd-sysusers.standalone', 'src/sysusers/sysusers.c', include_directories : includes, + c_args : '-DSTANDALONE', link_with : [libshared_static, libbasic, libbasic_gcrypt, @@ -3100,6 +3101,7 @@ if conf.get('ENABLE_TMPFILES') == 1 'systemd-tmpfiles.standalone', systemd_tmpfiles_sources, include_directories : includes, + c_args : '-DSTANDALONE', link_with : [libshared_static, libbasic, libbasic_gcrypt, diff --git a/src/sysusers/sysusers.c b/src/sysusers/sysusers.c index fbd80969a4..b91f32bbf3 100644 --- a/src/sysusers/sysusers.c +++ b/src/sysusers/sysusers.c @@ -1825,10 +1825,15 @@ static int parse_argv(int argc, char *argv[]) { break; case ARG_IMAGE: +#ifdef STANDALONE + return log_error_errno(SYNTHETIC_ERRNO(EOPNOTSUPP), + "This systemd-sysusers version is compiled without support for --image=."); +#else r = parse_path_argument_and_warn(optarg, /* suppress_root= */ false, &arg_image); if (r < 0) return r; break; +#endif case ARG_REPLACE: if (!path_is_absolute(optarg) || @@ -1916,9 +1921,11 @@ static int read_config_files(char **args) { } static int run(int argc, char *argv[]) { +#ifndef STANDALONE _cleanup_(loop_device_unrefp) LoopDevice *loop_device = NULL; _cleanup_(decrypted_image_unrefp) DecryptedImage *decrypted_image = NULL; _cleanup_(umount_and_rmdir_and_freep) char *unlink_dir = NULL; +#endif _cleanup_close_ int lock = -1; Item *i; int r; @@ -1938,6 +1945,7 @@ static int run(int argc, char *argv[]) { if (r < 0) return r; +#ifndef STANDALONE if (arg_image) { assert(!arg_root); @@ -1954,6 +1962,9 @@ static int run(int argc, char *argv[]) { if (!arg_root) return log_oom(); } +#else + assert(!arg_image); +#endif /* If command line arguments are specified along with --replace, read all * configuration files and insert the positional arguments at the specified diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c index b9b37008b1..4604b2d47b 100644 --- a/src/tmpfiles/tmpfiles.c +++ b/src/tmpfiles/tmpfiles.c @@ -3105,11 +3105,15 @@ static int parse_argv(int argc, char *argv[]) { break; case ARG_IMAGE: +#ifdef STANDALONE + return log_error_errno(SYNTHETIC_ERRNO(EOPNOTSUPP), + "This systemd-tmpfiles version is compiled without support for --image=."); +#else r = parse_path_argument_and_warn(optarg, /* suppress_root= */ false, &arg_image); if (r < 0) return r; - - /* Imply -E here since it makes little sense to create files persistently in the /run mointpoint of a disk image */ +#endif + /* Imply -E here since it makes little sense to create files persistently in the /run mountpoint of a disk image */ _fallthrough_; case 'E': @@ -3331,9 +3335,11 @@ DEFINE_PRIVATE_HASH_OPS_WITH_VALUE_DESTRUCTOR(item_array_hash_ops, char, string_ ItemArray, item_array_free); static int run(int argc, char *argv[]) { +#ifndef STANDALONE _cleanup_(loop_device_unrefp) LoopDevice *loop_device = NULL; _cleanup_(decrypted_image_unrefp) DecryptedImage *decrypted_image = NULL; _cleanup_(umount_and_rmdir_and_freep) char *unlink_dir = NULL; +#endif _cleanup_strv_free_ char **config_dirs = NULL; bool invalid_config = false; ItemArray *a; @@ -3393,6 +3399,7 @@ static int run(int argc, char *argv[]) { if (r < 0) return r; +#ifndef STANDALONE if (arg_image) { assert(!arg_root); @@ -3409,6 +3416,9 @@ static int run(int argc, char *argv[]) { if (!arg_root) return log_oom(); } +#else + assert(!arg_image); +#endif items = ordered_hashmap_new(&item_array_hash_ops); globs = ordered_hashmap_new(&item_array_hash_ops);