aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Ranostay <matt.ranostay@konsulko.com>2018-10-08 15:39:37 +0800
committerMatt Ranostay <matt.ranostay@konsulko.com>2018-11-23 08:49:14 -0800
commit581932bfa33050cc6791069c06711f4996ac1308 (patch)
treee6b4562e4b4eb8d31cf666c1e03327ad5e70be32
parentcfd9944c77a61215250c3b0f81978a1236d4c590 (diff)
binding: bluetooth: add check to be sure GError has been set
segfaults can happen if the dbus call reply fails but doesn't set a GError. Bug-AGL: SPEC-1630 Change-Id: I83ea2f7997a8fcef1cdd73a7df2cf9ad97e00d91 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
-rw-r--r--binding/bluetooth-api.c8
-rw-r--r--binding/bluetooth-api.h3
2 files changed, 7 insertions, 4 deletions
diff --git a/binding/bluetooth-api.c b/binding/bluetooth-api.c
index 4649067..2ac25eb 100644
--- a/binding/bluetooth-api.c
+++ b/binding/bluetooth-api.c
@@ -611,7 +611,7 @@ static void bluetooth_state(afb_req_t request)
jresp = adapter_properties(ns, &error, adapter);
if (!jresp) {
afb_req_fail_f(request, "failed", "property %s error %s",
- "State", error->message);
+ "State", BLUEZ_ERRMSG(error));
return;
}
@@ -639,7 +639,7 @@ static void bluetooth_adapter(afb_req_t request)
if (!reply) {
afb_req_fail_f(request, "failed",
"adapter %s method %s error %s",
- scan, "Scan", error->message);
+ scan, "Scan", BLUEZ_ERRMSG(error));
g_error_free(error);
return;
}
@@ -654,7 +654,7 @@ static void bluetooth_adapter(afb_req_t request)
if (!ret) {
afb_req_fail_f(request, "failed",
"adapter %s set_property %s error %s",
- adapter, "Discoverable", error->message);
+ adapter, "Discoverable", BLUEZ_ERRMSG(error));
g_error_free(error);
return;
}
@@ -668,7 +668,7 @@ static void bluetooth_adapter(afb_req_t request)
if (!ret) {
afb_req_fail_f(request, "failed",
"adapter %s set_property %s error %s",
- adapter, "Powered", error->message);
+ adapter, "Powered", BLUEZ_ERRMSG(error));
g_error_free(error);
return;
}
diff --git a/binding/bluetooth-api.h b/binding/bluetooth-api.h
index d8df0af..8ab8135 100644
--- a/binding/bluetooth-api.h
+++ b/binding/bluetooth-api.h
@@ -49,6 +49,9 @@
__tpath; \
})
+#define BLUEZ_ERRMSG(error) \
+ (error ? error->message : "unspecified")
+
#define FREEDESKTOP_INTROSPECT "org.freedesktop.DBus.Introspectable"
#define FREEDESKTOP_PROPERTIES "org.freedesktop.DBus.Properties"
#define FREEDESKTOP_OBJECTMANAGER "org.freedesktop.DBus.ObjectManager"