diff options
| author | Denys Fedoryshchenko <denys.f@collabora.com> | 2026-08-10 09:43:09 +0300 |
|---|---|---|
| committer | Denys Fedoryshchenko <denys.f@collabora.com> | 2026-08-10 09:43:09 +0300 |
| commit | 7c98f320c3ef7e863a9c7d30bb81735bb4fec46d (patch) | |
| tree | 53f8852abb971c96dcb03fb16c0eb5dd7ea2fc54 /.github/workflows | |
| parent | b0e7444cfea168b6b283ca89e00b57494e0bced2 (diff) | |
| download | accel-ppp-7c98f320c3ef7e863a9c7d30bb81735bb4fec46d.tar.gz accel-ppp-7c98f320c3ef7e863a9c7d30bb81735bb4fec46d.zip | |
dhcpv6: read the elapsed time and preference options at their real width
print_time() read a 32 bit word out of the Elapsed Time option, which
RFC 8415 21.9 defines as exactly two octets, and clients include it in
almost every message they send. With verbose enabled that is a two byte
read past the option on every DHCPv6 transaction:
ERROR: AddressSanitizer: heap-buffer-overflow
READ of size 4 in print_time dhcpv6_packet.c:499
The value was not byte swapped either, so what got logged was not the
elapsed time. Read two octets, convert them, and copy them out rather
than dereferencing a pointer into the packet that need not be aligned.
print_uint8() has the same shape, so check the length there too before
reading the Preference octet.
Diffstat (limited to '.github/workflows')
0 files changed, 0 insertions, 0 deletions
