There is no reason to assume the information returned by KDBUS_CMD_LIST
contains only a single KDBUS_ITEM_OWNED_NAME. Parse each of them properly
and don't bail out early.

Reviewed-by: Daniel Mack <dan...@zonque.org>
Signed-off-by: David Herrmann <dh.herrm...@gmail.com>
---
 tools/testing/selftests/kdbus/kdbus-util.c |  9 +++++----
 tools/testing/selftests/kdbus/test-names.c | 17 +++++++++++------
 2 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/tools/testing/selftests/kdbus/kdbus-util.c 
b/tools/testing/selftests/kdbus/kdbus-util.c
index a5e54ca..82fa89b 100644
--- a/tools/testing/selftests/kdbus/kdbus-util.c
+++ b/tools/testing/selftests/kdbus/kdbus-util.c
@@ -1155,11 +1155,12 @@ int kdbus_list(struct kdbus_conn *conn, uint64_t flags)
                        if (item->type == KDBUS_ITEM_OWNED_NAME) {
                                n = item->name.name;
                                flags = item->name.flags;
-                       }
 
-               kdbus_printf("%8llu flags=0x%08llx conn=0x%08llx '%s'\n",
-                            name->id, (unsigned long long) flags,
-                            name->flags, n);
+                               kdbus_printf("%8llu flags=0x%08llx 
conn=0x%08llx '%s'\n",
+                                            name->id,
+                                            (unsigned long long) flags,
+                                            name->flags, n);
+                       }
        }
        kdbus_printf("\n");
 
diff --git a/tools/testing/selftests/kdbus/test-names.c 
b/tools/testing/selftests/kdbus/test-names.c
index 66ebb47..fd4ac5a 100644
--- a/tools/testing/selftests/kdbus/test-names.c
+++ b/tools/testing/selftests/kdbus/test-names.c
@@ -35,15 +35,20 @@ static int conn_is_name_owner(const struct kdbus_conn *conn,
                struct kdbus_item *item;
                const char *n = NULL;
 
-               KDBUS_ITEM_FOREACH(item, name, items)
-                       if (item->type == KDBUS_ITEM_OWNED_NAME)
+               KDBUS_ITEM_FOREACH(item, name, items) {
+                       if (item->type == KDBUS_ITEM_OWNED_NAME) {
                                n = item->name.name;
 
-               if (name->id == conn->id &&
-                   n && strcmp(needle, n) == 0) {
-                       found = true;
-                       break;
+                               if (name->id == conn->id &&
+                                   n && strcmp(needle, n) == 0) {
+                                       found = true;
+                                       break;
+                               }
+                       }
                }
+
+               if (found)
+                       break;
        }
 
        ret = kdbus_free(conn, cmd_list.offset);
-- 
2.5.0

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to