X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=main.c;h=aa58040ff565ac5673fef0dd169e37522f470c66;hb=afb757b1a8a416b3c692728330a266b3915eef41;hp=d2721fd0996ea975a17b4a4d328fecedd21263eb;hpb=8d025b231b97da7b5cf908309f23e5af78bae4a4;p=elogind.git diff --git a/main.c b/main.c index d2721fd09..aa58040ff 100644 --- a/main.c +++ b/main.c @@ -36,6 +36,7 @@ #include "log.h" #include "mount-setup.h" #include "hostname-setup.h" +#include "loopback-setup.h" #include "load-fragment.h" #include "fdset.h" @@ -463,6 +464,15 @@ static int parse_argv(int argc, char *argv[]) { return -EINVAL; } + /* PID 1 will get the kernel arguments as parameters, which we + * ignore and unconditionally read from + * /proc/cmdline. However, we need to ignore those arguments + * here. */ + if (running_as != MANAGER_INIT && optind < argc) { + log_error("Excess arguments."); + return -EINVAL; + } + return 0; } @@ -632,8 +642,10 @@ int main(int argc, char *argv[]) { log_debug("systemd running in %s mode.", manager_running_as_to_string(running_as)); - if (running_as == MANAGER_INIT) + if (running_as == MANAGER_INIT) { hostname_setup(); + loopback_setup(); + } if ((r = manager_new(running_as, confirm_spawn, &m)) < 0) { log_error("Failed to allocate manager object: %s", strerror(-r));