aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyle Evans <kevans@FreeBSD.org>2026-06-19 04:03:30 +0000
committerKyle Evans <kevans@FreeBSD.org>2026-06-19 04:03:30 +0000
commit2f363febf8bf5c3e9ffad95b5998b461adc77c28 (patch)
treec13d9b760c87b338aef2df2baa5a27ee3ac8f761
parent0ae7df3708dd97515a5bc2a068d25a733c9b2b10 (diff)
tests: unix: pull a recvfd_payload_cmsg out of recvfd_payload
This is almost a trivial factoring, but it's still a bit of boilerplate that we don't care to rewrite- the SO_PASSRIGHTS test will still receive some data, so the iovec construction still saves us a few lines. Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D57544
-rw-r--r--tests/sys/kern/unix_passfd_test.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/tests/sys/kern/unix_passfd_test.c b/tests/sys/kern/unix_passfd_test.c
index 66bb406ea14e..2ad40582d058 100644
--- a/tests/sys/kern/unix_passfd_test.c
+++ b/tests/sys/kern/unix_passfd_test.c
@@ -209,12 +209,26 @@ localcreds(int sockfd)
}
static ssize_t
+recvfd_payload_cmsg(int sockfd, void *buf, size_t buflen, struct msghdr *msghdr,
+ int recvmsg_flags)
+{
+ struct iovec iovec;
+
+ iovec.iov_base = buf;
+ iovec.iov_len = buflen;
+
+ msghdr->msg_iov = &iovec;
+ msghdr->msg_iovlen = 1;
+
+ return (recvmsg(sockfd, msghdr, recvmsg_flags));
+}
+
+static ssize_t
recvfd_payload(int sockfd, int *recv_fd, void *buf, size_t buflen,
size_t cmsgsz, int recvmsg_flags)
{
struct cmsghdr *cmsghdr;
struct msghdr msghdr;
- struct iovec iovec;
char *message;
ssize_t len;
bool foundcreds;
@@ -226,13 +240,7 @@ recvfd_payload(int sockfd, int *recv_fd, void *buf, size_t buflen,
msghdr.msg_control = message;
msghdr.msg_controllen = cmsgsz;
- iovec.iov_base = buf;
- iovec.iov_len = buflen;
-
- msghdr.msg_iov = &iovec;
- msghdr.msg_iovlen = 1;
-
- len = recvmsg(sockfd, &msghdr, recvmsg_flags);
+ len = recvfd_payload_cmsg(sockfd, buf, buflen, &msghdr, recvmsg_flags);
ATF_REQUIRE_MSG(len != -1, "recvmsg failed: %s", strerror(errno));
cmsghdr = CMSG_FIRSTHDR(&msghdr);