From 8cca58f1a6162592696ec7964c5bd7f2582de924 Mon Sep 17 00:00:00 2001 From: Sipke Vriend Date: Tue, 1 Oct 2019 14:20:43 +1000 Subject: [PATCH] lfs_file_truncate: ensure lfs_file_seek return code is lsf_soff_t and cast error returns To ensure 16 bit devices do not invalidly truncate lfs_file_write return codes, change the return variable to be lfs_ssize_t which is the lfs_file_write return code and cast to int if it is a negative error code. --- lfs.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/lfs.c b/lfs.c index 046af95..bf60852 100644 --- a/lfs.c +++ b/lfs.c @@ -3006,10 +3006,10 @@ int lfs_file_truncate(lfs_t *lfs, lfs_file_t *file, lfs_off_t size) { } else if (size > oldsize) { // flush+seek if not already at end if (file->pos != oldsize) { - int err = lfs_file_seek(lfs, file, 0, LFS_SEEK_END); - if (err < 0) { - LFS_TRACE("lfs_file_truncate -> %d", err); - return err; + lfs_soff_t res = lfs_file_seek(lfs, file, 0, LFS_SEEK_END); + if (res < 0) { + LFS_TRACE("lfs_file_truncate -> %d", res); + return (int)res; } } @@ -3018,16 +3018,16 @@ int lfs_file_truncate(lfs_t *lfs, lfs_file_t *file, lfs_off_t size) { lfs_ssize_t res = lfs_file_write(lfs, file, &(uint8_t){0}, 1); if (res < 0) { LFS_TRACE("lfs_file_truncate -> %d", res); - return res; + return (int)res; } } } // restore pos - int err = lfs_file_seek(lfs, file, pos, LFS_SEEK_SET); - if (err < 0) { - LFS_TRACE("lfs_file_truncate -> %d", err); - return err; + lfs_soff_t res = lfs_file_seek(lfs, file, pos, LFS_SEEK_SET); + if (res < 0) { + LFS_TRACE("lfs_file_truncate -> %d", res); + return (int)res; } LFS_TRACE("lfs_file_truncate -> %d", 0);