From: Antonio Quartulli Date: Tue, 15 Aug 2023 23:15:55 +0000 (+0200) Subject: dco: fix crash when --multihome is used with --proto tcp X-Git-Tag: v2.6.7~22 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=70ef43f2b9b938256e0f689f4ddba0d6fbb3a371;p=thirdparty%2Fopenvpn.git dco: fix crash when --multihome is used with --proto tcp Although it's a combination of options that is not really useful, when specifying --multihome along with --proto tcp and DCO is enabled, OpenVPN will crash while attempting to access c2.link_socket_actual (NULL for the TCP case) in order to retrieve the local address (in function dco_multi_get_localaddr()) Prevent crash by running this code only if proto is UDP. The same check is already performed in socket.c/h for the non-DCO case. Github: fixes OpenVPN/openvpn#390 Change-Id: I61adc26ce2ff737e020c3d980902a46758cb23e5 Signed-off-by: Antonio Quartulli Acked-by: Gert Doering Message-Id: <20230815231555.6465-1-a@unstable.cc> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg26953.html Signed-off-by: Gert Doering (cherry picked from commit 0793eb105c5720c4eb31af71c9db81459439e510) --- diff --git a/src/openvpn/dco.c b/src/openvpn/dco.c index 308578b47..3615bab27 100644 --- a/src/openvpn/dco.c +++ b/src/openvpn/dco.c @@ -511,7 +511,7 @@ dco_multi_get_localaddr(struct multi_context *m, struct multi_instance *mi, #if ENABLE_IP_PKTINFO struct context *c = &mi->context; - if (!(c->options.sockflags & SF_USE_IP_PKTINFO)) + if (!proto_is_udp(c->c2.link_socket->info.proto) || !(c->options.sockflags & SF_USE_IP_PKTINFO)) { return false; }