This commit is contained in:
Peter Andersson
2017-05-27 09:45:34 +02:00
parent fec9999eb0
commit 4b520a03ed
2 changed files with 18 additions and 2 deletions
+2 -2
View File
@@ -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;
+16
View File
@@ -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)