fix panics caused by replacing m_copym2 with m_dup_pkt.
authordlg <dlg@openbsd.org>
Thu, 18 Aug 2016 06:01:10 +0000 (06:01 +0000)
committerdlg <dlg@openbsd.org>
Thu, 18 Aug 2016 06:01:10 +0000 (06:01 +0000)
commit2be2e5908b0ca841a7b1c656fa031890045daa97
tree772d1b9d8a49960669730c3e224866f32f31afb4
parent50aba7ce08b89a4672c220b79d265650e37a9d27
fix panics caused by replacing m_copym2 with m_dup_pkt.

m_copym2 is fine duplicating an arbitrary chain of mbufs, while
m_dup_pkt wants to dup a packet with proper headers in the first
mbuf. ipsec copied the tail of an mbuf if any of the clusters are
shared or readonly, and swapped that tail with the result of m_copym2.

m_dup_pkt panics cos of that.

this makes ipsec duplicate the whole packet if any of the chain is
readonly.

found by naddy@ and mlarkin@
this fix is from visa@ who told me to commit it cos he's afk (sleeping)
tested by naddy@
sys/netinet/ip_ah.c
sys/netinet/ip_esp.c
sys/netinet/ip_ipcomp.c