client/gatt: proxy_property_changed: check for NULL iterator

The passed iterator can be NULL as in
gdbus/client.c::properties_changed():
...
   proxy->prop_func(..., ..., iter=NULL, ...)
   +--client/gatt.c::proxy_property_changed(..., ..., iter, ...);
      +--dbus_message_iter_get_arg_type(iter);
...
This commit is contained in:
Christian Eggers 2022-09-23 16:58:12 +02:00 committed by Luiz Augusto von Dentz
parent 47346e5390
commit ee750bbaf6

View File

@ -3003,17 +3003,20 @@ static void proxy_property_changed(GDBusProxy *proxy, const char *name,
chrc->path, bt_uuidstr_to_str(chrc->uuid), name); chrc->path, bt_uuidstr_to_str(chrc->uuid), name);
if (!strcmp(name, "Value")) { if (!strcmp(name, "Value")) {
DBusMessageIter array; uint8_t *value = '\0'; /* don't pass NULL to write_value() */
uint8_t *value; int len = 0;
int len;
if (iter && dbus_message_iter_get_arg_type(iter) ==
DBUS_TYPE_ARRAY) {
DBusMessageIter array;
if (dbus_message_iter_get_arg_type(iter) == DBUS_TYPE_ARRAY) {
dbus_message_iter_recurse(iter, &array); dbus_message_iter_recurse(iter, &array);
dbus_message_iter_get_fixed_array(&array, &value, &len); dbus_message_iter_get_fixed_array(&array, &value, &len);
write_value(&chrc->value_len, &chrc->value, value, len,
0, chrc->max_val_len);
bt_shell_hexdump(value, len);
} }
write_value(&chrc->value_len, &chrc->value, value, len,
0, chrc->max_val_len);
bt_shell_hexdump(value, len);
} }
g_dbus_emit_property_changed(conn, chrc->path, CHRC_INTERFACE, name); g_dbus_emit_property_changed(conn, chrc->path, CHRC_INTERFACE, name);