diff --git a/fs/fs.c b/fs/fs.c index e7b6965..1901c94 100644 --- a/fs/fs.c +++ b/fs/fs.c @@ -910,6 +910,8 @@ case SEEK_SET: if (f->size != FILE_SIZE_STREAM && offset > f->size) goto out; + if (offset < 0) + goto out; pos = offset; break; case SEEK_CUR: @@ -918,9 +920,9 @@ pos = f->pos + offset; break; case SEEK_END: - if (offset) + if (offset > 0) goto out; - pos = f->size; + pos = f->size + offset; break; default: goto out;