]> code.delx.au - pulseaudio/commitdiff
bluetooth: Fix crash due to usage of pa_bool_t instead of dbus_bool_t
authorArun Raghavan <arun.raghavan@collabora.co.uk>
Fri, 11 May 2012 12:02:20 +0000 (17:32 +0530)
committerArun Raghavan <arun.raghavan@collabora.co.uk>
Fri, 11 May 2012 12:02:20 +0000 (17:32 +0530)
pa_bool_t and dbus_bool_t cannot be used interchangably since their size
might (and do) vary. This caused a crash on some systems which was
reported and root caused by: Aidan Thornton <makosoft@googlemail.com>.

Ref: https://bugs.gentoo.org/show_bug.cgi?id=398097

src/modules/bluetooth/bluetooth-util.c

index 3f39a91c235ff8105b5879b85f2a510db1c27f29..b7865028abcb86ba7334fa46a7fab9612dbf9462 100644 (file)
@@ -753,7 +753,7 @@ int pa_bluetooth_transport_parse_property(pa_bluetooth_transport *t, DBusMessage
 
         case DBUS_TYPE_BOOLEAN: {
 
-            pa_bool_t *value;
+            dbus_bool_t value;
             dbus_message_iter_get_basic(&variant_i, &value);
 
             if (pa_streq(key, "NREC"))
@@ -1144,9 +1144,11 @@ static DBusMessage *endpoint_set_configuration(DBusConnection *conn, DBusMessage
                 goto fail;
             dbus_message_iter_get_basic(&value, &dev_path);
         } else if (strcasecmp(key, "NREC") == 0) {
+            dbus_bool_t tmp_boolean;
             if (var != DBUS_TYPE_BOOLEAN)
                 goto fail;
-            dbus_message_iter_get_basic(&value, &nrec);
+            dbus_message_iter_get_basic(&value, &tmp_boolean);
+            nrec = tmp_boolean;
         } else if (strcasecmp(key, "Configuration") == 0) {
             DBusMessageIter array;
             if (var != DBUS_TYPE_ARRAY)