File paths may contain : characters, and the nspawn command-line argument parser had no way of being able to tell which were part of the paths, or used to separate paths.
This is fixable by introducing an escaping mechanism. The --overlay option had a related problem, as it would still fail if the paths contained : characters or , characters, as they are used as path separators for the lowerdir union, and as the option separator. In this case overlayfs has an escaping mechanism, so we just needed to escape the paths correctly. This re-uses the existing escaping and parsing logic as much as possible. I couldn't find anything that was an exact fit, but unquote_first_word was the closest, so I extended the flags a bit and added a variant that accepted a set of separator characters, rather than always using whitespace. I've been running these patches on my system for a day, and tested that I could nspawn a system using the changed arguments, but I couldn't get the test suite to run, so I may have missed something. Richard Maw (9): util: Add unescape_first_word() nspawn: Allow : characters in --tmpfs path man: Document \: escapes in nspawn's --tmpfs option strv: Add strv_split_escaped nspawn: Allow : characters in nspawn --bind paths man: Document \: escapes in nspawn's --bind option nspawn: escape paths in overlay mount options nspawn: Allow : characters in overlay paths man: Document \: escapes in nspawn's --overlay option man/systemd-nspawn.xml | 13 +++++- src/nspawn/nspawn.c | 119 ++++++++++++++++++++++++++++++++++++++----------- src/shared/strv.c | 8 +++- src/shared/strv.h | 1 + src/shared/util.c | 35 ++++++++++----- src/shared/util.h | 7 ++- 6 files changed, 142 insertions(+), 41 deletions(-) -- 1.9.1 _______________________________________________ systemd-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/systemd-devel
