diff --git a/components/dfs/filesystems/elmfat/ff.c b/components/dfs/filesystems/elmfat/ff.c index 1896bf205..f6b85c30c 100644 --- a/components/dfs/filesystems/elmfat/ff.c +++ b/components/dfs/filesystems/elmfat/ff.c @@ -3033,10 +3033,22 @@ FRESULT f_seekdir( int offset /* the seek offset */ ) { - return dir_sdi(dj, offset); /* seek directory index to offset */ + int i = 0; + + if (dir_sdi(dj, 0) != FR_OK || offset < 0) + return FR_INT_ERR; + + while(i < offset) + { + if(dir_read(dj) != FR_OK || dir_next(dj, 0) != FR_OK) + return FR_INT_ERR; + i++; + } + return FR_OK; } + #if _FS_MINIMIZE == 0 /*-----------------------------------------------------------------------*/ /* Get File Status */