diff options
author | Lennart Poettering <lennart@poettering.net> | 2005-08-25 19:34:51 +0000 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2005-08-25 19:34:51 +0000 |
commit | 88b84af7e3fe41a46ddf8ef39cd3b2f90369fc5e (patch) | |
tree | 931837510c0cfe168ee14334ebd243dd90b791c8 /avahi-client | |
parent | 7bf79a1a47143d0b2d1eb87fe1b938f870edc5b2 (diff) |
* fix "sebest's bug" (TM) -- deal with dbus brokeness when passing zero length arrays
git-svn-id: file:///home/lennart/svn/public/avahi/trunk@446 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe
Diffstat (limited to 'avahi-client')
-rw-r--r-- | avahi-client/resolver.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/avahi-client/resolver.c b/avahi-client/resolver.c index 66208cf..f23f9d7 100644 --- a/avahi-client/resolver.c +++ b/avahi-client/resolver.c @@ -93,8 +93,7 @@ static void pending_call_callback(DBusPendingCall *pending, void *userdata) { for (;;) { DBusMessageIter sub2; - int at, n; - uint8_t *k; + int at; if ((at = dbus_message_iter_get_arg_type(&sub)) == DBUS_TYPE_INVALID) break; @@ -107,8 +106,14 @@ static void pending_call_callback(DBusPendingCall *pending, void *userdata) { } dbus_message_iter_recurse(&sub, &sub2); - dbus_message_iter_get_fixed_array(&sub2, &k, &n); - strlst = avahi_string_list_add_arbitrary(strlst, k, n); + + if (dbus_message_iter_get_array_len(&sub2) > 0) { + uint8_t *k; + int n; + + dbus_message_iter_get_fixed_array(&sub2, &k, &n); + strlst = avahi_string_list_add_arbitrary(strlst, k, n); + } dbus_message_iter_next(&sub); } |