mirror of
https://github.com/pellepl/spiffs.git
synced 2026-10-15 12:17:37 +00:00
fixes #148
This commit is contained in:
@@ -597,13 +597,13 @@ s32_t SPIFFS_lseek(spiffs *fs, spiffs_file fh, s32_t offs, int whence) {
|
||||
break;
|
||||
}
|
||||
|
||||
if ((offs > fileSize)) {
|
||||
if (offs > fileSize) {
|
||||
fd->fdoffset = fileSize;
|
||||
res = SPIFFS_ERR_END_OF_OBJECT;
|
||||
}
|
||||
SPIFFS_API_CHECK_RES_UNLOCK(fs, res);
|
||||
|
||||
spiffs_span_ix data_spix = offs / SPIFFS_DATA_PAGE_SIZE(fs);
|
||||
spiffs_span_ix data_spix = (offs > 0 ? (offs-1) : 0) / SPIFFS_DATA_PAGE_SIZE(fs);
|
||||
spiffs_span_ix objix_spix = SPIFFS_OBJ_IX_ENTRY_SPAN_IX(fs, data_spix);
|
||||
if (fd->cursor_objix_spix != objix_spix) {
|
||||
spiffs_page_ix pix;
|
||||
|
||||
@@ -1160,6 +1160,21 @@ TEST(spiffs_145) {
|
||||
} TEST_END
|
||||
|
||||
|
||||
TEST(seek_bug_148) {
|
||||
int res;
|
||||
#define MAGIC_SIZE_THAT_FAILS 26355 // happens to be SPIFFS_DATA_PAGE_SIZE(FS) * SPIFFS_OBJ_HDR_IX_LEN(FS)
|
||||
fs_reset_specific(0, 0, 64*1024, 4096, 4096, 256);
|
||||
u8_t buf[MAGIC_SIZE_THAT_FAILS];
|
||||
spiffs_file fd = SPIFFS_open(FS, "EVENT", SPIFFS_O_CREAT | SPIFFS_O_RDWR, 0);
|
||||
TEST_CHECK_GT(fd, 0);
|
||||
TEST_CHECK_EQ(SPIFFS_write(FS, fd, &buf, sizeof(buf)), sizeof(buf));
|
||||
TEST_CHECK_EQ(SPIFFS_close(FS, fd), SPIFFS_OK);
|
||||
fd = SPIFFS_open(FS, "EVENT", SPIFFS_O_RDONLY, 0);
|
||||
TEST_CHECK_GT(fd, 0);
|
||||
TEST_CHECK_EQ(SPIFFS_lseek(FS, fd, 0, SEEK_END), MAGIC_SIZE_THAT_FAILS);
|
||||
return TEST_RES_OK;
|
||||
} TEST_END
|
||||
|
||||
|
||||
SUITE_TESTS(bug_tests)
|
||||
ADD_TEST(nodemcu_full_fs_1)
|
||||
@@ -1174,6 +1189,7 @@ SUITE_TESTS(bug_tests)
|
||||
ADD_TEST(spiffs_dup_file_74)
|
||||
ADD_TEST(temporal_fd_cache)
|
||||
ADD_TEST(spiffs_145)
|
||||
ADD_TEST(seek_bug_148)
|
||||
//ADD_TEST(small_free_space)
|
||||
ADD_TEST(lots_of_overwrite)
|
||||
ADD_TEST_NON_DEFAULT(fuzzer_found_1)
|
||||
|
||||
Reference in New Issue
Block a user