浏览代码

FileSystem: fix errno on lseek() beyond the bounds of a file

These are all EINVAL. Also remove bogus assert on metadata.size.
Robin Burchell 6 年之前
父节点
当前提交
f1f3cd58b0
共有 1 个文件被更改,包括 3 次插入3 次删除
  1. 3 3
      Kernel/FileSystem/FileDescriptor.cpp

+ 3 - 3
Kernel/FileSystem/FileDescriptor.cpp

@@ -142,17 +142,17 @@ off_t FileDescriptor::seek(off_t offset, int whence)
         break;
     case SEEK_CUR:
         newOffset = m_current_offset + offset;
-        if (newOffset < 0)
-            return -EINVAL;
         break;
     case SEEK_END:
-        ASSERT(metadata.size); // FIXME: What do I do?
         newOffset = metadata.size;
         break;
     default:
         return -EINVAL;
     }
 
+    if (newOffset < 0 || newOffset > metadata.size)
+        return -EINVAL;
+
     m_current_offset = newOffset;
     return m_current_offset;
 }