summaryrefslogtreecommitdiff
path: root/obexd/client
diff options
context:
space:
mode:
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2014-09-15 13:30:46 +0300
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2014-09-15 14:50:39 +0300
commitbb57098100a9f47b1a0f6e2be8aa0a85a2d33384 (patch)
treedb0811e15f344d24d5411875b31543dbd0d60c3d /obexd/client
parent71d317d0d4d8db1a921082c4d51ea1f4096c6aed (diff)
downloadbluez-bb57098100a9f47b1a0f6e2be8aa0a85a2d33384.tar.gz
obexd/client: Fix leaking memory on MNS
In case an event is received twice, due to remote side misbehaving or not, it would leak the previous data.
Diffstat (limited to 'obexd/client')
-rw-r--r--obexd/client/mns.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/obexd/client/mns.c b/obexd/client/mns.c
index d638886ee..124dbcfb7 100644
--- a/obexd/client/mns.c
+++ b/obexd/client/mns.c
@@ -194,6 +194,8 @@ static void parse_event_report_folder(struct map_event *event,
if (!value)
return;
+ g_free(event->folder);
+
if (g_str_has_prefix(value, "/"))
event->folder = g_strdup(value);
else
@@ -206,6 +208,8 @@ static void parse_event_report_old_folder(struct map_event *event,
if (!value)
return;
+ g_free(event->old_folder);
+
if (g_str_has_prefix(value, "/"))
event->old_folder = g_strdup(value);
else
@@ -215,6 +219,10 @@ static void parse_event_report_old_folder(struct map_event *event,
static void parse_event_report_msg_type(struct map_event *event,
const char *value)
{
+ if (!value)
+ return;
+
+ g_free(event->msg_type);
event->msg_type = g_strdup(value);
}