m_getptr(m, 0, ...) may return an mbuf different from m -- if m has no
authorclaudio <claudio@openbsd.org>
Thu, 15 Jul 2010 09:45:09 +0000 (09:45 +0000)
committerclaudio <claudio@openbsd.org>
Thu, 15 Jul 2010 09:45:09 +0000 (09:45 +0000)
commit8f59d4a41be8276d6074decd35b27b16a35429ac
treecf3aec623de483f7f8d03c6d0d8673cef4a42217
parentfd582a89b6594e8f4053668fca96d481ef9b17d8
m_getptr(m, 0, ...) may return an mbuf different from m -- if m has no
data in it. m_getptr() hops over empty buffers and points to the first
allocated data byte. Because of this the m_dup_pkthdr() call done by
m_copym0() can panic because not the first mbuf is passed.
Found the hard way by myself, diff by blambert@ commiitting for him since
he is not around. Tested and OK myself
sys/kern/uipc_mbuf.c