X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcore%2Fsocket.c;h=7c18a2b75c17898676df6b6e7c79b33fe5bbabb6;hb=2f20a8ebdb5aed3146f366360762d8963efe8d82;hp=d57e7701cae642e1e6db007ee142b9d03c6a48bc;hpb=a606871da508995f5ede113a8fc6538afd98966c;p=elogind.git 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: