chiark / gitweb /
Revert "Handle Unix domain socket connections from outside our namespace"
authorKay Sievers <kay@vrfy.org>
Sat, 19 Apr 2014 11:53:11 +0000 (13:53 +0200)
committerKay Sievers <kay@vrfy.org>
Sat, 19 Apr 2014 11:53:11 +0000 (13:53 +0200)
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 <ABRT>, dumped core as pid 336.
  Apr 19 13:49:32 lon systemd[1]: Freezing execution.

src/core/socket.c

index d57e770..7c18a2b 100644 (file)
@@ -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: