chiark / gitweb /
bus: ignore the passed UID on EXTERNAL auth if ANONYMOUS is allowed
authorLennart Poettering <lennart@poettering.net>
Mon, 1 Apr 2013 01:24:03 +0000 (03:24 +0200)
committerLennart Poettering <lennart@poettering.net>
Mon, 1 Apr 2013 01:29:29 +0000 (03:29 +0200)
src/libsystemd-bus/bus-socket.c

index b9ef7c03720ea6f58e5d88961d7015ecbafc7f9f..30e594243d5d62893182f30d21b1600cc22b84c4 100644 (file)
@@ -235,7 +235,7 @@ static int verify_external_token(sd_bus *b, const char *p, size_t l) {
          * the owner of this bus wanted authentication he should have
          * checked SO_PEERCRED before even creating the bus object. */
 
-        if (!b->ucred_valid)
+        if (!b->anonymous_auth && !b->ucred_valid)
                 return 0;
 
         if (l <= 0)
@@ -258,7 +258,9 @@ static int verify_external_token(sd_bus *b, const char *p, size_t l) {
         if (r < 0)
                 return 0;
 
-        if (u != b->ucred.uid)
+        /* We ignore the passed value if anonymous authentication is
+         * on anyway. */
+        if (!b->anonymous_auth && u != b->ucred.uid)
                 return 0;
 
         return 1;