aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2023-01-17 01:59:56 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2023-01-18 21:18:39 +0000
commitb1d10b49e24a4fd3af80f8491cd95bd0766ca1f1 (patch)
tree293195c8650c583b3481d9e93ef545eebe58ecd8
parenteac971545baa3857903e0107439f00d8438c5847 (diff)
downloadsrc-b1d10b49e24a4fd3af80f8491cd95bd0766ca1f1.tar.gz
src-b1d10b49e24a4fd3af80f8491cd95bd0766ca1f1.zip
if_ipsec(4): handle situations where there are no policy or SADB entry for if
Reviewed by: ae, hselasky Sponsored by: NVIDIA Networking MFC after: 1 week Differential revision: https://reviews.freebsd.org/D38093
-rw-r--r--sys/net/if_ipsec.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/net/if_ipsec.c b/sys/net/if_ipsec.c
index 3952b5edb681..a2f690b4cffb 100644
--- a/sys/net/if_ipsec.c
+++ b/sys/net/if_ipsec.c
@@ -666,6 +666,10 @@ ipsec_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
break;
}
saidx = ipsec_getsaidx(sc, IPSEC_DIR_OUTBOUND, sc->family);
+ if (saidx == NULL) {
+ error = ENXIO;
+ break;
+ }
switch (cmd) {
#ifdef INET
case SIOCGIFPSRCADDR:
@@ -783,6 +787,8 @@ ipsec_set_running(struct ipsec_softc *sc)
int localip;
saidx = ipsec_getsaidx(sc, IPSEC_DIR_OUTBOUND, sc->family);
+ if (saidx == NULL)
+ return;
localip = 0;
switch (sc->family) {
#ifdef INET