]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
journald: prevent segfault on empty attr/current
authorSpace Meyer <spm@google.com>
Wed, 7 Dec 2022 13:11:30 +0000 (14:11 +0100)
committerLuca Boccassi <luca.boccassi@gmail.com>
Thu, 8 Dec 2022 00:00:25 +0000 (01:00 +0100)
getpidcon() might set con to NULL, even when it returned a 0 return
code[0]. The subsequent strlen(con) will then cause a segfault.

Alternatively the behaviour could also be changed in getpidcon. I
don't know whether the libselinux folks are comitted to the current
behaviour, but the getpidcon man page doesn't really make it obvious
this case could happen.

[0] https://github.com/SELinuxProject/selinux/blob/fb7f35495fbad468d6efa76c5fed727659903038/libselinux/src/procattr.c#L155-L158

src/journal/journald-context.c

index b2f6fcc2a3c416068c423cf8c2b8195f7507ddee..222855ae60f3c58eebe03f675cf7c50dd0e94cc2 100644 (file)
@@ -259,7 +259,7 @@ static int client_context_read_label(
 
                 /* If we got no SELinux label passed in, let's try to acquire one */
 
-                if (getpidcon(c->pid, &con) >= 0) {
+                if (getpidcon(c->pid, &con) >= 0 && con) {
                         free_and_replace(c->label, con);
                         c->label_size = strlen(c->label);
                 }