From 85e5bff2767df679d4bc21604a4e293115c2a087 Mon Sep 17 00:00:00 2001 From: Jiuzhu Dong Date: Tue, 31 Aug 2021 11:17:20 +0800 Subject: [PATCH] exfatfs_seek: return current location plus offset bytes when whence is SEEK_CUR VELAPLATFO-195 VELAPLATFO-194 Change-Id: Ic81d3169f948e70ed5f87fca1b78ce5905f59c98 Signed-off-by: Jiuzhu Dong --- fs/exfat/exfat_vfs.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/fs/exfat/exfat_vfs.c b/fs/exfat/exfat_vfs.c index 93c3cbd9f13..f354a8c6d73 100644 --- a/fs/exfat/exfat_vfs.c +++ b/fs/exfat/exfat_vfs.c @@ -463,16 +463,23 @@ static off_t exfatfs_seek(FAR struct file *filep, off_t offset, int whence) switch (whence) { - case SEEK_SET: - filep->f_pos = offset; - break; - case SEEK_CUR: offset += filep->f_pos; + + case SEEK_SET: + if (offset >= 0) + { + filep->f_pos = offset; + } + else + { + ret = -EINVAL; + } + break; case SEEK_END: - filep->f_pos = priv->node->size; + filep->f_pos = priv->node->size + offset; break; default: