Messages in this thread Patch in this message | | | From | David Herrmann <> | Subject | [PATCH 9/9] kdbus/tests: properly parse KDBUS_CMD_LIST objects | Date | Thu, 6 Aug 2015 10:21:28 +0200 |
| |
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 <daniel@zonque.org> Signed-off-by: David Herrmann <dh.herrmann@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
| |