X-Git-Url: http://git.ipfire.org/?p=thirdparty%2Fsystemd.git;a=blobdiff_plain;f=src%2Fjournal%2Fjournald-server.c;h=f286e3030f77b7df1f8fc382ce338fbd7abb7f3a;hp=140d40667eb2b4bd463a10a2e228688c95fdb2ba;hb=6bedfcbb2970e06a4d3280c8fb62083d252ede73;hpb=63a94c49ddee0447374013758252a9a6b30c3f7a diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index 140d40667eb..f286e3030f7 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -19,7 +19,6 @@ along with systemd; If not, see . ***/ -#include #ifdef HAVE_SELINUX #include #endif @@ -27,6 +26,7 @@ #include #include #include +#include #include "libudev.h" #include "sd-daemon.h" @@ -36,16 +36,11 @@ #include "acl-util.h" #include "cgroup-util.h" #include "conf-parser.h" +#include "extract-word.h" +#include "fd-util.h" #include "formats-util.h" #include "hashmap.h" #include "hostname-util.h" -#include "missing.h" -#include "mkdir.h" -#include "process-util.h" -#include "rm-rf.h" -#include "selinux-util.h" -#include "signal-util.h" -#include "socket-util.h" #include "journal-authenticate.h" #include "journal-file.h" #include "journal-internal.h" @@ -57,6 +52,15 @@ #include "journald-server.h" #include "journald-stream.h" #include "journald-syslog.h" +#include "missing.h" +#include "mkdir.h" +#include "parse-util.h" +#include "process-util.h" +#include "rm-rf.h" +#include "selinux-util.h" +#include "signal-util.h" +#include "socket-util.h" +#include "string-util.h" #define USER_JOURNALS_MAX 1024 @@ -1287,8 +1291,7 @@ static int setup_signals(Server *s) { static int server_parse_proc_cmdline(Server *s) { _cleanup_free_ char *line = NULL; - const char *w, *state; - size_t l; + const char *p; int r; r = proc_cmdline(&line); @@ -1297,12 +1300,16 @@ static int server_parse_proc_cmdline(Server *s) { return 0; } - FOREACH_WORD_QUOTED(w, l, line, state) { + p = line; + for(;;) { _cleanup_free_ char *word; - word = strndup(w, l); - if (!word) - return -ENOMEM; + r = extract_first_word(&p, &word, NULL, 0); + if (r < 0) + return log_error_errno(r, "Failed to parse journald syntax \"%s\": %m", line); + + if (r == 0) + break; if (startswith(word, "systemd.journald.forward_to_syslog=")) { r = parse_boolean(word + 35);