mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 01:55:51 +02:00
The auth_hmacs array in struct sctp_cookie is supposed to store a complete
SCTP_AUTH_HMAC_ALGO parameter, which consists of a struct sctp_paramhdr
followed by N HMAC identifiers.
However, the array size was calculated using an extra 2 bytes instead of
sizeof(struct sctp_paramhdr), which is 4 bytes. When four HMAC identifiers
are configured, the HMAC-ALGO parameter stored in the endpoint is larger
than the auth_hmacs buffer in the cookie.
As a result, sctp_association_init() copies beyond the end of auth_hmacs
when initializing the association, corrupting the adjacent auth_chunks
field. This can lead to an invalid HMAC identifier being accepted and later
cause an out-of-bounds read in sctp_auth_get_hmac().
Fix the array size calculation by including the full SCTP parameter header
size.
Fixes:
|
||
|---|---|---|
| .. | ||
| auth.h | ||
| checksum.h | ||
| command.h | ||
| constants.h | ||
| sctp.h | ||
| sm.h | ||
| stream_interleave.h | ||
| stream_sched.h | ||
| structs.h | ||
| tsnmap.h | ||
| ulpevent.h | ||
| ulpqueue.h | ||