chiark / gitweb /
sd-bus: fix transition left-overs in sd_bus_get_owner_creds()
authorDaniel Mack <daniel@zonque.org>
Wed, 22 Oct 2014 20:06:53 +0000 (22:06 +0200)
committerDaniel Mack <daniel@zonque.org>
Wed, 22 Oct 2014 20:06:53 +0000 (22:06 +0200)
sd_bus_get_owner_creds() was only halfly ported over to
_cleanup_bus_creds_unref_.

src/libsystemd/sd-bus/bus-control.c

index a84b060..39f4fc8 100644 (file)
@@ -826,10 +826,8 @@ _public_ int sd_bus_get_owner_creds(sd_bus *bus, uint64_t mask, sd_bus_creds **r
 
         if (!isempty(bus->label) && (mask & SD_BUS_CREDS_SELINUX_CONTEXT)) {
                 c->label = strdup(bus->label);
 
         if (!isempty(bus->label) && (mask & SD_BUS_CREDS_SELINUX_CONTEXT)) {
                 c->label = strdup(bus->label);
-                if (!c->label) {
-                        sd_bus_creds_unref(c);
+                if (!c->label)
                         return -ENOMEM;
                         return -ENOMEM;
-                }
 
                 c->mask |= SD_BUS_CREDS_SELINUX_CONTEXT;
         }
 
                 c->mask |= SD_BUS_CREDS_SELINUX_CONTEXT;
         }
@@ -852,13 +850,12 @@ _public_ int sd_bus_get_owner_creds(sd_bus *bus, uint64_t mask, sd_bus_creds **r
                         return r;
         } else {
                 r = bus_creds_add_more(c, mask, pid, 0);
                         return r;
         } else {
                 r = bus_creds_add_more(c, mask, pid, 0);
-                if (r < 0) {
-                        sd_bus_creds_unref(c);
+                if (r < 0)
                         return r;
                         return r;
-                }
         }
 
         *ret = c;
         }
 
         *ret = c;
+        c = NULL;
         return 0;
 }
 
         return 0;
 }