From eeaa5a1afb181fe0595c7395f3316d683fce86aa Mon Sep 17 00:00:00 2001 From: Szymon Janc Date: Fri, 1 Apr 2016 21:58:29 +0200 Subject: [PATCH] input/hog: Fix crash if uhid is not enabled If /dev/uhid is not present bt_hog_new_default() returns NULL. This was resulting in NULL pointer dereference in attio_connected_cb. --- profiles/input/hog.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/profiles/input/hog.c b/profiles/input/hog.c index 4dba83f71..a934c6238 100644 --- a/profiles/input/hog.c +++ b/profiles/input/hog.c @@ -107,8 +107,13 @@ static struct hog_device *hog_device_new(struct btd_device *device, product, version); dev = new0(struct hog_device, 1); - dev->device = btd_device_ref(device); dev->hog = bt_hog_new_default(name, vendor, product, version, prim); + if (!dev->hog) { + free(dev); + return NULL; + } + + dev->device = btd_device_ref(device); /* * TODO: Remove attio callback and use .accept once using @@ -189,6 +194,9 @@ static int hog_probe(struct btd_service *service) continue; dev = hog_device_new(device, prim); + if (!dev) + break; + btd_service_set_user_data(service, dev); return 0; } -- 2.47.3