From: Kay Sievers Date: Sat, 19 Apr 2014 11:53:11 +0000 (+0200) Subject: Revert "Handle Unix domain socket connections from outside our namespace" X-Git-Tag: v213~383 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=2f20a8ebdb5aed3146f366360762d8963efe8d82;hp=a606871da508995f5ede113a8fc6538afd98966c Revert "Handle Unix domain socket connections from outside our namespace" This reverts commit 9754d56e9b21bfe89fc18f47987d6bef491b8521. It causes a crash in PID1: Apr 19 13:49:32 lon systemd[1]: Code should not be reached 'Unhandled socket type.' at src/core/socket.c:684, function instance_from_socket(). Aborting. Apr 19 13:49:32 lon systemd[1]: Caught , dumped core as pid 336. Apr 19 13:49:32 lon systemd[1]: Freezing execution. --- diff --git a/src/core/socket.c b/src/core/socket.c index d57e7701c..7c18a2b75 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -663,21 +663,17 @@ static int instance_from_socket(int fd, unsigned nr, char **instance) { int k; k = getpeercred(fd, &ucred); - if (k >= 0) { - if (asprintf(&r, - "%u-"PID_FMT"-"UID_FMT, - nr, ucred.pid, ucred.uid) < 0) - return -ENOMEM; - } else if (k == -ENODATA) { - /* This handles the case where somebody is - * connecting from another pid/uid namespace - * (e.g. from outside of our container). */ - if (asprintf(&r, - "%u-unknown", - nr) < 0) - return -ENOMEM; - } else + if (k < 0) return k; + + if (asprintf(&r, + "%u-%lu-%lu", + nr, + (unsigned long) ucred.pid, + (unsigned long) ucred.uid) < 0) + return -ENOMEM; + + break; } default: