Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F159368581
D57425.id.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D57425.id.diff
View Options
diff --git a/tests/sys/kern/unix_passfd_test.c b/tests/sys/kern/unix_passfd_test.c
--- a/tests/sys/kern/unix_passfd_test.c
+++ b/tests/sys/kern/unix_passfd_test.c
@@ -210,7 +210,7 @@
static ssize_t
recvfd_payload(int sockfd, int *recv_fd, void *buf, size_t buflen,
- size_t cmsgsz, int recvmsg_flags)
+ size_t cmsgsz, int recvmsg_flags, bool failok)
{
struct cmsghdr *cmsghdr;
struct msghdr msghdr;
@@ -233,9 +233,13 @@
msghdr.msg_iovlen = 1;
len = recvmsg(sockfd, &msghdr, recvmsg_flags);
+ if (len == -1 && failok)
+ return (len);
ATF_REQUIRE_MSG(len != -1, "recvmsg failed: %s", strerror(errno));
cmsghdr = CMSG_FIRSTHDR(&msghdr);
+ if (cmsghdr == NULL && failok)
+ return (len);
ATF_REQUIRE_MSG(cmsghdr != NULL,
"recvmsg: did not receive control message");
foundcreds = false;
@@ -267,7 +271,7 @@
char ch = 0;
len = recvfd_payload(sockfd, recv_fd, &ch, sizeof(ch),
- CMSG_SPACE(sizeof(int)), flags);
+ CMSG_SPACE(sizeof(int)), flags, false);
ATF_REQUIRE_MSG((size_t)len == sizeof(ch),
"recvmsg: %zd bytes received; expected %zd", len, sizeof(ch));
}
@@ -746,7 +750,8 @@
"sendmsg: %zd bytes sent, expected %lu", len, sendspace);
#endif
rlen = recvfd_payload(fd[1], &getfd, buf, len,
- CMSG_SPACE(SOCKCREDSIZE(CMGROUP_MAX)) + CMSG_SPACE(sizeof(int)), 0);
+ CMSG_SPACE(SOCKCREDSIZE(CMGROUP_MAX)) + CMSG_SPACE(sizeof(int)), 0,
+ false);
ATF_REQUIRE_MSG(rlen == len,
"recvmsg: %zd bytes received; expected %zd", rlen, len);
@@ -1052,7 +1057,7 @@
ATF_REQUIRE(close(putfd) == 0);
for (int i = 1; i <= 2; i++) {
rlen = recvfd_payload(fd[1], &getfd, buf, 2,
- CMSG_SPACE(sizeof(int)) * 2, 0);
+ CMSG_SPACE(sizeof(int)) * 2, 0, false);
ATF_REQUIRE_MSG(rlen == 1,
"recvmsg: %zd bytes received; expected 1", rlen);
ATF_REQUIRE(close(getfd) == 0);
@@ -1131,7 +1136,7 @@
/* Get a directory from outside the jail root. */
len = recvfd_payload(sock[1], &dfd, &ch, sizeof(ch),
- CMSG_SPACE(sizeof(int)), 0);
+ CMSG_SPACE(sizeof(int)), 0, false);
if (len == -1)
err(1, "recvmsg");
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Jun 14, 9:16 AM (13 h, 12 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33742177
Default Alt Text
D57425.id.diff (2 KB)
Attached To
Mode
D57425: tests: unix: allow passfd's recvfd_payload() to fail
Attached
Detach File
Event Timeline
Log In to Comment