From b898977fd823c4ef4479c46b397f6ad403d9dc73 Mon Sep 17 00:00:00 2001 From: xujunjun Date: Tue, 11 Jan 2022 15:10:45 +0800 Subject: [PATCH] Set the limit, the cursor cannot be set to a negative number --- lfs.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/lfs.c b/lfs.c index d976389..9917dbf 100644 --- a/lfs.c +++ b/lfs.c @@ -3066,9 +3066,18 @@ static lfs_soff_t lfs_file_rawseek(lfs_t *lfs, lfs_file_t *file, if (whence == LFS_SEEK_SET) { npos = off; } else if (whence == LFS_SEEK_CUR) { - npos = file->pos + off; + if ((lfs_soff_t)file->pos + off < 0) { + return LFS_ERR_INVAL; + } else { + npos = file->pos + off; + } } else if (whence == LFS_SEEK_END) { - npos = lfs_file_rawsize(lfs, file) + off; + lfs_soff_t res = lfs_file_rawsize(lfs, file) + off; + if (res < 0) { + return LFS_ERR_INVAL; + } else { + npos = res; + } } if (npos > lfs->file_max) {