names: fix kdbus_name_lookup() to not ref NULL conns (ABI break)
authorDavid Herrmann <dh.herrmann@gmail.com>
Thu, 10 Apr 2014 19:32:08 +0000 (21:32 +0200)
committerDavid Herrmann <dh.herrmann@gmail.com>
Thu, 10 Apr 2014 19:32:08 +0000 (21:32 +0200)
The previous kdbus_name_lookup() fix assumed kdbus_conn_ref(NULL) is a
no-op. Turns out, it's a panic-op instead... Fix it.

Also add the ABI-break annotation as the previous error-code change
requires new systemd user-space (fixed by Kay).

Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
names.c

diff --git a/names.c b/names.c
index 1981efbf4234d9308a6e3186126356457adc38b6..3b9c010a63ee5780f198b5af754e9833b5ff9d50 100644 (file)
--- a/names.c
+++ b/names.c
@@ -335,10 +335,18 @@ int kdbus_name_lookup(struct kdbus_name_registry *reg,
        mutex_lock(&reg->lock);
        e = __kdbus_name_lookup(reg, hash, name);
        if (e) {
-               if (conn)
-                       *conn = kdbus_conn_ref(e->conn);
-               if (activator)
-                       *activator = kdbus_conn_ref(e->activator);
+               if (conn) {
+                       if (e->conn)
+                               *conn = kdbus_conn_ref(e->conn);
+                       else
+                               *conn = NULL;
+               }
+               if (activator) {
+                       if (e->activator)
+                               *activator = kdbus_conn_ref(e->activator);
+                       else
+                               *activator = NULL;
+               }
                if (name_id)
                        *name_id = e->name_id;
        }