From ffa4b099f5c70aee02bdc041239793f126a78ec4 Mon Sep 17 00:00:00 2001 From: Matt Ranostay Date: Mon, 29 Jul 2019 11:51:32 -0700 Subject: binding: bluetooth-pbap: add check on file pointer Avoid segfaulting if obex data transfer result cannot be accessed due to permissions. Bug-AGL: SPEC-2695 Change-Id: Iae75af3e44f7e8265f1a9a52d2343d358c985bfc Signed-off-by: Matt Ranostay --- binding/bluetooth-pbap-binding.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/binding/bluetooth-pbap-binding.c b/binding/bluetooth-pbap-binding.c index 0e0a27c..e2f5c55 100644 --- a/binding/bluetooth-pbap-binding.c +++ b/binding/bluetooth-pbap-binding.c @@ -161,6 +161,9 @@ static char *get_vcard_xfer(gchar *filename) size_t size, n; fp = fopen(filename, "ro"); + if (!fp) + return NULL; + fseek(fp, 0L, SEEK_END); size = ftell(fp); vcard_data = calloc(1, size); @@ -274,7 +277,7 @@ static gchar *pull_vcards(int max_entries) static json_object *get_vcards(int max_entries) { - json_object *vcards; + json_object *vcards = NULL; gchar *tpath, *filename, *vcards_str = NULL; tpath = pull_vcards(max_entries); @@ -287,10 +290,11 @@ static json_object *get_vcards(int max_entries) g_hash_table_remove(xfer_complete, tpath); g_mutex_unlock(&xfer_complete_mutex); - vcards = json_object_new_object(); - json_object_object_add(vcards, "vcards", parse_vcards(vcards_str)); - g_free(vcards_str); - + if (vcards_str) { + vcards = json_object_new_object(); + json_object_object_add(vcards, "vcards", parse_vcards(vcards_str)); + g_free(vcards_str); + } return vcards; } -- cgit 1.2.3-korg