In the Linux kernel, the following vulnerability has been resolved:
drm/edid: In connectorbadedid() cap numofext by num_blocks read
In commit e11f5bd8228f ("drm: Add support for DP 1.4 Compliance edid
corruption test") the function connectorbadedid() started assuming
that the memory for the EDID passed to it was big enough to hold
edid[0x7e] + 1
blocks of data (1 extra for the base block). It
completely ignored the fact that the function was passed num_blocks
which indicated how much memory had been allocated for the EDID.
Let's fix this by adding a bounds check.
This is important for handling the case where there's an error in the
first block of the EDID. In that case we will call
connectorbadedid() without having re-allocated memory based on
edid[0x7e]
.