diff --git a/sys/compat/linux/linux_file.c b/sys/compat/linux/linux_file.c index 6a1402c0945..8926e760fc3 100644 --- a/sys/compat/linux/linux_file.c +++ b/sys/compat/linux/linux_file.c @@ -1042,6 +1042,9 @@ linux_readlink(struct thread *td, struct linux_readlink_args *args) char *name; int error; + if (args->count <= 0) + return (EINVAL); + if (!LUSECONVPATH(td)) { return (kern_readlinkat(td, AT_FDCWD, args->name, UIO_USERSPACE, args->buf, UIO_USERSPACE, args->count)); @@ -1060,6 +1063,9 @@ linux_readlinkat(struct thread *td, struct linux_readlinkat_args *args) char *name; int error, dfd; + if (args->bufsiz <= 0) + return (EINVAL); + dfd = (args->dfd == LINUX_AT_FDCWD) ? AT_FDCWD : args->dfd; if (!LUSECONVPATH(td)) { return (kern_readlinkat(td, dfd, args->path, UIO_USERSPACE,