⬢ DragonFlyBSD Kernel Audit
DF-3739 / fix.diff
← back to finding ↓ download raw
--- a/sys/dev/drm/radeon/radeon_atombios.c
+++ b/sys/dev/drm/radeon/radeon_atombios.c
@@ -173,6 +173,11 @@ void radeon_atombios_i2c_init(struct radeon_device *rdev)
 		num_indices = (size - sizeof(ATOM_COMMON_TABLE_HEADER)) /
 			sizeof(ATOM_GPIO_I2C_ASSIGMENT);
 
+		if (num_indices > RADEON_MAX_I2C_BUS) {
+			DRM_ERROR("ATOM GPIO I2C table has too many entries (%d)\n",
+				  num_indices);
+			num_indices = RADEON_MAX_I2C_BUS;
+		}
 		gpio = &i2c_info->asGPIO_Info[0];
 		for (i = 0; i < num_indices; i++) {
 			radeon_lookup_i2c_gpio_quirks(rdev, gpio, i);