1
0
mirror of https://github.com/systemd/systemd.git synced 2024-11-02 19:21:53 +03:00

Merge pull request #2646 from evverx/fix-2637

Fix #2637 (doubled specifier expansion in ExecStart=)
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2016-02-18 10:24:16 -05:00
commit 57156d9507
3 changed files with 12 additions and 10 deletions

View File

@ -574,9 +574,7 @@ int config_parse_exec(
void *data,
void *userdata) {
_cleanup_free_ char *cmd = NULL;
ExecCommand **e = data;
Unit *u = userdata;
const char *p;
bool semicolon;
int r;
@ -585,7 +583,6 @@ int config_parse_exec(
assert(lvalue);
assert(rvalue);
assert(e);
assert(u);
e += ltype;
rvalue += strspn(rvalue, WHITESPACE);
@ -596,13 +593,7 @@ int config_parse_exec(
return 0;
}
r = unit_full_printf(u, rvalue, &cmd);
if (r < 0) {
log_syntax(unit, LOG_ERR, filename, line, r, "Failed to resolve unit specifiers on %s, ignoring: %m", rvalue);
return 0;
}
p = cmd;
p = rvalue;
do {
_cleanup_free_ char *path = NULL, *firstword = NULL;
bool separate_argv0 = false, ignore = false;

View File

@ -263,6 +263,10 @@ static void test_exec_ioschedulingclass(Manager *m) {
test(m, "exec-ioschedulingclass-best-effort.service", 0, CLD_EXITED);
}
static void test_exec_spec_interpolation(Manager *m) {
test(m, "exec-spec-interpolation.service", 0, CLD_EXITED);
}
int main(int argc, char *argv[]) {
test_function_t tests[] = {
test_exec_workingdirectory,
@ -284,6 +288,7 @@ int main(int argc, char *argv[]) {
test_exec_capabilityambientset,
test_exec_oomscoreadjust,
test_exec_ioschedulingclass,
test_exec_spec_interpolation,
NULL,
};
test_function_t *test = NULL;

View File

@ -0,0 +1,6 @@
[Unit]
Description=https://github.com/systemd/systemd/issues/2637
[Service]
Type=oneshot
ExecStart=/bin/sh -x -c "perl -e 'exit(!(qq{%%U} eq qq{\\x25U}))'"