DragonFlyBSD Kernel Audit
DF-1432 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/dev/drm/radeon/radeon_display.c b/sys/dev/drm/radeon/radeon_display.c
--- a/sys/dev/drm/radeon/radeon_display.c
+++ b/sys/dev/drm/radeon/radeon_display.c
@@ -810,27 +810,27 @@
 			devices = radeon_encoder->devices & radeon_connector->devices;
 			if (devices) {
 				if (devices & ATOM_DEVICE_CRT1_SUPPORT)
-					DRM_INFO("    CRT1: %s\n", encoder_names[radeon_encoder->encoder_id]);
+					DRM_INFO("    CRT1: %s\n", encoder_names[(radeon_encoder->encoder_id < nitems(encoder_names)) ? radeon_encoder->encoder_id : 0]);
 				if (devices & ATOM_DEVICE_CRT2_SUPPORT)
-					DRM_INFO("    CRT2: %s\n", encoder_names[radeon_encoder->encoder_id]);
+					DRM_INFO("    CRT2: %s\n", encoder_names[(radeon_encoder->encoder_id < nitems(encoder_names)) ? radeon_encoder->encoder_id : 0]);
 				if (devices & ATOM_DEVICE_LCD1_SUPPORT)
-					DRM_INFO("    LCD1: %s\n", encoder_names[radeon_encoder->encoder_id]);
+					DRM_INFO("    LCD1: %s\n", encoder_names[(radeon_encoder->encoder_id < nitems(encoder_names)) ? radeon_encoder->encoder_id : 0]);
 				if (devices & ATOM_DEVICE_DFP1_SUPPORT)
-					DRM_INFO("    DFP1: %s\n", encoder_names[radeon_encoder->encoder_id]);
+					DRM_INFO("    DFP1: %s\n", encoder_names[(radeon_encoder->encoder_id < nitems(encoder_names)) ? radeon_encoder->encoder_id : 0]);
 				if (devices & ATOM_DEVICE_DFP2_SUPPORT)
-					DRM_INFO("    DFP2: %s\n", encoder_names[radeon_encoder->encoder_id]);
+					DRM_INFO("    DFP2: %s\n", encoder_names[(radeon_encoder->encoder_id < nitems(encoder_names)) ? radeon_encoder->encoder_id : 0]);
 				if (devices & ATOM_DEVICE_DFP3_SUPPORT)
-					DRM_INFO("    DFP3: %s\n", encoder_names[radeon_encoder->encoder_id]);
+					DRM_INFO("    DFP3: %s\n", encoder_names[(radeon_encoder->encoder_id < nitems(encoder_names)) ? radeon_encoder->encoder_id : 0]);
 				if (devices & ATOM_DEVICE_DFP4_SUPPORT)
-					DRM_INFO("    DFP4: %s\n", encoder_names[radeon_encoder->encoder_id]);
+					DRM_INFO("    DFP4: %s\n", encoder_names[(radeon_encoder->encoder_id < nitems(encoder_names)) ? radeon_encoder->encoder_id : 0]);
 				if (devices & ATOM_DEVICE_DFP5_SUPPORT)
-					DRM_INFO("    DFP5: %s\n", encoder_names[radeon_encoder->encoder_id]);
+					DRM_INFO("    DFP5: %s\n", encoder_names[(radeon_encoder->encoder_id < nitems(encoder_names)) ? radeon_encoder->encoder_id : 0]);
 				if (devices & ATOM_DEVICE_DFP6_SUPPORT)
-					DRM_INFO("    DFP6: %s\n", encoder_names[radeon_encoder->encoder_id]);
+					DRM_INFO("    DFP6: %s\n", encoder_names[(radeon_encoder->encoder_id < nitems(encoder_names)) ? radeon_encoder->encoder_id : 0]);
 				if (devices & ATOM_DEVICE_TV1_SUPPORT)
-					DRM_INFO("    TV1: %s\n", encoder_names[radeon_encoder->encoder_id]);
+					DRM_INFO("    TV1: %s\n", encoder_names[(radeon_encoder->encoder_id < nitems(encoder_names)) ? radeon_encoder->encoder_id : 0]);
 				if (devices & ATOM_DEVICE_CV_SUPPORT)
-					DRM_INFO("    CV: %s\n", encoder_names[radeon_encoder->encoder_id]);
+					DRM_INFO("    CV: %s\n", encoder_names[(radeon_encoder->encoder_id < nitems(encoder_names)) ? radeon_encoder->encoder_id : 0]);
 			}
 		}
 		i++;