Hello community,
here is the log from the commit of package bluez for openSUSE:Factory
checked in at Tue Mar 3 00:16:21 CET 2009.
--------
--- bluez/bluez.changes 2009-02-26 13:12:34.000000000 +0100
+++ /mounts/work_src_done/STABLE/bluez/bluez.changes 2009-03-02 18:19:34.000000000 +0100
@@ -1,0 +2,10 @@
+Mon Mar 2 18:10:00 CET 2009 - seife@suse.de
+
+- update to bluez-4.32:
+ - Fix broken SDP record handling.
+ - Fix SDP data buffer parsing.
+ - Fix more SDP memory leaks.
+ - Fix read scan enable calls.
+ - Fix A2DP stream handling.
+
+-------------------------------------------------------------------
--- bluez/bluez-gstreamer.changes 2009-02-13 09:33:52.000000000 +0100
+++ /mounts/work_src_done/STABLE/bluez/bluez-gstreamer.changes 2009-03-02 18:19:31.000000000 +0100
@@ -1,0 +2,22 @@
+Mon Mar 2 18:10:00 CET 2009 - seife@suse.de
+
+- update to bluez-4.32:
+ - Fix broken SDP record handling.
+ - Fix SDP data buffer parsing.
+ - Fix more SDP memory leaks.
+ - Fix read scan enable calls.
+ - Fix A2DP stream handling.
+
+-------------------------------------------------------------------
+Thu Feb 26 13:04:25 CET 2009 - seife@suse.de
+
+- update to bluez-4.31:
+ - Add support for new BtIO helper library.
+ - Fix AVDTP session close issue.
+ - Fix SDP memory leaks.
+ - Fix various uninitialized memory issues.
+ - Fix duplicate signal emissions.
+ - Fix property changes request handling.
+ - Fix class of device storage handling.
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
bluez-4.31.tar.bz2
New:
----
bluez-4.32.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ bluez-gstreamer.spec ++++++
--- /var/tmp/diff_new_pack.j14464/_old 2009-03-03 00:16:07.000000000 +0100
+++ /var/tmp/diff_new_pack.j14464/_new 2009-03-03 00:16:07.000000000 +0100
@@ -1,5 +1,5 @@
#
-# spec file for package bluez-gstreamer (Version 4.31)
+# spec file for package bluez-gstreamer (Version 4.32)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -24,7 +24,7 @@
BuildRequires: alsa-devel libsndfile-devel
BuildRequires: gstreamer-0_10-devel gstreamer-0_10-plugins-base-devel
Url: http://www.bluez.org
-Version: 4.31
+Version: 4.32
Release: 1
Summary: Bluetooth Sound Support
Group: Productivity/Multimedia/Sound/Utilities
@@ -109,6 +109,22 @@
%{_libdir}/gstreamer-*/*.so
%changelog
+* Mon Mar 02 2009 seife@suse.de
+- update to bluez-4.32:
+ - Fix broken SDP record handling.
+ - Fix SDP data buffer parsing.
+ - Fix more SDP memory leaks.
+ - Fix read scan enable calls.
+ - Fix A2DP stream handling.
+* Thu Feb 26 2009 seife@suse.de
+- update to bluez-4.31:
+ - Add support for new BtIO helper library.
+ - Fix AVDTP session close issue.
+ - Fix SDP memory leaks.
+ - Fix various uninitialized memory issues.
+ - Fix duplicate signal emissions.
+ - Fix property changes request handling.
+ - Fix class of device storage handling.
* Fri Feb 13 2009 seife@suse.de
- update to bluez-4.30:
- Add CID field to L2CAP socket address structure.
++++++ bluez.spec ++++++
--- /var/tmp/diff_new_pack.j14464/_old 2009-03-03 00:16:07.000000000 +0100
+++ /var/tmp/diff_new_pack.j14464/_new 2009-03-03 00:16:07.000000000 +0100
@@ -1,5 +1,5 @@
#
-# spec file for package bluez (Version 4.31)
+# spec file for package bluez (Version 4.32)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -23,7 +23,7 @@
BuildRequires: glib2-devel libnl-devel libusb-devel
BuildRequires: alsa-devel libsndfile-devel
Url: http://www.bluez.org
-Version: 4.31
+Version: 4.32
Release: 1
Summary: Bluetooth Stack for Linux
Group: Hardware/Mobile
@@ -353,6 +353,13 @@
%doc %{_mandir}/man1/dund.1.gz
%changelog
+* Mon Mar 02 2009 seife@suse.de
+- update to bluez-4.32:
+ - Fix broken SDP record handling.
+ - Fix SDP data buffer parsing.
+ - Fix more SDP memory leaks.
+ - Fix read scan enable calls.
+ - Fix A2DP stream handling.
* Thu Feb 26 2009 seife@suse.de
- update to bluez-4.31:
- Add support for new BtIO helper library.
++++++ bluez-4.31.tar.bz2 -> bluez-4.32.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/bluez-4.31/audio/avdtp.c new/bluez-4.32/audio/avdtp.c
--- old/bluez-4.31/audio/avdtp.c 2009-02-25 21:14:11.000000000 +0100
+++ new/bluez-4.32/audio/avdtp.c 2009-03-01 23:48:54.000000000 +0100
@@ -792,6 +792,37 @@
(GIOFunc) transport_cb, stream);
}
+static int pending_req_cmp(gconstpointer a, gconstpointer b)
+{
+ const struct pending_req *req = a;
+ const struct avdtp_stream *stream = b;
+
+ if (req->stream == stream)
+ return 0;
+
+ return -1;
+}
+
+static void cleanup_queue(struct avdtp *session, struct avdtp_stream *stream)
+{
+ GSList *l;
+ struct pending_req *req;
+
+ while ((l = g_slist_find_custom(session->prio_queue, stream,
+ pending_req_cmp))) {
+ req = l->data;
+ pending_req_free(req);
+ session->prio_queue = g_slist_remove(session->prio_queue, req);
+ }
+
+ while ((l = g_slist_find_custom(session->req_queue, stream,
+ pending_req_cmp))) {
+ req = l->data;
+ pending_req_free(req);
+ session->req_queue = g_slist_remove(session->req_queue, req);
+ }
+}
+
static void avdtp_sep_set_state(struct avdtp *session,
struct avdtp_local_sep *sep,
avdtp_state_t state)
@@ -848,6 +879,8 @@
handle_transport_connect(session, NULL, 0, 0);
if (session->req && session->req->stream == stream)
session->req->stream = NULL;
+ /* Remove pending commands for this stream from the queue */
+ cleanup_queue(session, stream);
stream_free(stream);
if (session->ref == 1 && !session->streams)
set_disconnect_timer(session);
@@ -2448,7 +2481,7 @@
struct avdtp_error *err,
uint8_t *acp_seid)
{
- if (size < sizeof(struct conf_rej)) {
+ if (size < sizeof(struct stream_rej)) {
error("Too small packet for stream_rej");
return FALSE;
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/bluez-4.31/audio/unix.c new/bluez-4.32/audio/unix.c
--- old/bluez-4.31/audio/unix.c 2009-02-25 21:14:11.000000000 +0100
+++ new/bluez-4.32/audio/unix.c 2009-03-01 23:48:54.000000000 +0100
@@ -523,6 +523,10 @@
goto failed;
}
+ if (client->cb_id > 0)
+ avdtp_stream_remove_cb(a2dp->session, a2dp->stream,
+ client->cb_id);
+
a2dp->sep = sep;
a2dp->stream = stream;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/bluez-4.31/ChangeLog new/bluez-4.32/ChangeLog
--- old/bluez-4.31/ChangeLog 2009-02-25 21:14:11.000000000 +0100
+++ new/bluez-4.32/ChangeLog 2009-03-01 23:48:54.000000000 +0100
@@ -1,3 +1,10 @@
+ver 4.32:
+ Fix broken SDP record handling.
+ Fix SDP data buffer parsing.
+ Fix more SDP memory leaks.
+ Fix read scan enable calls.
+ Fix A2DP stream handling.
+
ver 4.31:
Add support for new BtIO helper library.
Fix AVDTP session close issue.
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/bluez-4.31/configure new/bluez-4.32/configure
--- old/bluez-4.31/configure 2009-02-25 21:30:47.000000000 +0100
+++ new/bluez-4.32/configure 2009-03-01 23:49:23.000000000 +0100
@@ -2530,7 +2530,7 @@
# Define the identity of the package.
PACKAGE=bluez
- VERSION=4.31
+ VERSION=4.32
cat >>confdefs.h <<_ACEOF
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/bluez-4.31/configure.ac new/bluez-4.32/configure.ac
--- old/bluez-4.31/configure.ac 2009-02-25 21:14:11.000000000 +0100
+++ new/bluez-4.32/configure.ac 2009-03-01 23:48:54.000000000 +0100
@@ -1,7 +1,7 @@
AC_PREREQ(2.60)
AC_INIT()
-AM_INIT_AUTOMAKE(bluez, 4.31)
+AM_INIT_AUTOMAKE(bluez, 4.32)
AM_CONFIG_HEADER(config.h)
AM_MAINTAINER_MODE
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/bluez-4.31/gdbus/object.c new/bluez-4.32/gdbus/object.c
--- old/bluez-4.31/gdbus/object.c 2009-01-08 17:00:12.000000000 +0100
+++ new/bluez-4.32/gdbus/object.c 2009-03-01 23:48:54.000000000 +0100
@@ -224,6 +224,9 @@
{
GSList *list;
+ if (!name)
+ return NULL;
+
for (list = interfaces; list; list = list->next) {
struct interface_data *iface = list->data;
if (!strcmp(name, iface->name))
@@ -391,7 +394,6 @@
}
iface = find_interface(data->interfaces, interface);
-
if (!iface) {
error("dbus_connection_emit_signal: %s does not implement %s",
path, interface);
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/bluez-4.31/src/adapter.c new/bluez-4.32/src/adapter.c
--- old/bluez-4.31/src/adapter.c 2009-02-25 21:14:11.000000000 +0100
+++ new/bluez-4.32/src/adapter.c 2009-03-01 23:48:54.000000000 +0100
@@ -121,6 +121,8 @@
gboolean initialized;
gboolean already_up; /* adapter was already up on init */
+
+ gboolean off_requested; /* DEVDOWN ioctl was called */
};
static void adapter_set_pairable_timeout(struct btd_adapter *adapter,
@@ -432,6 +434,8 @@
return err;
}
+ adapter->off_requested = TRUE;
+
goto done;
}
@@ -1990,6 +1994,7 @@
ba2str(&adapter->bdaddr, srcaddr);
+ adapter->off_requested = FALSE;
adapter->up = 1;
adapter->discov_timeout = get_discoverable_timeout(srcaddr);
adapter->pairable_timeout = get_pairable_timeout(srcaddr);
@@ -2928,3 +2933,8 @@
{
return adapter->pairable;
}
+
+gboolean adapter_powering_down(struct btd_adapter *adapter)
+{
+ return adapter->off_requested;
+}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/bluez-4.31/src/adapter.h new/bluez-4.32/src/adapter.h
--- old/bluez-4.31/src/adapter.h 2009-02-12 20:35:38.000000000 +0100
+++ new/bluez-4.32/src/adapter.h 2009-03-01 23:48:54.000000000 +0100
@@ -139,3 +139,4 @@
const char *btd_adapter_any_request_path(void);
void btd_adapter_any_release_path(void);
gboolean adapter_is_pairable(struct btd_adapter *adapter);
+gboolean adapter_powering_down(struct btd_adapter *adapter);
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/bluez-4.31/src/dbus-hci.c new/bluez-4.32/src/dbus-hci.c
--- old/bluez-4.31/src/dbus-hci.c 2009-02-25 21:14:11.000000000 +0100
+++ new/bluez-4.32/src/dbus-hci.c 2009-03-01 23:48:54.000000000 +0100
@@ -1097,6 +1097,9 @@
return;
}
+ if (adapter_powering_down(adapter))
+ return;
+
dev_id = adapter_get_dev_id(adapter);
dd = hci_open_dev(dev_id);
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/bluez-4.31/src/sdpd-request.c new/bluez-4.32/src/sdpd-request.c
--- old/bluez-4.31/src/sdpd-request.c 2009-02-25 21:14:11.000000000 +0100
+++ new/bluez-4.32/src/sdpd-request.c 2009-03-01 23:48:54.000000000 +0100
@@ -101,7 +101,7 @@
short numberOfElements = 0;
int seqlen = 0;
sdp_list_t *pSeq = NULL;
- uint8_t dataType;
+ uint8_t dataType = expectedType;
int status = 0;
const uint8_t *p;
int bufsize;
@@ -124,20 +124,24 @@
if (bufsize < (int) sizeof(uint8_t)) {
SDPDBG("->Unexpected end of buffer");
- return -1;
+ goto failed;
}
- dataType = *(uint8_t *)p;
+ if (dataType == SDP_TYPE_ANY)
+ expectedType = *p;
+
+ dataType = *p;
+
SDPDBG("Data type: 0x%02x", dataType);
if (expectedType == SDP_TYPE_UUID) {
if (dataType != SDP_UUID16 && dataType != SDP_UUID32 && dataType != SDP_UUID128) {
SDPDBG("->Unexpected Data type (expected UUID_ANY)");
- return -1;
+ goto failed;
}
} else if (expectedType != SDP_TYPE_ANY && dataType != expectedType) {
SDPDBG("->Unexpected Data type (expected 0x%02x)", expectedType);
- return -1;
+ goto failed;
}
switch (dataType) {
@@ -147,7 +151,7 @@
bufsize -= sizeof(uint8_t);
if (bufsize < (int) sizeof(uint16_t)) {
SDPDBG("->Unexpected end of buffer");
- return -1;
+ goto failed;
}
pElem = malloc(sizeof(uint16_t));
@@ -162,7 +166,7 @@
bufsize -= sizeof(uint8_t);
if (bufsize < (int)sizeof(uint32_t)) {
SDPDBG("->Unexpected end of buffer");
- return -1;
+ goto failed;
}
pElem = malloc(sizeof(uint32_t));
@@ -178,7 +182,7 @@
status = sdp_uuid_extract(p, bufsize, (uuid_t *) pElem, &localSeqLength);
if (status < 0) {
free(pElem);
- return -1;
+ goto failed;
}
seqlen += localSeqLength;
p += localSeqLength;
@@ -195,7 +199,7 @@
if (seqlen == data_size)
break;
else if (seqlen > data_size || seqlen > len)
- return -1;
+ goto failed;
} else
free(pElem);
}
@@ -203,6 +207,10 @@
scanned += seqlen;
*pDataType = dataType;
return scanned;
+
+failed:
+ sdp_list_free(pSeq, free);
+ return -1;
}
static int sdp_set_cstate_pdu(sdp_buf_t *buf, sdp_cont_state_t *cstate)
@@ -227,28 +235,39 @@
return length;
}
-static sdp_cont_state_t *sdp_cstate_get(uint8_t *buffer)
+static int sdp_cstate_get(uint8_t *buffer, size_t len,
+ sdp_cont_state_t **cstate)
{
- uint8_t *pdata = buffer;
- uint8_t cStateSize = *(uint8_t *)pdata;
+ uint8_t cStateSize = *buffer;
+
+ SDPDBG("Continuation State size : %d", cStateSize);
+
+ if (cStateSize == 0) {
+ *cstate = NULL;
+ return 0;
+ }
+
+ buffer++;
+ len--;
+
+ if (len < sizeof(sdp_cont_state_t))
+ return -EINVAL;
/*
* Check if continuation state exists, if yes attempt
* to get response remainder from cache, else send error
*/
- SDPDBG("Continuation State size : %d", cStateSize);
- pdata += sizeof(uint8_t);
- if (cStateSize != 0) {
- sdp_cont_state_t *cstate = malloc(sizeof(sdp_cont_state_t));
- if (!cstate)
- return NULL;
- memcpy(cstate, (sdp_cont_state_t *)pdata, sizeof(sdp_cont_state_t));
- SDPDBG("Cstate TS : 0x%x", cstate->timestamp);
- SDPDBG("Bytes sent : %d", cstate->cStateValue.maxBytesSent);
- return cstate;
- }
- return NULL;
+ *cstate = malloc(sizeof(sdp_cont_state_t));
+ if (!(*cstate))
+ return -ENOMEM;
+
+ memcpy(*cstate, buffer, sizeof(sdp_cont_state_t));
+
+ SDPDBG("Cstate TS : 0x%x", (*cstate)->timestamp);
+ SDPDBG("Bytes sent : %d", (*cstate)->cStateValue.maxBytesSent);
+
+ return 0;
}
/*
@@ -307,15 +326,16 @@
uint32_t cStateId = 0;
short *pTotalRecordCount, *pCurrentRecordCount;
uint8_t *pdata = req->buf + sizeof(sdp_pdu_hdr_t);
+ size_t data_left = req->len - sizeof(sdp_pdu_hdr_t);
- scanned = extract_des(pdata, req->len - sizeof(sdp_pdu_hdr_t),
- &pattern, &dtd, SDP_TYPE_UUID);
+ scanned = extract_des(pdata, data_left, &pattern, &dtd, SDP_TYPE_UUID);
if (scanned == -1) {
status = SDP_INVALID_SYNTAX;
goto done;
}
pdata += scanned;
+ data_left -= scanned;
plen = ntohs(((sdp_pdu_hdr_t *)(req->buf))->plen);
mlen = scanned + sizeof(uint16_t) + 1;
@@ -325,18 +345,27 @@
goto done;
}
+ if (data_left < sizeof(uint16_t)) {
+ status = SDP_INVALID_SYNTAX;
+ goto done;
+ }
+
expected = ntohs(bt_get_unaligned((uint16_t *)pdata));
-
+
SDPDBG("Expected count: %d", expected);
SDPDBG("Bytes scanned : %d", scanned);
pdata += sizeof(uint16_t);
+ data_left -= sizeof(uint16_t);
/*
* Check if continuation state exists, if yes attempt
* to get rsp remainder from cache, else send error
*/
- cstate = sdp_cstate_get(pdata);
+ if (sdp_cstate_get(pdata, data_left, &cstate) < 0) {
+ status = SDP_INVALID_SYNTAX;
+ goto done;
+ }
mtu = req->mtu - sizeof(sdp_pdu_hdr_t) - sizeof(uint16_t) - sizeof(uint16_t) - SDP_CONT_STATE_SIZE;
actual = MIN(expected, mtu >> 2);
@@ -566,20 +595,42 @@
unsigned int max_rsp_size;
int status = 0, plen, mlen;
uint8_t *pdata = req->buf + sizeof(sdp_pdu_hdr_t);
- uint32_t handle = ntohl(bt_get_unaligned((uint32_t *)pdata));
+ size_t data_left = req->len - sizeof(sdp_pdu_hdr_t);
+ uint32_t handle;
+
+ if (data_left < sizeof(uint32_t)) {
+ status = SDP_INVALID_SYNTAX;
+ goto done;
+ }
+
+ handle = ntohl(bt_get_unaligned((uint32_t *)pdata));
pdata += sizeof(uint32_t);
+ data_left -= sizeof(uint32_t);
+
+ if (data_left < sizeof(uint16_t)) {
+ status = SDP_INVALID_SYNTAX;
+ goto done;
+ }
+
max_rsp_size = ntohs(bt_get_unaligned((uint16_t *)pdata));
+
pdata += sizeof(uint16_t);
+ data_left -= sizeof(uint16_t);
+
+ if (data_left < sizeof(sdp_pdu_hdr_t)) {
+ status = SDP_INVALID_SYNTAX;
+ goto done;
+ }
/* extract the attribute list */
- scanned = extract_des(pdata, req->len - sizeof(sdp_pdu_hdr_t),
- &seq, &dtd, SDP_TYPE_ANY);
+ scanned = extract_des(pdata, data_left, &seq, &dtd, SDP_TYPE_ANY);
if (scanned == -1) {
status = SDP_INVALID_SYNTAX;
goto done;
}
pdata += scanned;
+ data_left -= scanned;
plen = ntohs(((sdp_pdu_hdr_t *)(req->buf))->plen);
mlen = scanned + sizeof(uint32_t) + sizeof(uint16_t) + 1;
@@ -593,7 +644,10 @@
* if continuation state exists, attempt
* to get rsp remainder from cache, else send error
*/
- cstate = sdp_cstate_get(pdata);
+ if (sdp_cstate_get(pdata, data_left, &cstate) < 0) {
+ status = SDP_INVALID_SYNTAX;
+ goto done;
+ }
SDPDBG("SvcRecHandle : 0x%x", handle);
SDPDBG("max_rsp_size : %d", max_rsp_size);
@@ -686,11 +740,12 @@
short cstate_size = 0;
uint8_t dtd = 0;
sdp_buf_t tmpbuf;
+ size_t data_left = req->len;
tmpbuf.data = NULL;
pdata = req->buf + sizeof(sdp_pdu_hdr_t);
- scanned = extract_des(pdata, req->len - sizeof(sdp_pdu_hdr_t),
- &pattern, &dtd, SDP_TYPE_UUID);
+ data_left = req->len - sizeof(sdp_pdu_hdr_t);
+ scanned = extract_des(pdata, data_left, &pattern, &dtd, SDP_TYPE_UUID);
if (scanned == -1) {
status = SDP_INVALID_SYNTAX;
goto done;
@@ -700,19 +755,35 @@
SDPDBG("Bytes scanned: %d", scanned);
pdata += scanned;
+ data_left -= scanned;
+
+ if (data_left < sizeof(uint16_t)) {
+ status = SDP_INVALID_SYNTAX;
+ goto done;
+ }
+
max = ntohs(bt_get_unaligned((uint16_t *)pdata));
+
pdata += sizeof(uint16_t);
+ data_left -= sizeof(uint16_t);
SDPDBG("Max Attr expected: %d", max);
+ if (data_left < sizeof(sdp_pdu_hdr_t)) {
+ status = SDP_INVALID_SYNTAX;
+ goto done;
+ }
+
/* extract the attribute list */
- scanned = extract_des(pdata, req->len - sizeof(sdp_pdu_hdr_t),
- &seq, &dtd, SDP_TYPE_ANY);
+ scanned = extract_des(pdata, data_left, &seq, &dtd, SDP_TYPE_ANY);
if (scanned == -1) {
status = SDP_INVALID_SYNTAX;
goto done;
}
+
pdata += scanned;
+ data_left -= scanned;
+
totscanned += scanned + sizeof(uint16_t) + 1;
plen = ntohs(((sdp_pdu_hdr_t *)(req->buf))->plen);
@@ -725,7 +796,10 @@
* if continuation state exists attempt
* to get rsp remainder from cache, else send error
*/
- cstate = sdp_cstate_get(pdata); // continuation information
+ if (sdp_cstate_get(pdata, data_left, &cstate) < 0) {
+ status = SDP_INVALID_SYNTAX;
+ goto done;
+ }
svcList = sdp_get_record_list();
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/bluez-4.31/src/sdpd-service.c new/bluez-4.32/src/sdpd-service.c
--- old/bluez-4.31/src/sdpd-service.c 2009-02-25 21:14:11.000000000 +0100
+++ new/bluez-4.32/src/sdpd-service.c 2009-03-01 23:48:54.000000000 +0100
@@ -606,9 +606,6 @@
bt_put_unaligned(htonl(rec->handle), (uint32_t *) rsp->data);
rsp->data_size = sizeof(uint32_t);
- if (rec)
- sdp_record_free(rec);
-
return 0;
invalid:
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/bluez-4.31/test/avtest.c new/bluez-4.32/test/avtest.c
--- old/bluez-4.31/test/avtest.c 1970-01-01 01:00:00.000000000 +0100
+++ new/bluez-4.32/test/avtest.c 2009-03-01 23:48:54.000000000 +0100
@@ -0,0 +1,31 @@
+/*
+ *
+ * BlueZ - Bluetooth protocol stack for Linux
+ *
+ * Copyright (C) 2007-2009 Marcel Holtmann