From dccbb44d251fe5a10ca3167ffbf0308b28aa636d Mon Sep 17 00:00:00 2001 From: Fabrizio Bertocci Date: Wed, 7 Apr 2021 15:53:58 -0400 Subject: [PATCH] Fixed wrong check on size of sockaddr_in passed in the message, causing the function to return EINVAL on BSD/MacOS for non-connected sockets --- libc/sock/sendmsg.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libc/sock/sendmsg.c b/libc/sock/sendmsg.c index 5e9cca4c2..fc082c59a 100644 --- a/libc/sock/sendmsg.c +++ b/libc/sock/sendmsg.c @@ -43,7 +43,7 @@ ssize_t sendmsg(int fd, const struct msghdr *msg, int flags) { /* An optional address is provided, convert it to the BSD form */ char addr2[128]; struct msghdr msg2; - if (sizeof(addr2) > msg->msg_namelen) return einval(); + if (msg->msg_namelen > sizeof(addr2)) return einval(); memcpy(&addr2[0], msg->msg_name, msg->msg_namelen); sockaddr2bsd(&addr2[0]);