From 59427163ca0ef709dc2c473d8542eb5c05c3fc0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franti=C5=A1ek=20Boh=C3=A1=C4=8Dek?= Date: Tue, 29 Jun 2021 08:44:17 +0200 Subject: [PATCH] fix: avoid uninitialized values when stat fails --- file-browser/src/local_file_access.c | 20 ++++++++++++-------- file-browser/src/window_browser.c | 2 +- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/file-browser/src/local_file_access.c b/file-browser/src/local_file_access.c index 429ddb7b34f4e13898c19c65c2a8622a5d3254b1..b0931413b5e177a3668e434aa55f7d57a791fea2 100644 --- a/file-browser/src/local_file_access.c +++ b/file-browser/src/local_file_access.c @@ -55,15 +55,19 @@ static file_operation_error_t file_get_information(void *malloced, int status = stat(full_path, &stats); if (status == -1) { - //free(new); - //return file_operation_error_from_errno(errno); + file.size = 0; + file.gid = 0; + file.uid = 0; + file.permissions = 0; + file.modify_time = 0; + } else { + file.size = stats.st_size; + file.gid = stats.st_gid; + file.uid = stats.st_uid; + file.permissions = stats.st_mode; + file.modify_time = stats.st_mtim.tv_sec; } - file.size = stats.st_size; - file.gid = stats.st_gid; - file.uid = stats.st_uid; - file.permissions = stats.st_mode; - file_t *stored = malloced + *file_offset; *stored = file; *file_offset += sizeof(file_t); @@ -98,7 +102,7 @@ directory_or_error_t local_fileaccess_directory_list(fileaccess_state_t state, realpath(path, show_path); uint32_t files_count = 0; - uint64_t size = directory_get_needed_bytes(path, &files_count, dirptr); + uint64_t size = directory_get_needed_bytes(show_path, &files_count, dirptr); uint64_t files_offset = sizeof(directory_t) + strlen(show_path) + 1; uint64_t names_offset = files_count * sizeof(file_t) + files_offset; diff --git a/file-browser/src/window_browser.c b/file-browser/src/window_browser.c index 0e788aa77583daed07d5663a45b6bd76cc05bafa..31e7f75da10421d5b6c35b38687c476a1c9aa5b3 100644 --- a/file-browser/src/window_browser.c +++ b/file-browser/src/window_browser.c @@ -332,7 +332,7 @@ static char *browser_get_column_data(file_t *file, uint16_t column, char *out) { transformed /= KiB; append = "KiB"; } - + sprintf(out, "%.2f %s", transformed, append); return out; }