From: Daan De Meyer Date: Mon, 31 Jul 2023 18:56:14 +0000 (+0200) Subject: kernel-install: Only bypass "add" and "remove" X-Git-Tag: v255-rc1~863^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b4afa94c5f99a5e3c6b5f50d528f480ad2106bc6;p=thirdparty%2Fsystemd.git kernel-install: Only bypass "add" and "remove" KERNEL_INSTALL_BYPASS should only bypass verbs that actually change the system, not harmless verbs such as "inspect". --- diff --git a/src/kernel-install/kernel-install.c b/src/kernel-install/kernel-install.c index c573228991e..7de62f3ba41 100644 --- a/src/kernel-install/kernel-install.c +++ b/src/kernel-install/kernel-install.c @@ -999,6 +999,19 @@ static int context_execute(Context *c) { return 0; } +static bool bypass(void) { + int r; + + r = getenv_bool("KERNEL_INSTALL_BYPASS"); + if (r < 0 && r != -ENXIO) + log_debug_errno(r, "Failed to parse $KERNEL_INSTALL_BYPASS, assuming no."); + if (r <= 0) + return false; + + log_debug("$KERNEL_INSTALL_BYPASS is enabled, skipping execution."); + return true; +} + static int verb_add(int argc, char *argv[], void *userdata) { Context *c = ASSERT_PTR(userdata); int r; @@ -1006,6 +1019,9 @@ static int verb_add(int argc, char *argv[], void *userdata) { assert(argc >= 3); assert(argv); + if (bypass()) + return 0; + c->action = ACTION_ADD; r = context_set_version(c, argv[1]); @@ -1048,6 +1064,9 @@ static int verb_remove(int argc, char *argv[], void *userdata) { log_debug("Too many arguments specified. 'kernel-install remove' takes only kernel version. " "Ignoring residual arguments."); + if (bypass()) + return 0; + c->action = ACTION_REMOVE; r = context_set_version(c, argv[1]); @@ -1098,19 +1117,6 @@ static int verb_inspect(int argc, char *argv[], void *userdata) { return 0; } -static bool bypass(void) { - int r; - - r = getenv_bool("KERNEL_INSTALL_BYPASS"); - if (r < 0 && r != -ENXIO) - log_debug_errno(r, "Failed to parse $KERNEL_INSTALL_BYPASS, assuming no."); - if (r <= 0) - return false; - - log_debug("$KERNEL_INSTALL_BYPASS is enabled, skipping execution."); - return true; -} - static int help(void) { _cleanup_free_ char *link = NULL; int r; @@ -1239,9 +1245,6 @@ static int run(int argc, char* argv[]) { log_setup(); - if (bypass()) - return 0; - r = parse_argv(argc, argv, &c); if (r <= 0) return r;