summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2005-08-25 19:34:51 +0000
committerLennart Poettering <lennart@poettering.net>2005-08-25 19:34:51 +0000
commit88b84af7e3fe41a46ddf8ef39cd3b2f90369fc5e (patch)
tree931837510c0cfe168ee14334ebd243dd90b791c8
parent7bf79a1a47143d0b2d1eb87fe1b938f870edc5b2 (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
-rw-r--r--avahi-client/resolver.c13
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);
}