From: Tedd Ho-Jeong An Date: Mon, 18 Oct 2021 17:28:25 +0000 (-0700) Subject: device: Fix unchecked return value X-Git-Tag: submit/tizen/20220313.220938~86 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fe4fb11d7f1533ad641b5168ff2eed85a338b2fe;p=platform%2Fupstream%2Fbluez.git device: Fix unchecked return value This patch fixes the unchecked return value(CWE-252) issues reported by the Coverity. Signed-off-by: Anuj Jain Signed-off-by: Ayush Garg --- diff --git a/src/device.c b/src/device.c index 9fbae7a5..1d1533f1 100644 --- a/src/device.c +++ b/src/device.c @@ -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++) {