diff options
| -rw-r--r-- | ChangeLog | 8 | ||||
| -rw-r--r-- | configure.ac | 2 | ||||
| -rw-r--r-- | lib/Makefile.am | 2 | ||||
| -rw-r--r-- | lib/sdp.c | 12 | ||||
| -rw-r--r-- | src/dbus-common.c | 6 | ||||
| -rw-r--r-- | src/sdpd-service.c | 11 | 
6 files changed, 36 insertions, 5 deletions
@@ -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 @@ -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();  | 
