]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/amd/display: Clamp HDMI HDCP2 rx_id_list read to buffer size
authorHarry Wentland <harry.wentland@amd.com>
Thu, 7 May 2026 19:38:37 +0000 (15:38 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 3 Jun 2026 18:45:23 +0000 (14:45 -0400)
[Why & How]
During HDCP 2.x repeater authentication over HDMI, the driver reads the
sink's RxStatus register and extracts a 10-bit message size field (max
value 1023). This value is used as the read length for the ReceiverID
list without being clamped to the size of the destination buffer
rx_id_list[177]. A malicious HDMI repeater could advertise a message
size larger than the buffer, causing an out-of-bounds write during the
I2C read.

Clamp the read length in mod_hdcp_read_rx_id_list() to the size of the
rx_id_list buffer, matching the approach already used in the DP branch.

Fixes: eff682f83c9c ("drm/amd/display: Add DDC handles for HDCP2.2")
Assisted-by: Copilot:claude-opus-4.6
Reviewed-by: Alex Hung <alex.hung@amd.com>
Signed-off-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Ray Wu <ray.wu@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
(cherry picked from commit 229212219e4247d9486f8ba41ef087358490be09)
Cc: stable@vger.kernel.org
drivers/gpu/drm/amd/display/modules/hdcp/hdcp_ddc.c

index 0ca39873f80733ccf86d4694b69403301f9f01b5..324413a090bf3fe6842a9910f793cbe39b4dc98b 100644 (file)
@@ -529,7 +529,8 @@ enum mod_hdcp_status mod_hdcp_read_rx_id_list(struct mod_hdcp *hdcp)
        } else {
                status = read(hdcp, MOD_HDCP_MESSAGE_ID_READ_REPEATER_AUTH_SEND_RECEIVERID_LIST,
                                hdcp->auth.msg.hdcp2.rx_id_list,
-                               hdcp->auth.msg.hdcp2.rx_id_list_size);
+                               MIN(hdcp->auth.msg.hdcp2.rx_id_list_size,
+                                   sizeof(hdcp->auth.msg.hdcp2.rx_id_list)));
        }
        return status;
 }