diff options
author | Andrei Emeltchenko <andrei.emeltchenko@intel.com> | 2014-12-03 16:08:52 +0200 |
---|---|---|
committer | Luiz Augusto von Dentz <luiz.von.dentz@intel.com> | 2014-12-04 14:26:57 +0200 |
commit | 33c2e6b851308f3333eac398792534f951e63647 (patch) | |
tree | 39efc854acf48ef04057cdfa281105be837323a8 /obexd/client | |
parent | 34c3a51a05733112b89b339cdd7188381aa052b4 (diff) | |
download | bluez-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.c | 11 |
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); |