From 33c2e6b851308f3333eac398792534f951e63647 Mon Sep 17 00:00:00 2001 From: Andrei Emeltchenko Date: Wed, 3 Dec 2014 16:08:52 +0200 Subject: [PATCH] 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). --- obexd/client/bluetooth.c | 11 +++++------ 1 file 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); -- 2.47.3