From: Selva Nair Date: Mon, 27 Mar 2023 17:12:36 +0000 (-0400) Subject: Bug-fix: segfault in dco_get_peer_stats() X-Git-Tag: v2.7_alpha1~494 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=10c3f25a26bce480f80624c5ef4cb6774a31c305;p=thirdparty%2Fopenvpn.git Bug-fix: segfault in dco_get_peer_stats() We persist peer-stats when restarting, but an early restart before open_tun results in a segfault in dco_get_peer_stats(). To reproduce, trigger a TLS handshake error due to lack of common protocols, for example. Fix by checking that tuntap is defined before dereferencing it. Signed-off-by: Selva Nair Acked-by: Antonio Quartulli Message-Id: <20230327171236.51771-1-selva.nair@gmail.com> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg26530.html Signed-off-by: Gert Doering --- diff --git a/src/openvpn/dco_linux.c b/src/openvpn/dco_linux.c index 317f9dc03..41540c0f8 100644 --- a/src/openvpn/dco_linux.c +++ b/src/openvpn/dco_linux.c @@ -975,6 +975,11 @@ dco_get_peer_stats(struct context *c) uint32_t peer_id = c->c2.tls_multi->dco_peer_id; msg(D_DCO_DEBUG, "%s: peer-id %d", __func__, peer_id); + if (!c->c1.tuntap) + { + return 0; + } + dco_context_t *dco = &c->c1.tuntap->dco; struct nl_msg *nl_msg = ovpn_dco_nlmsg_create(dco, OVPN_CMD_GET_PEER); struct nlattr *attr = nla_nest_start(nl_msg, OVPN_ATTR_GET_PEER);