From 36b2924036f74fb4889155e24fa46e358b921dc1 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Sat, 24 Dec 2022 01:39:26 +0100 Subject: [PATCH] If file functions are called with NULL arg silently return. Signed-off-by: Pol Henarejos --- src/fs/file.c | 4 ++++ src/fs/flash.c | 2 ++ 2 files changed, 6 insertions(+) diff --git a/src/fs/file.c b/src/fs/file.c index 4b01bed..c7cd6e5 100644 --- a/src/fs/file.c +++ b/src/fs/file.c @@ -284,6 +284,8 @@ file_t *search_dynamic_file(uint16_t fid) { } int delete_dynamic_file(file_t *f) { + if (f == NULL) + return NULL; for (int i = 0; i < dynamic_files; i++) { if (dynamic_file[i].fid == f->fid) { for (int j = i+1; j < dynamic_files; j++) @@ -439,6 +441,8 @@ bool file_has_data(file_t *f) { } int delete_file(file_t *ef) { + if (ef == NULL) + return CCID_OK; meta_delete(ef->fid); if (flash_clear_file(ef) != CCID_OK) return CCID_EXEC_ERROR; diff --git a/src/fs/flash.c b/src/fs/flash.c index bae64be..d5f410c 100644 --- a/src/fs/flash.c +++ b/src/fs/flash.c @@ -95,6 +95,8 @@ uintptr_t allocate_free_addr(uint16_t size, bool persistent) { } int flash_clear_file(file_t *file) { + if (file == NULL) + return CCID_OK; uintptr_t base_addr = (uintptr_t)(file->data-sizeof(uintptr_t)-sizeof(uint16_t)-sizeof(uintptr_t)); uintptr_t prev_addr = flash_read_uintptr(base_addr+sizeof(uintptr_t)); uintptr_t next_addr = flash_read_uintptr(base_addr);