chiark / gitweb /
bus-proxyd: ignore errors from sd_bus_creds_get_well_known_names()
authorDaniel Mack <daniel@zonque.org>
Tue, 23 Dec 2014 17:36:29 +0000 (18:36 +0100)
committerDaniel Mack <daniel@zonque.org>
Tue, 23 Dec 2014 17:41:26 +0000 (18:41 +0100)
sd_bus_creds_get_well_known_names() fails with -ENODATA in case the
message has no names attached, which is intended behavior if the
remote connection didn't own any names at the time of sending.

The function already deals with 'sender_names' being an empty strv,
so we can just continue in such cases.

src/bus-proxyd/bus-proxyd.c

index d15bd83514f5c5789f2a80b245817a6030d719f4..6da7fb9b55e1d89276f9888a2504ef7bfa49f0b2 100644 (file)
@@ -988,9 +988,7 @@ static int process_policy(sd_bus *from, sd_bus *to, sd_bus_message *m, Policy *p
                         return 0;
 
                 /* The message came from the kernel, and is sent to our legacy client. */
-                r = sd_bus_creds_get_well_known_names(&m->creds, &sender_names);
-                if (r < 0)
-                        return r;
+                sd_bus_creds_get_well_known_names(&m->creds, &sender_names);
 
                 (void) sd_bus_creds_get_uid(&m->creds, &sender_uid);
                 (void) sd_bus_creds_get_gid(&m->creds, &sender_gid);
@@ -1054,14 +1052,12 @@ static int process_policy(sd_bus *from, sd_bus *to, sd_bus_message *m, Policy *p
                         if (r < 0)
                                 return handle_policy_error(m, r);
 
-                        r = sd_bus_creds_get_well_known_names(destination_creds, &destination_names);
-                        if (r < 0)
-                                return handle_policy_error(m, r);
-
                         r = sd_bus_creds_get_unique_name(destination_creds, &destination_unique);
                         if (r < 0)
                                 return handle_policy_error(m, r);
 
+                        sd_bus_creds_get_well_known_names(destination_creds, &destination_names);
+
                         (void) sd_bus_creds_get_uid(destination_creds, &destination_uid);
                         (void) sd_bus_creds_get_gid(destination_creds, &destination_gid);
                 }