On Tue, 2013-08-13 at 01:54 -0300, jprv...@gmail.com wrote:
> +static int parse_adapter_properties(pa_bluetooth_discovery *y, const char 
> *adapter, DBusMessageIter *i) {
> +    DBusMessageIter element_i;
> +
> +    pa_assert(y);
> +    pa_assert(adapter);
> +
> +    dbus_message_iter_recurse(i, &element_i);
> +
> +    while (dbus_message_iter_get_arg_type(&element_i) == 
> DBUS_TYPE_DICT_ENTRY) {
> +        DBusMessageIter dict_i, variant_i;
> +        const char *key;
> +
> +        dbus_message_iter_recurse(&element_i, &dict_i);
> +
> +        key = check_variant_property(&dict_i);
> +        if (key == NULL) {
> +            pa_log_error("Received invalid property for adapter %s", 
> adapter);
> +            return -1;
> +        }
> +
> +        dbus_message_iter_recurse(&dict_i, &variant_i);
> +
> +        if (dbus_message_iter_get_arg_type(&variant_i) == DBUS_TYPE_STRING 
> && pa_streq(key, "Address")) {
> +            char *value;
> +            pa_bluetooth_adapter *a = pa_xnew(pa_bluetooth_adapter, 1);
> +
> +            dbus_message_iter_get_basic(&variant_i, &value);
> +            a->path = pa_xstrdup(adapter);
> +            a->address = pa_xstrdup(value);
> +            pa_hashmap_put(y->adapters, a->path, a);

This leaks pa_bluetooth_adapter objects if bluetoothd sends duplicate
addresses. pa_bluetooth_adapter creation should be handled in the same
way as pa_bluetooth_device creation.

-- 
Tanu

_______________________________________________
pulseaudio-discuss mailing list
pulseaudio-discuss@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss

Reply via email to