⬢ DragonFlyBSD Kernel Audit
DF-4814 / fix.diff
← back to finding ↓ download raw
--- a/sys/dev/drm/i915/intel_csr.c
+++ b/sys/dev/drm/i915/intel_csr.c
@@ -349,6 +349,12 @@
 	}
 	readcount += sizeof(struct intel_package_header);
 
+	if (package_header->num_entries > ARRAY_SIZE(package_header->fw_info)) {
+		DRM_ERROR("DMC firmware has too many package entries %u\n",
+			  package_header->num_entries);
+		return NULL;
+	}
+
 	/* Search for dmc_offset to find firware binary. */
 	for (i = 0; i < package_header->num_entries; i++) {
 		if (package_header->fw_info[i].substepping == '*' &&