[pulseaudio-discuss] [PATCH 1/3] bluetooth: Add 'bluez.alias' property
Mikel Astiz
mikel.astiz.oss at gmail.com
Mon Apr 29 07:47:48 PDT 2013
Hi Tanu,
On Mon, Apr 29, 2013 at 4:38 PM, Tanu Kaskinen <tanu.kaskinen at intel.com> wrote:
> On Mon, 2013-04-29 at 16:20 +0200, Mikel Astiz wrote:
>> On Mon, Apr 29, 2013 at 4:01 PM, Tanu Kaskinen <tanu.kaskinen at intel.com> wrote:
>> > On Fri, 2013-04-26 at 12:30 -0300, jprvita at gmail.com wrote:
>> >> src/modules/bluetooth/module-bluetooth-device.c | 1 +
>> >> 1 file changed, 1 insertion(+)
>> >>
>> >> diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c
>> >> index c877df2..8695c80 100644
>> >> --- a/src/modules/bluetooth/module-bluetooth-device.c
>> >> +++ b/src/modules/bluetooth/module-bluetooth-device.c
>> >> @@ -2243,6 +2243,7 @@ static int add_card(struct userdata *u) {
>> >> pa_proplist_sets(data.proplist, "bluez.path", device->path);
>> >> pa_proplist_setf(data.proplist, "bluez.class", "0x%06x", (unsigned) device->class);
>> >> pa_proplist_sets(data.proplist, "bluez.name", device->name);
>> >> + pa_proplist_sets(data.proplist, "bluez.alias", device->alias);
>> >
>> > device->alias is not guaranteed to be non-NULL, so this code can crash.
>> > If the Alias property is non-optional in Bluez, bluetooth-util should
>> > ensure that it is indeed always set.
>>
>> BlueZ 4 API guarantees the property will be present, and therefore
>> device->alias should always be set. The obvious exception is BlueZ
>> misbehaving, but this condition might hold true for device->name as
>> well, which we're not checking either.
>>
>> I don't think there's any other scenario where the alias could be NULL
>> and the name be set outside bluetooth-util.
>>
>> So while your point is valid, I suggest we fix this in a later patch,
>> in a similar way that the BlueZ 5 patchset does (set device_info_valid
>> to -1 if any non-optional property is missing).
>
> Ah, so this is fixed at least for BlueZ 5. Will the same property
> parsing code be used for BlueZ 4? If not, does somebody promise to write
> the fix for BlueZ 4?
The codepath will be completely different for BlueZ 4 and 5, due to
the fundamental difference in how objects and properties are gathered
with or without the ObjectManager interface.
Fixing this for BlueZ 4 is desirable but not critical IMO, since it's
very unlikely that we hit this issue (based on how BlueZ 4 implements
GetProperties()). Besides, the fix seems non-trivial and there's
always the possibility to introduce regressions.
Cheers,
Mikel
More information about the pulseaudio-discuss
mailing list