summaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorMartin Pitt <martin.pitt@ubuntu.com>2015-04-22 23:09:43 +0100
committerLennart Poettering <lennart@poettering.net>2015-04-23 01:14:07 +0200
commit470dca63cd2b1579f45f72b6b9777494abeff105 (patch)
tree44fac9a4cf37e9b4841160a9d2f1a88536b1ff8f /src/test
parent0674bbea9ce0958512411962c2d1623d88dad0b4 (diff)
downloadsystemd-470dca63cd2b1579f45f72b6b9777494abeff105.tar.gz
systemd-470dca63cd2b1579f45f72b6b9777494abeff105.tar.bz2
systemd-470dca63cd2b1579f45f72b6b9777494abeff105.zip
util: Fix assertion in split() on missing '
When parsing a unit with a trailing slash after an escaped line break, like ExecStart=/bin/echo 'foo \ bar' the split() function (through config_parse()) asserted and crashed pid 1: Assertion 'current[*l + 1] == quotechars[0]' failed at ../src/shared/util.c:583, function split(). Aborting. Fix this by returning an error in this case ("trailing garbage"). Add corresponding test case. Also fix the missing "unit" argument of config_parse_exec() in the comment. https://launchpad.net/bugs/1447243
Diffstat (limited to 'src/test')
-rw-r--r--src/test/test-unit-file.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/test/test-unit-file.c b/src/test/test-unit-file.c
index 22ac76de56..5a9796df58 100644
--- a/src/test/test-unit-file.c
+++ b/src/test/test-unit-file.c
@@ -91,6 +91,7 @@ static void check_execcommand(ExecCommand *c,
static void test_config_parse_exec(void) {
/* int config_parse_exec(
+ const char *unit,
const char *filename,
unsigned line,
const char *section,
@@ -302,6 +303,20 @@ static void test_config_parse_exec(void) {
assert_se(r == 0);
assert_se(c1->command_next == NULL);
+ log_info("/* missing ending ' */");
+ r = config_parse_exec(NULL, "fake", 4, "section", 1,
+ "LValue", 0, "/path 'foo",
+ &c, NULL);
+ assert_se(r == 0);
+ assert_se(c1->command_next == NULL);
+
+ log_info("/* missing ending ' with trailing backslash */");
+ r = config_parse_exec(NULL, "fake", 4, "section", 1,
+ "LValue", 0, "/path 'foo\\",
+ &c, NULL);
+ assert_se(r == 0);
+ assert_se(c1->command_next == NULL);
+
exec_command_free_list(c);
}