From 7cae41916496cd56bad7eebc3dac3f4c159d7734 Mon Sep 17 00:00:00 2001 From: Matt Ranostay Date: Mon, 8 Oct 2018 15:39:37 +0800 Subject: 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 --- binding/bluetooth-api.c | 8 ++++---- binding/bluetooth-api.h | 3 +++ 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" -- cgit 1.2.3-korg