binding: bluetooth-pbap: add check on file pointer 16/22016/2 8.0.0 8.0.1 8.0.2 8.0.3 halibut/8.0.0 halibut/8.0.1 halibut/8.0.2 halibut/8.0.3 halibut_8.0.0 halibut_8.0.1 halibut_8.0.2 halibut_8.0.3
authorMatt Ranostay <matt.ranostay@konsulko.com>
Mon, 29 Jul 2019 18:51:32 +0000 (11:51 -0700)
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>
Thu, 1 Aug 2019 16:14:54 +0000 (16:14 +0000)
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>
binding/bluetooth-pbap-binding.c

index 0e0a27c..e2f5c55 100644 (file)
@@ -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;
 }