From 00e56cda0c2e302d62f87f45e7cb24323cfa92d7 Mon Sep 17 00:00:00 2001 From: Till Mayer Date: Wed, 13 Nov 2019 20:21:46 +0100 Subject: [PATCH] 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. --- Libraries/LibC/unistd.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Libraries/LibC/unistd.cpp b/Libraries/LibC/unistd.cpp index 2e19149d8f..c935b27769 100644 --- a/Libraries/LibC/unistd.cpp +++ b/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);