k = unit_full_printf(u, rvalue);
if (!k)
- return log_oom();
+ log_error("[%s:%u] Failed to resolve unit specifiers on %s. Ignoring.",
+ filename, line, rvalue);
- return config_parse_string(filename, line, section, lvalue, ltype, k, data, userdata);
+ return config_parse_string(filename, line, section, lvalue, ltype, k ? k : rvalue, data, userdata);
}
int config_parse_unit_strv_printf(
k = unit_full_printf(u, rvalue);
if (!k)
- return log_oom();
+ log_error("[%s:%u] Failed to resolve unit specifiers on %s. Ignoring.",
+ filename, line, rvalue);
- return config_parse_strv(filename, line, section, lvalue, ltype, k, data, userdata);
+ return config_parse_strv(filename, line, section, lvalue, ltype, k ? k : rvalue, data, userdata);
}
int config_parse_unit_path_printf(
k = unit_full_printf(u, rvalue);
if (!k)
- return log_oom();
+ log_error("[%s:%u] Failed to resolve unit specifiers on %s. Ignoring.",
+ filename, line, rvalue);
- return config_parse_path(filename, line, section, lvalue, ltype, k, data, userdata);
+ return config_parse_path(filename, line, section, lvalue, ltype, k ? k : rvalue, data, userdata);
}
int config_parse_socket_listen(
p->type = ltype;
p->path = unit_full_printf(UNIT(s), rvalue);
if (!p->path) {
- free(p);
- return log_oom();
+ p->path = strdup(rvalue);
+ if (!p->path) {
+ free(p);
+ return log_oom();
+ } else
+ log_error("[%s:%u] Failed to resolve unit specifiers on %s. Ignoring.",
+ filename, line, rvalue);
}
path_kill_slashes(p->path);
p->type = SOCKET_SOCKET;
k = unit_full_printf(UNIT(s), rvalue);
- if (!k) {
- free(p);
- return log_oom();
- }
+ if (!k)
+ log_error("[%s:%u] Failed to resolve unit specifiers on %s. Ignoring.",
+ filename, line, rvalue);
- r = socket_address_parse_netlink(&p->address, k);
+ r = socket_address_parse_netlink(&p->address, k ? k : rvalue);
if (r < 0) {
log_error("[%s:%u] Failed to parse address value, ignoring: %s", filename, line, rvalue);
free(p);
p->type = SOCKET_SOCKET;
k = unit_full_printf(UNIT(s), rvalue);
- if (!k) {
- free(p);
- return log_oom();
- }
+ if (!k)
+ log_error("[%s:%u] Failed to resolve unit specifiers on %s. Ignoring.",
+ filename, line, rvalue);
- r = socket_address_parse(&p->address, k);
+ r = socket_address_parse(&p->address, k ? k : rvalue);
if (r < 0) {
log_error("[%s:%u] Failed to parse address value, ignoring: %s", filename, line, rvalue);
free(p);
FOREACH_WORD_QUOTED(w, l, rvalue, state) {
if (first_word(w, "keep-caps"))
- c->secure_bits |= SECURE_KEEP_CAPS;
+ c->secure_bits |= 1<<SECURE_KEEP_CAPS;
else if (first_word(w, "keep-caps-locked"))
- c->secure_bits |= SECURE_KEEP_CAPS_LOCKED;
+ c->secure_bits |= 1<<SECURE_KEEP_CAPS_LOCKED;
else if (first_word(w, "no-setuid-fixup"))
- c->secure_bits |= SECURE_NO_SETUID_FIXUP;
+ c->secure_bits |= 1<<SECURE_NO_SETUID_FIXUP;
else if (first_word(w, "no-setuid-fixup-locked"))
- c->secure_bits |= SECURE_NO_SETUID_FIXUP_LOCKED;
+ c->secure_bits |= 1<<SECURE_NO_SETUID_FIXUP_LOCKED;
else if (first_word(w, "noroot"))
- c->secure_bits |= SECURE_NOROOT;
+ c->secure_bits |= 1<<SECURE_NOROOT;
else if (first_word(w, "noroot-locked"))
- c->secure_bits |= SECURE_NOROOT_LOCKED;
+ c->secure_bits |= 1<<SECURE_NOROOT_LOCKED;
else {
log_error("[%s:%u] Failed to parse secure bits, ignoring: %s",
filename, line, rvalue);
assert(rvalue);
assert(data);
- if (isempty(rvalue)) {
- /* An empty assignment resets */
- *capability_bounding_set_drop = 0;
- return 0;
- }
-
if (rvalue[0] == '~') {
invert = true;
rvalue++;
k = unit_full_printf(u, t);
if (!k)
- return log_oom();
+ log_error("[%s:%u] Failed to resolve unit specifiers on %s. Ignoring.",
+ filename, line, t);
- ku = cunescape(k);
+ ku = cunescape(k ? k : t);
if (!ku)
return log_oom();
id = CLOCK_REALTIME;
} else {
- if (parse_usec(rvalue, &u) < 0) {
+ if (parse_sec(rvalue, &u) < 0) {
log_error("[%s:%u] Failed to parse timer value, ignoring: %s", filename, line, rvalue);
return 0;
}
}
k = unit_full_printf(UNIT(p), rvalue);
- if (!k)
- return log_oom();
+ if (!k) {
+ k = strdup(rvalue);
+ if (!k)
+ return log_oom();
+ else
+ log_error("[%s:%u] Failed to resolve unit specifiers on %s. Ignoring.",
+ filename, line, rvalue);
+ }
if (!path_is_absolute(k)) {
log_error("[%s:%u] Path is not absolute, ignoring: %s", filename, line, k);
assert(rvalue);
assert(s);
- r = config_parse_usec(filename, line, section, lvalue, ltype, rvalue, data, userdata);
+ r = config_parse_sec(filename, line, section, lvalue, ltype, rvalue, data, userdata);
if (r < 0)
return r;
{ config_parse_socket_listen, "SOCKET [...]" },
{ config_parse_socket_bind, "SOCKETBIND" },
{ config_parse_socket_bindtodevice, "NETWORKINTERFACE" },
- { config_parse_usec, "SECONDS" },
+ { config_parse_sec, "SECONDS" },
{ config_parse_nsec, "NANOSECONDS" },
{ config_parse_path_strv, "PATH [...]" },
{ config_parse_unit_requires_mounts_for, "PATH [...]" },