From: Frank Lichtenheld Date: Wed, 14 Jan 2026 13:58:02 +0000 (+0100) Subject: socks: In establish_socks_proxy_udpassoc check result of recv_socks_reply X-Git-Tag: v2.7_rc5~5 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b2cc5c2ec49c3cfc428f0ecef9684ac318845a84;p=thirdparty%2Fopenvpn.git socks: In establish_socks_proxy_udpassoc check result of recv_socks_reply Not just check the return value but also that relay_addr is valid. recv_socks_reply doesn't care whether the answer is what we expected. This is probably a very unlikely edge case but it doesn't hurt to check for it here. Reported-By: Joshua Rogers Found-By: ZeroPath (https://zeropath.com) Github: openvpn-private-issues#13 Change-Id: Ic1c8f24de423541bdc85e70b5a688213800d86de Signed-off-by: Frank Lichtenheld Acked-by: Gert Doering Gerrit URL: https://gerrit.openvpn.net/c/openvpn/+/1469 Message-Id: <20260114135807.20637-1-gert@greenie.muc.de> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg35249.html Signed-off-by: Gert Doering --- diff --git a/src/openvpn/socks.c b/src/openvpn/socks.c index 078b4e191..5cb5912ff 100644 --- a/src/openvpn/socks.c +++ b/src/openvpn/socks.c @@ -412,8 +412,7 @@ establish_socks_proxy_udpassoc(struct socks_proxy_info *p, send(ctrl_sd, "\x05\x03\x00\x01\x00\x00\x00\x00\x00\x00", 10, MSG_NOSIGNAL); if (size != 10) { - msg(D_LINK_ERRORS | M_ERRNO, - "establish_socks_proxy_passthru: TCP port write failed on send()"); + msg(D_LINK_ERRORS | M_ERRNO, "%s: TCP port write failed on send()", __func__); goto error; } } @@ -424,6 +423,11 @@ establish_socks_proxy_udpassoc(struct socks_proxy_info *p, { goto error; } + if (!relay_addr->addr.in4.sin_addr.s_addr) + { + msg(D_LINK_ERRORS, "%s: Socks proxy did not answer with IPv4 address", __func__); + goto error; + } return;