chiark / gitweb /
bus: ignore the passed UID on EXTERNAL auth if ANONYMOUS is allowed
[elogind.git] / 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;