summaryrefslogtreecommitdiff
path: root/obexd/client
diff options
context:
space:
mode:
authorAndrei Emeltchenko <andrei.emeltchenko@intel.com>2014-12-03 16:08:52 +0200
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2014-12-04 14:26:57 +0200
commit33c2e6b851308f3333eac398792534f951e63647 (patch)
tree39efc854acf48ef04057cdfa281105be837323a8 /obexd/client
parent34c3a51a05733112b89b339cdd7188381aa052b4 (diff)
downloadbluez-33c2e6b851308f3333eac398792534f951e63647.tar.gz
obexd: Fix memory leak not freeing desc
descs->data might be NULL while is descs not. Follow scheme in src/profile.c (in get_profile_version() function).
Diffstat (limited to 'obexd/client')
-rw-r--r--obexd/client/bluetooth.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/obexd/client/bluetooth.c b/obexd/client/bluetooth.c
index 589d7a51d..8e09d032c 100644
--- a/obexd/client/bluetooth.c
+++ b/obexd/client/bluetooth.c
@@ -486,6 +486,7 @@ static const void *bluetooth_getattribute(guint id, int attribute_id)
/* Read version since UUID is already known */
if (attribute_id == SDP_ATTR_PFILE_DESC_LIST) {
sdp_list_t *descs;
+ void *ret = NULL;
if (sdp_get_profile_descs(session->sdp_record,
&descs) < 0)
@@ -493,14 +494,12 @@ static const void *bluetooth_getattribute(guint id, int attribute_id)
if (descs && descs->data) {
sdp_profile_desc_t *desc = descs->data;
- uint16_t version = desc->version;
-
- sdp_list_free(descs, free);
-
- return GINT_TO_POINTER(version);
+ ret = GINT_TO_POINTER(desc->version);
}
- return NULL;
+ sdp_list_free(descs, free);
+
+ return ret;
}
data = sdp_data_get(session->sdp_record, attribute_id);