From: Richard Maw Date: Fri, 19 Jun 2015 15:24:31 +0000 (+0000) Subject: nspawn: Allow : characters in --tmpfs path X-Git-Tag: v225~61^2~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6330ee108362a419dfc8806ab6402416c793a4ca;p=thirdparty%2Fsystemd.git nspawn: Allow : characters in --tmpfs path This now accepts : characters with the \: escape sequence. Other escape sequences are also interpreted, but having a \ in your file path is less likely than :, so this shouldn't break anyone's existing tools. --- diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index 0e74f20f1ac..fe5f3528ce8 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -690,18 +690,21 @@ static int parse_argv(int argc, char *argv[]) { } case ARG_TMPFS: { + const char *current = optarg; _cleanup_free_ char *path = NULL, *opts = NULL; CustomMount *m; - char *e; - e = strchr(optarg, ':'); - if (e) { - path = strndup(optarg, e - optarg); - opts = strdup(e + 1); - } else { - path = strdup(optarg); - opts = strdup("mode=0755"); + r = extract_first_word(¤t, &path, ":", EXTRACT_DONT_COALESCE_SEPARATORS); + if (r == -ENOMEM) + return log_oom(); + else if (r < 0) { + log_error("Invalid tmpfs specification: %s", optarg); + return r; } + if (r) + opts = strdup(current); + else + opts = strdup("mode=0755"); if (!path || !opts) return log_oom();