aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2021-04-13 19:12:19 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2021-04-23 11:14:09 +0000
commit2df5e7711bee3c35209d576aa57ef09a7a839d79 (patch)
treeb424ccd16b072e0299cbb94417474eca097405a7
parent7f4d5d3cb4ef368f7b3e022ac72d3f9b239b552b (diff)
downloadsrc-2df5e7711bee3c35209d576aa57ef09a7a839d79.tar.gz
src-2df5e7711bee3c35209d576aa57ef09a7a839d79.zip
sbuf_uionew(): sbuf_new() takes int as length
(cherry picked from commit 116f26f947b8bbf868dcd85d79226406029a45ee)
-rw-r--r--sys/kern/subr_sbuf.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/kern/subr_sbuf.c b/sys/kern/subr_sbuf.c
index cdeaf690208f..b7f135e81206 100644
--- a/sys/kern/subr_sbuf.c
+++ b/sys/kern/subr_sbuf.c
@@ -266,6 +266,10 @@ sbuf_uionew(struct sbuf *s, struct uio *uio, int *error)
KASSERT(error != NULL,
("%s called with NULL error pointer", __func__));
+ if (uio->uio_resid >= INT_MAX || uio->uio_resid < SBUF_MINSIZE - 1) {
+ *error = EINVAL;
+ return (NULL);
+ }
s = sbuf_new(s, NULL, uio->uio_resid + 1, 0);
if (s == NULL) {
*error = ENOMEM;