aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrooks Davis <brooks@FreeBSD.org>2024-01-09 19:35:37 +0000
committerBrooks Davis <brooks@FreeBSD.org>2024-01-09 22:59:29 +0000
commit8e2c2992da7aab7213b6349ff54dbaf1dcc05678 (patch)
tree76f261af61c8d128cd77d096b3d9fc7c46412459
parentf221d35be7a5749e2a1246c81adc9c03c1dc545c (diff)
downloadsrc-8e2c2992da7aab7213b6349ff54dbaf1dcc05678.tar.gz
src-8e2c2992da7aab7213b6349ff54dbaf1dcc05678.zip
socket_msg_trunc: allocate a large enough buffer
Allocate 9000 bytes to match the largest requsted size. Add a check to prevent the list of sizes and buffer size from getting out of sync again. Reviewed by: markj Found with: CheriBSD Differential Revision: https://reviews.freebsd.org/D43340
-rw-r--r--tests/sys/kern/socket_msg_trunc.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/tests/sys/kern/socket_msg_trunc.c b/tests/sys/kern/socket_msg_trunc.c
index ff0499c4540d..b0ea724f0de0 100644
--- a/tests/sys/kern/socket_msg_trunc.c
+++ b/tests/sys/kern/socket_msg_trunc.c
@@ -44,7 +44,7 @@ static void
check_recvmsg(int cs, int ss, struct sockaddr *sa, const size_t sizes[],
size_t nsizes)
{
- char buf[4096];
+ char buf[9000];
memset(buf, 0xFF, sizeof(buf));
for (size_t i = 0; i < nsizes; i++) {
@@ -52,6 +52,8 @@ check_recvmsg(int cs, int ss, struct sockaddr *sa, const size_t sizes[],
size_t sz = sizes[i];
char tbuf[1];
+ ATF_REQUIRE(sz <= sizeof(buf));
+
rc = sendto(cs, buf, sz, 0, sa, sa->sa_len);
ATF_REQUIRE_MSG(rc != -1, "sendto failed: %s", strerror(errno));
ATF_REQUIRE((size_t)rc == sz);