From: Lennart Poettering Date: Thu, 28 Jan 2016 18:30:56 +0000 (+0100) Subject: basic: when parsing verb command lines, optionally shortcut them in chroot() environments X-Git-Tag: v229~62^2~3 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a16f96cd56c6ee251f69fdb2395ad0dcb51abac8;p=thirdparty%2Fsystemd.git basic: when parsing verb command lines, optionally shortcut them in chroot() environments This adds some basic infrastructure in order to fix #2015. --- diff --git a/src/basic/verbs.c b/src/basic/verbs.c index 7feb47c48e1..6dded9fb77e 100644 --- a/src/basic/verbs.c +++ b/src/basic/verbs.c @@ -28,6 +28,7 @@ #include "macro.h" #include "string-util.h" #include "verbs.h" +#include "virt.h" int dispatch_verb(int argc, char *argv[], const Verb verbs[], void *userdata) { const Verb *verb; @@ -84,6 +85,11 @@ int dispatch_verb(int argc, char *argv[], const Verb verbs[], void *userdata) { return -EINVAL; } + if ((verb->flags & VERB_NOCHROOT) && running_in_chroot() > 0) { + log_info("Running in chroot, ignoring request."); + return 0; + } + if (name) return verb->dispatch(left, argv + optind, userdata); else { diff --git a/src/basic/verbs.h b/src/basic/verbs.h index d59e4d59b8f..4132cad7730 100644 --- a/src/basic/verbs.h +++ b/src/basic/verbs.h @@ -22,7 +22,8 @@ ***/ #define VERB_ANY ((unsigned) -1) -#define VERB_DEFAULT 1 +#define VERB_DEFAULT 1U +#define VERB_NOCHROOT 2U typedef struct { const char *verb;