Fix mbuf releated crashes in switch(4). They have been found by
authorbluhm <bluhm@openbsd.org>
Fri, 28 Dec 2018 14:32:47 +0000 (14:32 +0000)
committerbluhm <bluhm@openbsd.org>
Fri, 28 Dec 2018 14:32:47 +0000 (14:32 +0000)
commit54e30ac1a80406fdc86d542b5333348256eb840e
tree359480ef48971eb3a25d16a8d33701569a1ed181
parentd104a562c814e12f2fc9098bac279e1269d55565
Fix mbuf releated crashes in switch(4).  They have been found by
syzkaller as pool corruption panic.  It is unclear which bug caused
what, but it should be better now.
- Check M_PKTHDR with assertion before accessing m_pkthdr.
- Do not access oh_length without m_pullup().
- After checking if there is space at the end of the mbuf, don't
  overwrite the data at the beginning.  Append the new content.
- Do not set m_len and m_pkthdr.len when it is unclear whether
  the ofp_error header fits at all.  Use m_makespace() to adjust
  the mbuf.
Reported-by: syzbot+6efc0a9d5b700b54392e@syzkaller.appspotmail.com
test akoshibe@; OK claudio@
sys/net/if_switch.c
sys/net/switchctl.c
sys/net/switchofp.c