summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGustav Sörnäs <gustav@sornas.net>2021-03-15 11:53:13 +0100
committerGustav Sörnäs <gustav@sornas.net>2021-03-15 11:53:13 +0100
commit537ebaccb88baa3a40c392716d33482b3ef1641b (patch)
tree9caac9527d75e174c2a72d1ae843e6c43a9083bf
parent978506ef525e7901b62602180969e9d5a8452ba4 (diff)
downloadpintos-537ebaccb88baa3a40c392716d33482b3ef1641b.tar.gz
dont seek past eof
-rw-r--r--src/.gitignore1
-rw-r--r--src/filesys/file.c7
-rw-r--r--src/userprog/build/fail0
3 files changed, 7 insertions, 1 deletions
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
--- a/src/userprog/build/fail
+++ /dev/null