X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcore%2Fload-fragment.c;h=42c181de4da6efbef91ad6f3463af6752a0f43e6;hb=4e6db59202ad2dbbef56a69985643390ffdd57bd;hp=d79e1d936cda712655ff2db4073dd56355a58125;hpb=26d04f86a36595e3565c74d67863e076c3e3c773;p=elogind.git diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index d79e1d936..42c181de4 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -127,9 +127,10 @@ int config_parse_unit_string_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_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( @@ -152,9 +153,10 @@ 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( @@ -177,9 +179,10 @@ 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( @@ -217,8 +220,13 @@ 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); @@ -229,12 +237,11 @@ int config_parse_socket_listen( 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); @@ -247,12 +254,11 @@ int config_parse_socket_listen( 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); @@ -840,17 +846,17 @@ int config_parse_exec_secure_bits( FOREACH_WORD_QUOTED(w, l, rvalue, state) { if (first_word(w, "keep-caps")) - c->secure_bits |= SECURE_KEEP_CAPS; + c->secure_bits |= 1<secure_bits |= SECURE_KEEP_CAPS_LOCKED; + c->secure_bits |= 1<secure_bits |= SECURE_NO_SETUID_FIXUP; + c->secure_bits |= 1<secure_bits |= SECURE_NO_SETUID_FIXUP_LOCKED; + c->secure_bits |= 1<secure_bits |= SECURE_NOROOT; + c->secure_bits |= 1<secure_bits |= SECURE_NOROOT_LOCKED; + c->secure_bits |= 1<