summaryrefslogtreecommitdiffstats
path: root/sys/netipsec/xform_ipip.c
diff options
context:
space:
mode:
authorsam <sam@FreeBSD.org>2004-01-20 22:45:10 +0000
committersam <sam@FreeBSD.org>2004-01-20 22:45:10 +0000
commit0ac3a99bac662e7f27e474770539a21ab8c593bf (patch)
treeac4a2f5f2c5d428bf034a6c176f3ea1f11bff957 /sys/netipsec/xform_ipip.c
parentd37c54b3a91f8ed5e9d94c5e4356f978869d0f7a (diff)
downloadFreeBSD-src-0ac3a99bac662e7f27e474770539a21ab8c593bf.zip
FreeBSD-src-0ac3a99bac662e7f27e474770539a21ab8c593bf.tar.gz
Fix ipip_output() to always set *mp to NULL on failure, even if 'm'
is NULL, otherwise ipsec4_process_packet() may try to m_freem() a bad pointer. In ipsec4_process_packet(), don't try to m_freem() 'm' twice; ipip_output() already did it. Obtained from: netbsd
Diffstat (limited to 'sys/netipsec/xform_ipip.c')
-rw-r--r--sys/netipsec/xform_ipip.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/netipsec/xform_ipip.c b/sys/netipsec/xform_ipip.c
index a845322..0f881a1 100644
--- a/sys/netipsec/xform_ipip.c
+++ b/sys/netipsec/xform_ipip.c
@@ -526,7 +526,6 @@ ipip_output(
if (m == 0) {
DPRINTF(("%s: M_PREPEND failed\n", __func__));
ipipstat.ipips_hdrops++;
- *mp = NULL;
error = ENOBUFS;
goto bad;
}
@@ -610,7 +609,8 @@ nofamily:
return 0;
bad:
if (m)
- m_freem(m), *mp = NULL;
+ m_freem(m);
+ *mp = NULL;
return (error);
}
OpenPOWER on IntegriCloud