浏览代码

LibC: open/openat: Make sure path is not a nullptr before dereferencing

open and openat both try to get the length of the path string. When
the path was a nullptr, strlen tried to dereference it, causing a
segfault.
Till Mayer 5 年之前
父节点
当前提交
00e56cda0c
共有 1 个文件被更改,包括 8 次插入0 次删除
  1. 8 0
      Libraries/LibC/unistd.cpp

+ 8 - 0
Libraries/LibC/unistd.cpp

@@ -202,6 +202,10 @@ int openat_with_path_length(int dirfd, const char* path, size_t path_length, int
 
 int open(const char* path, int options, ...)
 {
+    if (!path) {
+        errno = EFAULT;
+        return -1;
+    }
     va_list ap;
     va_start(ap, options);
     auto mode = (mode_t)va_arg(ap, unsigned);
@@ -211,6 +215,10 @@ int open(const char* path, int options, ...)
 
 int openat(int dirfd, const char* path, int options, ...)
 {
+    if (!path) {
+        errno = EFAULT;
+        return -1;
+    }
     va_list ap;
     va_start(ap, options);
     auto mode = (mode_t)va_arg(ap, unsigned);