Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/littlefs-project/littlefs.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorChristopher Haster <chaster@utexas.edu>2018-01-04 00:00:04 +0300
committerChristopher Haster <chaster@utexas.edu>2018-01-04 00:00:04 +0300
commitaea3d3db46634bf26298c8df0be020c03b80daba (patch)
tree419e29313c61583acb494ae125b8fdf6290f73cd /tests
parentbe22d3449f23a24e7462114349ce04d751e42437 (diff)
Fixed positive seek bounds checking
This bug was a result of an annoying corner case around intermingling signed and unsigned offsets. The boundary check that prevents seeking a file to a position before the file was preventing valid seeks with positive offsets. This corner case is a bit more complicated than it looks because the offset is signed, while the size of the file is unsigned. Simply casting both to signed or unsigned offsets won't handle large files.
Diffstat (limited to 'tests')
-rwxr-xr-xtests/test_seek.sh16
1 files changed, 16 insertions, 0 deletions
diff --git a/tests/test_seek.sh b/tests/test_seek.sh
index 6600cb2..3b46892 100755
--- a/tests/test_seek.sh
+++ b/tests/test_seek.sh
@@ -133,6 +133,14 @@ tests/test.py << TEST
lfs_file_read(&lfs, &file[0], buffer, size) => size;
memcmp(buffer, "kittycatcat", size) => 0;
+ lfs_file_seek(&lfs, &file[0], 0, LFS_SEEK_CUR) => size;
+ lfs_file_read(&lfs, &file[0], buffer, size) => size;
+ memcmp(buffer, "kittycatcat", size) => 0;
+
+ lfs_file_seek(&lfs, &file[0], size, LFS_SEEK_CUR) => 3*size;
+ lfs_file_read(&lfs, &file[0], buffer, size) => size;
+ memcmp(buffer, "kittycatcat", size) => 0;
+
lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos;
lfs_file_read(&lfs, &file[0], buffer, size) => size;
memcmp(buffer, "kittycatcat", size) => 0;
@@ -174,6 +182,14 @@ tests/test.py << TEST
lfs_file_read(&lfs, &file[0], buffer, size) => size;
memcmp(buffer, "kittycatcat", size) => 0;
+ lfs_file_seek(&lfs, &file[0], 0, LFS_SEEK_CUR) => size;
+ lfs_file_read(&lfs, &file[0], buffer, size) => size;
+ memcmp(buffer, "kittycatcat", size) => 0;
+
+ lfs_file_seek(&lfs, &file[0], size, LFS_SEEK_CUR) => 3*size;
+ lfs_file_read(&lfs, &file[0], buffer, size) => size;
+ memcmp(buffer, "kittycatcat", size) => 0;
+
lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos;
lfs_file_read(&lfs, &file[0], buffer, size) => size;
memcmp(buffer, "kittycatcat", size) => 0;