From 537ebaccb88baa3a40c392716d33482b3ef1641b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Mon, 15 Mar 2021 11:53:13 +0100 Subject: dont seek past eof --- src/.gitignore | 1 + src/filesys/file.c | 7 ++++++- src/userprog/build/fail | 0 3 files changed, 7 insertions(+), 1 deletion(-) delete mode 100644 src/userprog/build/fail diff --git a/src/.gitignore b/src/.gitignore index bea5755..89ff8ee 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -1 +1,2 @@ TAGS +*.o diff --git a/src/filesys/file.c b/src/filesys/file.c index d5fc10d..238806a 100644 --- a/src/filesys/file.c +++ b/src/filesys/file.c @@ -155,7 +155,12 @@ file_seek (struct file *file, off_t new_pos) { ASSERT (file != NULL); ASSERT (new_pos >= 0); - file->pos = new_pos; + off_t size = inode_length (file->inode); + if (new_pos < size) { + file->pos = new_pos; + } else { + file->pos = size; + } } /* Returns the current position in FILE as a byte offset from the diff --git a/src/userprog/build/fail b/src/userprog/build/fail deleted file mode 100644 index e69de29..0000000 -- cgit v1.2.1