aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Ranostay <matt.ranostay@konsulko.com>2019-07-29 11:51:32 -0700
committerMatt Ranostay <matt.ranostay@konsulko.com>2019-07-29 11:57:02 -0700
commit1f7d42ad5109e5333dc8059dcd8ac8a63bea5861 (patch)
treebd8dd739457fd38541a065231bc5035a0354d47a
parentf207663c1dd42351e858907f4b1020af492f0e73 (diff)
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 <matt.ranostay@konsulko.com>
-rw-r--r--binding/bluetooth-pbap-binding.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/binding/bluetooth-pbap-binding.c b/binding/bluetooth-pbap-binding.c
index cf39851..5b23d6d 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;
}