diff options
Diffstat (limited to 'security/wpa_supplicant-devel/files/patch-wpa__supplicant_ctrl__iface__unix.c')
-rw-r--r-- | security/wpa_supplicant-devel/files/patch-wpa__supplicant_ctrl__iface__unix.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/security/wpa_supplicant-devel/files/patch-wpa__supplicant_ctrl__iface__unix.c b/security/wpa_supplicant-devel/files/patch-wpa__supplicant_ctrl__iface__unix.c new file mode 100644 index 000000000000..cc73ac35cd35 --- /dev/null +++ b/security/wpa_supplicant-devel/files/patch-wpa__supplicant_ctrl__iface__unix.c @@ -0,0 +1,36 @@ +--- wpa_supplicant/ctrl_iface_unix.c.orig 2022-01-16 12:51:29.000000000 -0800 ++++ wpa_supplicant/ctrl_iface_unix.c 2023-11-29 08:12:07.843443000 -0800 +@@ -506,6 +506,10 @@ + struct group *grp; + char *endp; + int flags; ++#if defined(__FreeBSD__) ++ int optval, rc; ++ socklen_t optlen; ++#endif + + buf = os_strdup(wpa_s->conf->ctrl_interface); + if (buf == NULL) +@@ -678,6 +682,22 @@ + /* Not fatal, continue on.*/ + } + } ++ ++#if defined(__FreeBSD__) ++ /* Ensure we can send a full length message atomically. */ ++ optval = 0; ++ optlen = sizeof(optval); ++ if (getsockopt(priv->sock, SOL_SOCKET, SO_SNDBUF, &optval, &optlen) == -1) { ++ wpa_printf(MSG_INFO, "failed to get sndbuf for sock=%d: %s", ++ priv->sock, strerror(errno)); ++ } else if (optval < CTRL_IFACE_MAX_LEN) { ++ optval = CTRL_IFACE_MAX_LEN; ++ if (setsockopt(priv->sock, SOL_SOCKET, SO_SNDBUF, &optval, ++ sizeof(optval)) == -1) ++ wpa_printf(MSG_ERROR, "failed to set sndbuf for " ++ "sock=%d: %s", priv->sock, strerror(errno)); ++ } ++#endif + + eloop_register_read_sock(priv->sock, wpa_supplicant_ctrl_iface_receive, + wpa_s, priv); |