diff options
author | Konstantin Belousov <kib@FreeBSD.org> | 2023-01-17 01:59:56 +0000 |
---|---|---|
committer | Konstantin Belousov <kib@FreeBSD.org> | 2023-01-18 21:18:39 +0000 |
commit | b1d10b49e24a4fd3af80f8491cd95bd0766ca1f1 (patch) | |
tree | 293195c8650c583b3481d9e93ef545eebe58ecd8 | |
parent | eac971545baa3857903e0107439f00d8438c5847 (diff) | |
download | src-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.c | 6 |
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 |