From 7d2c9c6b50954600575395430596262b0fa3d90a Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 28 Mar 2019 16:46:27 +0100 Subject: [PATCH 1/3] load-fragment: use TAKE_PTR() where we can --- src/core/load-fragment.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index 2f62c7acb5..aa20473d57 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -312,10 +312,9 @@ int config_parse_unit_path_strv_printf( if (r < 0) return 0; - r = strv_push(x, k); + r = strv_consume(x, TAKE_PTR(k)); if (r < 0) return log_oom(); - k = NULL; } } From 4a66b5c9bf9aabae8b8ed2720f5f21a4a2a21061 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 28 Mar 2019 16:59:57 +0100 Subject: [PATCH 2/3] =?UTF-8?q?core:=20complain=20and=20correct=20/var/run?= =?UTF-8?q?/=20=E2=86=92=20/run/=20for=20listening=20sockets?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We already do that for PIDFile= paths, and for tmpfiles.d/ snippets, let's also do this for .socket paths. --- src/core/load-fragment.c | 78 +++++++++++++++++++++++++++------------- 1 file changed, 54 insertions(+), 24 deletions(-) diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index aa20473d57..b7ee749006 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -318,16 +318,44 @@ int config_parse_unit_path_strv_printf( } } -int config_parse_socket_listen(const char *unit, - const char *filename, - unsigned line, - const char *section, - unsigned section_line, - const char *lvalue, - int ltype, - const char *rvalue, - void *data, - void *userdata) { +static int patch_var_run( + const char *unit, + const char *filename, + unsigned line, + const char *lvalue, + char **path) { + + const char *e; + char *z; + + e = path_startswith(*path, "/var/run/"); + if (!e) + return 0; + + z = path_join("/run/", e); + if (!z) + return log_oom(); + + log_syntax(unit, LOG_NOTICE, filename, line, 0, + "%s= references a path below legacy directory /var/run/, updating %s → %s; " + "please update the unit file accordingly.", lvalue, *path, z); + + free_and_replace(*path, z); + + return 1; +} + +int config_parse_socket_listen( + const char *unit, + const char *filename, + unsigned line, + const char *section, + unsigned section_line, + const char *lvalue, + int ltype, + const char *rvalue, + void *data, + void *userdata) { _cleanup_free_ SocketPort *p = NULL; SocketPort *tail; @@ -364,6 +392,12 @@ int config_parse_socket_listen(const char *unit, if (r < 0) return 0; + if (ltype == SOCKET_FIFO) { + r = patch_var_run(unit, filename, line, lvalue, &k); + if (r < 0) + return r; + } + free_and_replace(p->path, k); p->type = ltype; @@ -393,6 +427,12 @@ int config_parse_socket_listen(const char *unit, return 0; } + if (k[0] == '/') { /* Only for AF_UNIX file system sockets… */ + r = patch_var_run(unit, filename, line, lvalue, &k); + if (r < 0) + return r; + } + r = socket_address_parse_and_warn(&p->address, k); if (r < 0) { if (r != -EAFNOSUPPORT) @@ -4253,7 +4293,6 @@ int config_parse_pid_file( _cleanup_free_ char *k = NULL, *n = NULL; Unit *u = userdata; char **s = data; - const char *e; int r; assert(filename); @@ -4283,20 +4322,11 @@ int config_parse_pid_file( if (r < 0) return r; - e = path_startswith(n, "/var/run/"); - if (e) { - char *z; - - z = strjoin("/run/", e); - if (!z) - return log_oom(); - - log_syntax(unit, LOG_NOTICE, filename, line, 0, "PIDFile= references path below legacy directory /var/run/, updating %s → %s; please update the unit file accordingly.", n, z); - - free_and_replace(*s, z); - } else - free_and_replace(*s, n); + r = patch_var_run(unit, filename, line, lvalue, &n); + if (r < 0) + return r; + free_and_replace(*s, n); return 0; } From da3d1985637fb0b06b65a140ab750a4f0f1c2d45 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 28 Mar 2019 17:00:46 +0100 Subject: [PATCH 3/3] update TODO --- TODO | 3 --- 1 file changed, 3 deletions(-) diff --git a/TODO b/TODO index 5b312649a5..c0fe26d1dd 100644 --- a/TODO +++ b/TODO @@ -63,9 +63,6 @@ Features: * bootctl,sd-boot: actually honour the "architecture" key -* when a socket unit is spawned with an AF_UNIX path in /var/run, complain and - patch it to use /run instead - * set memory.oom.group in cgroup v2 for all leaf cgroups (kernel v4.19+) * add a new syscall group "@esoteric" for more esoteric stuff such as bpf() and