⬢ DragonFlyBSD Kernel Audit
DF-4216 / fix.diff
← back to finding ↓ download raw
--- a/sys/dev/drm/amd/display/dc/core/dc.c
+++ b/sys/dev/drm/amd/display/dc/core/dc.c
@@ -1737,11 +1737,18 @@
 		struct dc *dc,
 		uint32_t link_index,
 		struct i2c_command *cmd)
 {
 
-	struct dc_link *link = dc->links[link_index];
+	struct dc_link *link;
+
+	if (link_index >= dc->link_count) {
+		DC_ERROR("dc_submit_i2c: invalid link index %u (max %u)\n",
+			 link_index, dc->link_count);
+		return false;
+	}
+	link = dc->links[link_index];
 	struct ddc_service *ddc = link->ddc;
 	return dce_i2c_submit_command(
 		dc->res_pool,
 		ddc->ddc_pin,
 		cmd);