From 6d3777129deda9b2a6cceede66084402637f2bef Mon Sep 17 00:00:00 2001 From: jp9000 Date: Thu, 4 May 2017 18:23:23 -0700 Subject: [PATCH] libobs/util: Use os_safe_replace in safe file writes --- libobs/util/config-file.c | 8 ++------ libobs/util/platform.c | 11 ++--------- 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/libobs/util/config-file.c b/libobs/util/config-file.c index 98d8807ad..226b65c06 100644 --- a/libobs/util/config-file.c +++ b/libobs/util/config-file.c @@ -445,14 +445,10 @@ int config_save_safe(config_t *config, const char *temp_ext, if (*backup_ext != '.') dstr_cat(&backup_file, "."); dstr_cat(&backup_file, backup_ext); - - os_unlink(backup_file.array); - os_rename(file, backup_file.array); - } else { - os_unlink(file); } - os_rename(temp_file.array, file); + if (os_safe_replace(file, temp_file.array, backup_file.array) != 0) + ret = CONFIG_ERROR; cleanup: pthread_mutex_unlock(&config->mutex); diff --git a/libobs/util/platform.c b/libobs/util/platform.c index cfed355f0..def19fe1b 100644 --- a/libobs/util/platform.c +++ b/libobs/util/platform.c @@ -297,17 +297,10 @@ bool os_quick_write_utf8_file_safe(const char *path, const char *str, if (*backup_ext != '.') dstr_cat(&backup_path, "."); dstr_cat(&backup_path, backup_ext); - - os_unlink(backup_path.array); - os_rename(path, backup_path.array); - - dstr_free(&backup_path); - } else { - os_unlink(path); } - os_rename(temp_path.array, path); - success = true; + if (os_safe_replace(path, temp_path.array, backup_path.array) == 0) + success = true; cleanup: dstr_free(&backup_path);