diff options
| author | Denys Fedoryshchenko <denys.f@collabora.com> | 2026-08-10 09:42:23 +0300 |
|---|---|---|
| committer | Denys Fedoryshchenko <denys.f@collabora.com> | 2026-08-10 09:42:23 +0300 |
| commit | b0e7444cfea168b6b283ca89e00b57494e0bced2 (patch) | |
| tree | 704446c091aabe66af730bad028ceae8df47739f /.github | |
| parent | a9bfcdb86b2da91077c21c169e767975c029eabe (diff) | |
| download | accel-ppp-b0e7444cfea168b6b283ca89e00b57494e0bced2.tar.gz accel-ppp-b0e7444cfea168b6b283ca89e00b57494e0bced2.zip | |
dhcpv6: fix end pointer of an encapsulated relay message
opth->data already points past the option header, so adding
sizeof(*opth) again counted it twice and left endptr four bytes beyond
the end of the Relay-Message option, and possibly beyond the received
packet.
The bounds check at the top of the option loop is written against that
endptr, so on the next pass it accepted an option header that lies
outside the buffer and read opth->len from it. ASan on a Relay-Forward
packet:
ERROR: AddressSanitizer: heap-buffer-overflow
READ of size 2 in dhcpv6_packet_parse dhcpv6_packet.c:158
The end of the relayed message is the option payload, nothing more.
Diffstat (limited to '.github')
0 files changed, 0 insertions, 0 deletions
