device: Fix unchecked return value
authorTedd Ho-Jeong An <tedd.an@intel.com>
Mon, 18 Oct 2021 17:28:25 +0000 (10:28 -0700)
committerAyush Garg <ayush.garg@samsung.com>
Fri, 11 Mar 2022 13:38:37 +0000 (19:08 +0530)
This patch fixes the unchecked return value(CWE-252) issues reported by
the Coverity.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
src/device.c

index 9fbae7a..1d1533f 100644 (file)
@@ -569,6 +569,7 @@ static gboolean store_device_info_cb(gpointer user_data)
 {
        struct btd_device *device = user_data;
        GKeyFile *key_file;
+       GError *gerr = NULL;
        char filename[PATH_MAX];
        char device_addr[18];
        char *str;
@@ -592,7 +593,11 @@ static gboolean store_device_info_cb(gpointer user_data)
                                device_addr);
 
        key_file = g_key_file_new();
-       g_key_file_load_from_file(key_file, filename, 0, NULL);
+       if (!g_key_file_load_from_file(key_file, filename, 0, &gerr)) {
+               error("Unable to load key file from %s: (%s)", filename,
+                                                               gerr->message);
+               g_error_free(gerr);
+       }
 
        g_key_file_set_string(key_file, "General", "Name", device->name);
 
@@ -727,7 +732,12 @@ static gboolean store_device_info_cb(gpointer user_data)
        create_file(filename, 0600);
 
        str = g_key_file_to_data(key_file, &length, NULL);
-       g_file_set_contents(filename, str, length, NULL);
+       if (!g_file_set_contents(filename, str, length, &gerr)) {
+               error("Unable set contents for %s: (%s)", filename,
+                                                               gerr->message);
+               g_error_free(gerr);
+       }
+
        g_free(str);
 
        g_key_file_free(key_file);
@@ -769,6 +779,7 @@ void device_store_cached_name(struct btd_device *dev, const char *name)
        char filename[PATH_MAX];
        char d_addr[18];
        GKeyFile *key_file;
+       GError *gerr = NULL;
        char *data;
        char *data_old;
        gsize length = 0;
@@ -792,16 +803,25 @@ void device_store_cached_name(struct btd_device *dev, const char *name)
        create_file(filename, 0600);
 
        key_file = g_key_file_new();
-       g_key_file_load_from_file(key_file, filename, 0, NULL);
+       if (!g_key_file_load_from_file(key_file, filename, 0, &gerr)) {
+               error("Unable to load key file from %s: (%s)", filename,
+                                                               gerr->message);
+               g_error_free(gerr);
+       }
+
        data_old = g_key_file_to_data(key_file, &length_old, NULL);
 
        g_key_file_set_string(key_file, "General", "Name", name);
 
        data = g_key_file_to_data(key_file, &length, NULL);
 
-       if ((length != length_old) || (memcmp(data, data_old, length)))
-               g_file_set_contents(filename, data, length, NULL);
-
+       if ((length != length_old) || (memcmp(data, data_old, length))) {
+               if (!g_file_set_contents(filename, data, length, &gerr)) {
+                       error("Unable set contents for %s: (%s)", filename,
+                                                               gerr->message);
+                       g_error_free(gerr);
+               }
+       }
        g_free(data);
        g_free(data_old);
 
@@ -2968,6 +2988,7 @@ static void store_services(struct btd_device *device)
        uuid_t uuid;
        char *prim_uuid;
        GKeyFile *key_file;
+       GError *gerr = NULL;
        GSList *l;
        char *data;
        gsize length = 0;
@@ -3030,7 +3051,11 @@ static void store_services(struct btd_device *device)
        data = g_key_file_to_data(key_file, &length, NULL);
        if (length > 0) {
                create_file(filename, 0600);
-               g_file_set_contents(filename, data, length, NULL);
+               if (!g_file_set_contents(filename, data, length, &gerr)) {
+                       error("Unable set contents for %s: (%s)", filename,
+                                                               gerr->message);
+                       g_error_free(gerr);
+               }
        }
 
        free(prim_uuid);
@@ -3199,6 +3224,7 @@ static void store_gatt_db(struct btd_device *device)
        char filename[PATH_MAX];
        char dst_addr[18];
        GKeyFile *key_file;
+       GError *gerr = NULL;
        char *data;
        gsize length = 0;
        struct gatt_saver saver;
@@ -3220,7 +3246,11 @@ static void store_gatt_db(struct btd_device *device)
        create_file(filename, 0600);
 
        key_file = g_key_file_new();
-       g_key_file_load_from_file(key_file, filename, 0, NULL);
+       if (!g_key_file_load_from_file(key_file, filename, 0, &gerr)) {
+               error("Unable to load key file from %s: (%s)", filename,
+                                                               gerr->message);
+               g_error_free(gerr);
+       }
 
        /* Remove current attributes since it might have changed */
        g_key_file_remove_group(key_file, "Attributes", NULL);
@@ -3231,7 +3261,11 @@ static void store_gatt_db(struct btd_device *device)
        gatt_db_foreach_service(device->db, NULL, store_service, &saver);
 
        data = g_key_file_to_data(key_file, &length, NULL);
-       g_file_set_contents(filename, data, length, NULL);
+       if (!g_file_set_contents(filename, data, length, &gerr)) {
+               error("Unable set contents for %s: (%s)", filename,
+                                                               gerr->message);
+               g_error_free(gerr);
+       }
 
        g_free(data);
        g_key_file_free(key_file);
@@ -5752,6 +5786,7 @@ static void convert_info(struct btd_device *device, GKeyFile *key_file)
        char **uuids;
        char *str;
        gsize length = 0;
+       GError *gerr = NULL;
 
        /* Load device profile list from legacy properties */
        uuids = g_key_file_get_string_list(key_file, "General", "SDPServices",
@@ -5777,7 +5812,11 @@ static void convert_info(struct btd_device *device, GKeyFile *key_file)
                        device_addr);
 
        str = g_key_file_to_data(key_file, &length, NULL);
-       g_file_set_contents(filename, str, length, NULL);
+       if (!g_file_set_contents(filename, str, length, &gerr)) {
+               error("Unable set contents for %s: (%s)", filename,
+                                                               gerr->message);
+               g_error_free(gerr);
+       }
        g_free(str);
 
        store_device_info(device);
@@ -5992,6 +6031,7 @@ static void load_att_info(struct btd_device *device, const char *local,
 {
        char filename[PATH_MAX];
        GKeyFile *key_file;
+       GError *gerr = NULL;
        char *prim_uuid, *str;
        char **groups, **handle, *service_uuid;
        struct gatt_primary *prim;
@@ -6006,7 +6046,11 @@ static void load_att_info(struct btd_device *device, const char *local,
                        peer);
 
        key_file = g_key_file_new();
-       g_key_file_load_from_file(key_file, filename, 0, NULL);
+       if (!g_key_file_load_from_file(key_file, filename, 0, &gerr)) {
+               error("Unable to load key file from %s: (%s)", filename,
+                                                               gerr->message);
+               g_error_free(gerr);
+       }
        groups = g_key_file_get_groups(key_file, NULL);
 
        for (handle = groups; *handle; handle++) {
@@ -6382,6 +6426,7 @@ static void load_gatt_db(struct btd_device *device, const char *local,
 {
        char **keys, filename[PATH_MAX];
        GKeyFile *key_file;
+       GError *gerr = NULL;
 
        if (!gatt_cache_is_enabled(device))
                return;
@@ -6391,7 +6436,11 @@ static void load_gatt_db(struct btd_device *device, const char *local,
        snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s", local, peer);
 
        key_file = g_key_file_new();
-       g_key_file_load_from_file(key_file, filename, 0, NULL);
+       if (!g_key_file_load_from_file(key_file, filename, 0, &gerr)) {
+               error("Unable to load key file from %s: (%s)", filename,
+                                                               gerr->message);
+               g_error_free(gerr);
+       }
        keys = g_key_file_get_keys(key_file, "Attributes", NULL, NULL);
 
        if (!keys) {
@@ -7143,6 +7192,7 @@ static void device_remove_stored(struct btd_device *device)
        char device_addr[18];
        char filename[PATH_MAX];
        GKeyFile *key_file;
+       GError *gerr = NULL;
        char *data;
        gsize length = 0;
 
@@ -7175,14 +7225,22 @@ static void device_remove_stored(struct btd_device *device)
                                device_addr);
 
        key_file = g_key_file_new();
-       g_key_file_load_from_file(key_file, filename, 0, NULL);
+       if (!g_key_file_load_from_file(key_file, filename, 0, &gerr)) {
+               error("Unable to load key file from %s: (%s)", filename,
+                                                               gerr->message);
+               g_error_free(gerr);
+       }
        g_key_file_remove_group(key_file, "ServiceRecords", NULL);
        g_key_file_remove_group(key_file, "Attributes", NULL);
 
        data = g_key_file_to_data(key_file, &length, NULL);
        if (length > 0) {
                create_file(filename, 0600);
-               g_file_set_contents(filename, data, length, NULL);
+               if (!g_file_set_contents(filename, data, length, &gerr)) {
+                       error("Unable set contents for %s: (%s)", filename,
+                                                               gerr->message);
+                       g_error_free(gerr);
+               }
        }
 
        g_free(data);
@@ -7832,6 +7890,8 @@ static void update_bredr_services(struct browse_req *req, sdp_list_t *recs)
        char att_file[PATH_MAX];
        GKeyFile *sdp_key_file;
        GKeyFile *att_key_file;
+       GError *gerr = NULL;
+
        char *data;
        gsize length = 0;
 
@@ -7842,13 +7902,21 @@ static void update_bredr_services(struct browse_req *req, sdp_list_t *recs)
                                                                dstaddr);
 
        sdp_key_file = g_key_file_new();
-       g_key_file_load_from_file(sdp_key_file, sdp_file, 0, NULL);
+       if (!g_key_file_load_from_file(sdp_key_file, sdp_file, 0, &gerr)) {
+               error("Unable to load key file from %s: (%s)", sdp_file,
+                                                               gerr->message);
+               g_error_free(gerr);
+       }
 
        snprintf(att_file, PATH_MAX, STORAGEDIR "/%s/%s/attributes", srcaddr,
                                                                dstaddr);
 
        att_key_file = g_key_file_new();
-       g_key_file_load_from_file(att_key_file, att_file, 0, NULL);
+       if (!g_key_file_load_from_file(att_key_file, att_file, 0, &gerr)) {
+               error("Unable to load key file from %s: (%s)", att_file,
+                                                               gerr->message);
+               g_error_free(gerr);
+       }
 
        for (seq = recs; seq; seq = seq->next) {
                sdp_record_t *rec = (sdp_record_t *) seq->data;
@@ -7903,7 +7971,12 @@ next:
                data = g_key_file_to_data(sdp_key_file, &length, NULL);
                if (length > 0) {
                        create_file(sdp_file, 0600);
-                       g_file_set_contents(sdp_file, data, length, NULL);
+                       if (!g_file_set_contents(sdp_file, data, length,
+                                                               &gerr)) {
+                               error("Unable set contents for %s: (%s)",
+                                               sdp_file, gerr->message);
+                               g_error_free(gerr);
+                       }
                }
 
                g_free(data);
@@ -7914,7 +7987,12 @@ next:
                data = g_key_file_to_data(att_key_file, &length, NULL);
                if (length > 0) {
                        create_file(att_file, 0600);
-                       g_file_set_contents(att_file, data, length, NULL);
+                       if (!g_file_set_contents(att_file, data, length,
+                                                               &gerr)) {
+                               error("Unable set contents for %s: (%s)",
+                                               att_file, gerr->message);
+                               g_error_free(gerr);
+                       }
                }
 
                g_free(data);
@@ -9115,6 +9193,7 @@ void device_store_svc_chng_ccc(struct btd_device *device, uint8_t bdaddr_type,
        char filename[PATH_MAX];
        char device_addr[18];
        GKeyFile *key_file;
+       GError *gerr = NULL;
        uint16_t old_value;
        gsize length = 0;
        char *str;
@@ -9125,7 +9204,11 @@ void device_store_svc_chng_ccc(struct btd_device *device, uint8_t bdaddr_type,
                                device_addr);
 
        key_file = g_key_file_new();
-       g_key_file_load_from_file(key_file, filename, 0, NULL);
+       if (!g_key_file_load_from_file(key_file, filename, 0, &gerr)) {
+               error("Unable to load key file from %s: (%s)", filename,
+                                                               gerr->message);
+               g_error_free(gerr);
+       }
 
        /* for bonded devices this is done on every connection so limit writes
         * to storage if no change needed
@@ -9151,7 +9234,11 @@ void device_store_svc_chng_ccc(struct btd_device *device, uint8_t bdaddr_type,
        create_file(filename, 0600);
 
        str = g_key_file_to_data(key_file, &length, NULL);
-       g_file_set_contents(filename, str, length, NULL);
+       if (!g_file_set_contents(filename, str, length, &gerr)) {
+               error("Unable set contents for %s: (%s)", filename,
+                                                               gerr->message);
+               g_error_free(gerr);
+       }
        g_free(str);
 
 done:
@@ -9163,6 +9250,7 @@ void device_load_svc_chng_ccc(struct btd_device *device, uint16_t *ccc_le,
        char filename[PATH_MAX];
        char device_addr[18];
        GKeyFile *key_file;
+       GError *gerr = NULL;
 
        ba2str(&device->bdaddr, device_addr);
        snprintf(filename, PATH_MAX, STORAGEDIR "/%s/%s/info",
@@ -9170,7 +9258,11 @@ void device_load_svc_chng_ccc(struct btd_device *device, uint16_t *ccc_le,
                                device_addr);
 
        key_file = g_key_file_new();
-       g_key_file_load_from_file(key_file, filename, 0, NULL);
+       if (!g_key_file_load_from_file(key_file, filename, 0, &gerr)) {
+               error("Unable to load key file from %s: (%s)", filename,
+                                                               gerr->message);
+               g_error_free(gerr);
+       }
 
        if (!g_key_file_has_group(key_file, "ServiceChanged")) {
                if (ccc_le)
@@ -10114,6 +10206,7 @@ static sdp_list_t *read_device_records(struct btd_device *device)
        char local[18], peer[18];
        char filename[PATH_MAX];
        GKeyFile *key_file;
+       GError *gerr = NULL;
        char **keys, **handle;
        char *str;
        sdp_list_t *recs = NULL;
@@ -10130,7 +10223,11 @@ static sdp_list_t *read_device_records(struct btd_device *device)
        snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s", local, peer);
 
        key_file = g_key_file_new();
-       g_key_file_load_from_file(key_file, filename, 0, NULL);
+       if (!g_key_file_load_from_file(key_file, filename, 0, &gerr)) {
+               error("Unable to load key file from %s: (%s)", filename,
+                                                               gerr->message);
+               g_error_free(gerr);
+       }
        keys = g_key_file_get_keys(key_file, "ServiceRecords", NULL, NULL);
 
        for (handle = keys; handle && *handle; handle++) {