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".
This commit is contained in:
Daan De Meyer
2023-07-31 20:56:14 +02:00
parent 114085932c
commit b4afa94c5f
+19 -16
View File
@@ -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;