diff options
author | Lennart Poettering <lennart@poettering.net> | 2021-04-06 11:45:47 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2021-04-07 16:19:35 +0200 |
commit | d997861ea7dae633174cd80ab55552c020526b62 (patch) | |
tree | 25d9ffec7345def97b866e0cca844eb482e7b5d1 /src/basic/proc-cmdline.c | |
parent | 29d898cc7be4b2e91f13bba83fef46bbe995f08e (diff) | |
download | systemd-d997861ea7dae633174cd80ab55552c020526b62.tar.gz |
proc-cmdline: allow backslash escapes when parsing /proc/cmdline
So far when parsing /proc/cmdline we'd consider backslashes as
mechanisms for escaping whitepace or quotes. This changes things so that
they are retained as they are instead. The kernel itself doesn't allow such
escaping, and hence we shouldn't do so either (see lib/cmdline.c in the
kernel sources; it does support "" quotes btw).
This fix is useful to allow specifying backslash escapes in the "root="
cmdline option to be passed through to systemd-fstab-generator. Example:
root=/dev/disk/by-partlabel/Root\x20Partition
Previously we'd eat up the "\" so that we'd then look for a device
/dev/disk/by-partlabel/Rootx20Partition which never shows up.
Diffstat (limited to 'src/basic/proc-cmdline.c')
-rw-r--r-- | src/basic/proc-cmdline.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/basic/proc-cmdline.c b/src/basic/proc-cmdline.c index 0b6fb137bd..410b8a3eb5 100644 --- a/src/basic/proc-cmdline.c +++ b/src/basic/proc-cmdline.c @@ -47,7 +47,7 @@ static int proc_cmdline_extract_first(const char **p, char **ret_word, ProcCmdli _cleanup_free_ char *word = NULL; const char *c; - r = extract_first_word(&q, &word, NULL, EXTRACT_UNQUOTE|EXTRACT_RELAX); + r = extract_first_word(&q, &word, NULL, EXTRACT_UNQUOTE|EXTRACT_RELAX|EXTRACT_RETAIN_ESCAPE); if (r < 0) return r; if (r == 0) |