summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--configure.ac2
-rw-r--r--lib/Makefile.am2
-rw-r--r--lib/sdp.c12
-rw-r--r--src/dbus-common.c6
-rw-r--r--src/sdpd-service.c11
6 files changed, 36 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 529d3fe9..2c9049cd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+ver 4.12:
+ Fix crash with missing icon value.
+ Fix error checks of HAL plugin.
+ Fix SCO server socket cleanup on exit.
+ Fix memory leaks from DBusPendingCall.
+ Fix handling of pending authorization requests.
+ Fix missing protocol UUIDs in record pattern.
+
ver 4.11:
Change SCO server socket into a generic one.
Add test script for dummy telephony plugin.
diff --git a/configure.ac b/configure.ac
index cd8748ed..6ba12d0c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,7 +1,7 @@
AC_PREREQ(2.50)
AC_INIT()
-AM_INIT_AUTOMAKE(bluez, 4.11)
+AM_INIT_AUTOMAKE(bluez, 4.12)
AM_CONFIG_HEADER(config.h)
AM_MAINTAINER_MODE
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 26a0d71a..b48e42eb 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -2,7 +2,7 @@
lib_LTLIBRARIES = libbluetooth.la
libbluetooth_la_SOURCES = bluetooth.c hci.c sdp.c
-libbluetooth_la_LDFLAGS = -version-info 3:1:0
+libbluetooth_la_LDFLAGS = -version-info 3:2:0
INCLUDES = -I$(top_builddir)/include
diff --git a/lib/sdp.c b/lib/sdp.c
index 705b03c1..14c08ad9 100644
--- a/lib/sdp.c
+++ b/lib/sdp.c
@@ -1956,19 +1956,23 @@ static sdp_data_t *access_proto_to_dataseq(sdp_record_t *rec, sdp_list_t *proto)
for (i = 0, p = proto; p; p = p->next, i++) {
sdp_list_t *elt = (sdp_list_t *)p->data;
sdp_data_t *s;
+ uuid_t *uuid = NULL;
int pslen = 0;
for (; elt && pslen < sizeof(dtds); elt = elt->next, pslen++) {
sdp_data_t *d = (sdp_data_t *)elt->data;
dtds[pslen] = &d->dtd;
switch (d->dtd) {
case SDP_UUID16:
- values[pslen] = &((uuid_t *)d)->value.uuid16;
+ uuid = (uuid_t *) d;
+ values[pslen] = &uuid->value.uuid16;
break;
case SDP_UUID32:
- values[pslen] = &((uuid_t *)d)->value.uuid32;
+ uuid = (uuid_t *) d;
+ values[pslen] = &uuid->value.uuid32;
break;
case SDP_UUID128:
- values[pslen] = &((uuid_t *)d)->value.uuid128;
+ uuid = (uuid_t *) d;
+ values[pslen] = &uuid->value.uuid128;
break;
case SDP_UINT8:
values[pslen] = &d->val.uint8;
@@ -1988,6 +1992,8 @@ static sdp_data_t *access_proto_to_dataseq(sdp_record_t *rec, sdp_list_t *proto)
if (s) {
seqDTDs[i] = &s->dtd;
seqs[i] = s;
+ if (uuid)
+ sdp_pattern_add_uuid(rec, uuid);
}
}
seq = sdp_seq_alloc(seqDTDs, seqs, seqlen);
diff --git a/src/dbus-common.c b/src/dbus-common.c
index 6c15dea2..5d04b481 100644
--- a/src/dbus-common.c
+++ b/src/dbus-common.c
@@ -300,6 +300,12 @@ void dbus_message_iter_append_dict_entry(DBusMessageIter *dict,
{
DBusMessageIter entry;
+ if (type == DBUS_TYPE_STRING) {
+ const char *str = *((const char **) val);
+ if (str == NULL)
+ return;
+ }
+
dbus_message_iter_open_container(dict, DBUS_TYPE_DICT_ENTRY,
NULL, &entry);
diff --git a/src/sdpd-service.c b/src/sdpd-service.c
index cd0b97d0..d0df7022 100644
--- a/src/sdpd-service.c
+++ b/src/sdpd-service.c
@@ -387,6 +387,7 @@ void register_device_id(const uint16_t vendor, const uint16_t product,
int add_record_to_server(const bdaddr_t *src, sdp_record_t *rec)
{
sdp_data_t *data;
+ sdp_list_t *pattern;
if (rec->handle == 0xffffffff) {
rec->handle = sdp_next_handle();
@@ -410,6 +411,16 @@ int add_record_to_server(const bdaddr_t *src, sdp_record_t *rec)
sdp_pattern_add_uuid(rec, &uuid);
}
+ for (pattern = rec->pattern; pattern; pattern = pattern->next) {
+ char uuid[32];
+
+ if (pattern->data == NULL)
+ continue;
+
+ sdp_uuid2strn((uuid_t *) pattern->data, uuid, sizeof(uuid));
+ debug("Record pattern UUID %s", uuid);
+ }
+
update_db_timestamp();
update_svclass_list();