diff --git a/Kernel/Syscalls/read.cpp b/Kernel/Syscalls/read.cpp index e29a9e90ae..61fb800997 100644 --- a/Kernel/Syscalls/read.cpp +++ b/Kernel/Syscalls/read.cpp @@ -24,7 +24,8 @@ KResultOr Process::sys$readv(int fd, Userspace iov u64 total_length = 0; Vector vecs; - vecs.resize(iov_count); + if (!vecs.try_resize(iov_count)) + return ENOMEM; if (!copy_n_from_user(vecs.data(), iov, iov_count)) return EFAULT; for (auto& vec : vecs) { diff --git a/Kernel/Syscalls/write.cpp b/Kernel/Syscalls/write.cpp index e07ed97a5c..c0185f9b11 100644 --- a/Kernel/Syscalls/write.cpp +++ b/Kernel/Syscalls/write.cpp @@ -23,7 +23,8 @@ KResultOr Process::sys$writev(int fd, Userspace io u64 total_length = 0; Vector vecs; - vecs.resize(iov_count); + if (!vecs.try_resize(iov_count)) + return ENOMEM; if (!copy_n_from_user(vecs.data(), iov, iov_count)) return EFAULT; for (auto& vec : vecs) {