summaryrefslogtreecommitdiff
path: root/client/advertising.c
diff options
context:
space:
mode:
authorERAMOTO Masaya <eramoto.masaya@jp.fujitsu.com>2017-09-25 13:30:56 +0900
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2017-09-25 15:44:02 +0300
commit15225b1e0be189d8ceeaecb6c8751fbabc4d8e6f (patch)
treee11b457e7b9e47d8760619913134c164ed9fd088 /client/advertising.c
parent115fd96871806d9ab03fc62c08134a6f4046c5b8 (diff)
downloadbluez-15225b1e0be189d8ceeaecb6c8751fbabc4d8e6f.tar.gz
client: Fix core dump when using set-advertise-name
If repeating to set on/off with set-advertise-name after setting local name, and then may dump core by double free. This patch uses g_free() instead of free().
Diffstat (limited to 'client/advertising.c')
-rw-r--r--client/advertising.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/client/advertising.c b/client/advertising.c
index b105da9a1..bfdebd5c6 100644
--- a/client/advertising.c
+++ b/client/advertising.c
@@ -547,8 +547,10 @@ void ad_advertise_name(DBusConnection *conn, bool value)
ad.name = value;
- if (!value)
- free(ad.local_name);
+ if (!value) {
+ g_free(ad.local_name);
+ ad.local_name = NULL;
+ }
g_dbus_emit_property_changed(conn, AD_PATH, AD_IFACE, "Includes");
}
@@ -558,7 +560,7 @@ void ad_advertise_local_name(DBusConnection *conn, const char *name)
if (ad.local_name && !strcmp(name, ad.local_name))
return;
- free(ad.local_name);
+ g_free(ad.local_name);
ad.local_name = strdup(name);
g_dbus_emit_property_changed(conn, AD_PATH, AD_IFACE, "LocalName");