diff options
author | ERAMOTO Masaya <eramoto.masaya@jp.fujitsu.com> | 2017-09-25 13:30:56 +0900 |
---|---|---|
committer | Luiz Augusto von Dentz <luiz.von.dentz@intel.com> | 2017-09-25 15:44:02 +0300 |
commit | 15225b1e0be189d8ceeaecb6c8751fbabc4d8e6f (patch) | |
tree | e11b457e7b9e47d8760619913134c164ed9fd088 /client/advertising.c | |
parent | 115fd96871806d9ab03fc62c08134a6f4046c5b8 (diff) | |
download | bluez-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.c | 8 |
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"); |