diff --git a/fs/vfs/main.cc b/fs/vfs/main.cc index 4adf443405..889aa268b6 100644 --- a/fs/vfs/main.cc +++ b/fs/vfs/main.cc @@ -120,6 +120,11 @@ int open(const char *pathname, int flags, ...) int fd, error; int acc; + if (pathname == nullptr) { + error = EFAULT; + goto out_errno; + } + acc = 0; switch (flags & O_ACCMODE) { case O_RDONLY: diff --git a/fs/vfs/vfs_syscalls.cc b/fs/vfs/vfs_syscalls.cc index 487d57297b..d9bb18fc1a 100644 --- a/fs/vfs/vfs_syscalls.cc +++ b/fs/vfs/vfs_syscalls.cc @@ -117,6 +117,10 @@ sys_open(char *path, int flags, mode_t mode, struct file **fpp) DPRINTF(VFSDB_SYSCALL, ("sys_open: path=%s flags=%x mode=%x\n", path, flags, mode)); + if (path == nullptr) { + return (EFAULT); + } + flags = fflags(flags); if (flags & O_CREAT) { error = namei(path, &dp);