Description
In the Linux kernel, the following vulnerability has been resolved: drm/dp/mst: fix OOB reads on 2-byte fields in sideband reply parsers Three sideband reply parsers read 16-bit fields as: val = (raw->msg[idx] << 8) | (raw->msg[idx+1]); and check bounds only after the fact. When idx == raw->curlen, raw->msg[idx+1] reads one byte past the received message data into the following struct fields (curchunk_len, curchunk_idx, curlen). Affected functions: - drm_dp_sideband_parse_enum_path_resources_ack() full_payload_bw_number and avail_payload_bw_number fields - drm_dp_sideband_parse_allocate_payload_ack() allocated_pbn field - drm_dp_sideband_parse_query_payload_ack() allocated_pbn field Fix by using a single combined check (idx + 2 > curlen) before each 2-byte read. Since the check is strictly tighter than idx > curlen, no separate step is needed. [added fixes tag]
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
ad7f8a1f9ced7f049f9b66d588723f243a7034cd to < c1f72a13d54ffd16647d3fa540d961f5deba8790affectedad7f8a1f9ced7f049f9b66d588723f243a7034cd to < 192e146c2d57ad033b0d418ec64ee390f8dc074eaffectedad7f8a1f9ced7f049f9b66d588723f243a7034cd to < 6e3107e6522109a07fc9bb0fc4ec463f1982e113affectedad7f8a1f9ced7f049f9b66d588723f243a7034cd to < bdf0508b1e6785d4a8982c637e97e68d60b47d7baffectedad7f8a1f9ced7f049f9b66d588723f243a7034cd to < 0bcd7675c69a2462a8531fcd9e4d096e9c7ec5dfaffectedad7f8a1f9ced7f049f9b66d588723f243a7034cd to < d5c70523cafa26ad2c7a37b612849abe2683baa8affectedad7f8a1f9ced7f049f9b66d588723f243a7034cd to < 68a624416d1dd481b3e5b7ea0e8a070a9b8a2c73affectedad7f8a1f9ced7f049f9b66d588723f243a7034cd to < 6b89ba3dba2f583626fb693e47e951ffb8bf591faffected
Linux Linux
Default version status: affected
3.17affected0 to < 3.17unaffected5.10.266 to ≤ 5.10.*unaffected5.15.217 to ≤ 5.15.*unaffected6.1.183 to ≤ 6.1.*unaffected6.6.148 to ≤ 6.6.*unaffected6.12.101 to ≤ 6.12.*unaffected6.18.42 to ≤ 6.18.*unaffected7.1.6 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/c1f72a13d54ffd16647d3fa540d961f5deba8790 ↗
- https://git.kernel.org/stable/c/192e146c2d57ad033b0d418ec64ee390f8dc074e ↗
- https://git.kernel.org/stable/c/6e3107e6522109a07fc9bb0fc4ec463f1982e113 ↗
- https://git.kernel.org/stable/c/bdf0508b1e6785d4a8982c637e97e68d60b47d7b ↗
- https://git.kernel.org/stable/c/0bcd7675c69a2462a8531fcd9e4d096e9c7ec5df ↗
- https://git.kernel.org/stable/c/d5c70523cafa26ad2c7a37b612849abe2683baa8 ↗
- https://git.kernel.org/stable/c/68a624416d1dd481b3e5b7ea0e8a070a9b8a2c73 ↗
- https://git.kernel.org/stable/c/6b89ba3dba2f583626fb693e47e951ffb8bf591f ↗