Add missing boundary check when seeking in a file.

This commit is contained in:
Godzil
2022-05-27 12:02:15 +01:00
parent 4457733f3d
commit 8a604309bb
3 changed files with 82 additions and 15 deletions

View File

@@ -97,6 +97,51 @@ TEST(FileOperations, TestingSeek)
ASSERT_EQ(miniffs_read(fp), '!');
}
TEST(FileOperations, LargeOutOfBoundarySeeks)
{
miniffs_t *fs = get_fs("simple_test.mffs");
file_t *fp = miniffs_open(fs, "HELLO.TXT");
miniffs_seek(fp, 100, MFFS_SEEK_SET);
ASSERT_EQ(miniffs_geterror(), MINIFFS_SEEK_OUT_OF_BOUNDARIES);
ASSERT_EQ(miniffs_read(fp), '!');
ASSERT_EQ(miniffs_geterror(), MINIFFS_END_OF_FILE);
miniffs_seek(fp, 100, MFFS_SEEK_END);
ASSERT_EQ(miniffs_geterror(), MINIFFS_SEEK_OUT_OF_BOUNDARIES);
ASSERT_EQ(miniffs_read(fp), 'H');
}
TEST(FileOperations, SeekingAroundBoundaries)
{
miniffs_t *fs = get_fs("simple_test.mffs");
file_t *fp = miniffs_open(fs, "HELLO.TXT");
miniffs_seek(fp, 10, MFFS_SEEK_SET);
ASSERT_EQ(miniffs_geterror(), MINIFFS_NOERROR);
ASSERT_EQ(miniffs_read(fp), 'd');
miniffs_seek(fp, 11, MFFS_SEEK_SET);
ASSERT_EQ(miniffs_geterror(), MINIFFS_NOERROR);
ASSERT_EQ(miniffs_read(fp), '!');
miniffs_seek(fp, 12, MFFS_SEEK_SET);
ASSERT_EQ(miniffs_geterror(), MINIFFS_SEEK_OUT_OF_BOUNDARIES);
ASSERT_EQ(miniffs_read(fp), '!');
miniffs_seek(fp, 10, MFFS_SEEK_END);
ASSERT_EQ(miniffs_geterror(), MINIFFS_NOERROR);
ASSERT_EQ(miniffs_read(fp), 'e');
miniffs_seek(fp, 11, MFFS_SEEK_END);
ASSERT_EQ(miniffs_geterror(), MINIFFS_NOERROR);
ASSERT_EQ(miniffs_read(fp), 'H');
miniffs_seek(fp, 12, MFFS_SEEK_END);
ASSERT_EQ(miniffs_geterror(), MINIFFS_SEEK_OUT_OF_BOUNDARIES);
ASSERT_EQ(miniffs_read(fp), 'H');
}
TEST(FileOperations, TestingEndOfFileBoundary)
{
miniffs_t *fs = get_fs("simple_test.mffs");
@@ -197,5 +242,4 @@ TEST(FileOperations, ReadTooManyBlocks)
ASSERT_EQ(buffer[9], 'l');
ASSERT_EQ(buffer[10], 'd');
ASSERT_EQ(buffer[11], '!');
}