Rework the packet.c code for decoding and assembling DHCP messages.
authorreyk <reyk@openbsd.org>
Wed, 5 Apr 2017 14:40:56 +0000 (14:40 +0000)
committerreyk <reyk@openbsd.org>
Wed, 5 Apr 2017 14:40:56 +0000 (14:40 +0000)
commit22c60a6bb555fc9852c456dbd832cc83f94e6274
tree61076758369c401f2ae63abff15039f5c3826302
parent6d207a7535cfcf8b29344bced795c7af2d3cbcb3
Rework the packet.c code for decoding and assembling DHCP messages.

This code suffered from many years of incremental improvements, fix it to:
- verify available buffer space in all cases and don't just trust the caller
- have an API where you always pass the full buffer length and absolute offset
- use consistent types for lengths and buffer offsets (int vs. size_t, ssize_t)
- don't just ignore errors, return and fail when something is wrong

OK rzalamena@
usr.sbin/dhcrelay/bpf.c
usr.sbin/dhcrelay/dhcpd.h
usr.sbin/dhcrelay/packet.c