diff options
author | Jie Jiang <jiejiang@chromium.org> | 2020-08-25 23:37:42 -0700 |
---|---|---|
committer | Luiz Augusto von Dentz <luiz.von.dentz@intel.com> | 2020-08-27 10:52:15 -0700 |
commit | 670951028dc417361db6a2536d2d9a38f0ae783d (patch) | |
tree | b375b9135d60b41e17feed7c47a7c7f32cde2888 /src | |
parent | 2b480bd5660bc27b9340118c87b47acbbc6e109d (diff) | |
download | bluez-670951028dc417361db6a2536d2d9a38f0ae783d.tar.gz |
gatt: Accept empty array in parse_includes()
Currently parse_includes() will return false if the "Includes" property
is an empty array. Empty array in the "Includes" property should be
treated as valid.
Diffstat (limited to 'src')
-rw-r--r-- | src/gatt-database.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/gatt-database.c b/src/gatt-database.c index 07d567078..e7e4a36a6 100644 --- a/src/gatt-database.c +++ b/src/gatt-database.c @@ -2008,6 +2008,7 @@ static bool parse_includes(GDBusProxy *proxy, struct external_service *service) DBusMessageIter iter; DBusMessageIter array; char *obj; + int type; /* Includes property is optional */ if (!g_dbus_proxy_get_property(proxy, "Includes", &iter)) @@ -2018,9 +2019,9 @@ static bool parse_includes(GDBusProxy *proxy, struct external_service *service) dbus_message_iter_recurse(&iter, &array); - do { - if (dbus_message_iter_get_arg_type(&array) != - DBUS_TYPE_OBJECT_PATH) + while ((type = dbus_message_iter_get_arg_type(&array)) + != DBUS_TYPE_INVALID) { + if (type != DBUS_TYPE_OBJECT_PATH) return false; dbus_message_iter_get_basic(&array, &obj); @@ -2028,11 +2029,12 @@ static bool parse_includes(GDBusProxy *proxy, struct external_service *service) if (!queue_push_tail(service->includes, obj)) { error("Failed to add Includes path in queue\n"); return false; - } incr_attr_count(service, 1); - } while (dbus_message_iter_next(&array)); + + dbus_message_iter_next(&array); + } return true; } |