⬢ DragonFlyBSD Kernel Audit
DF-4912 / fix.diff
← back to finding ↓ download raw
--- a/sys/dev/drm/amd/display/modules/stats/stats.c
+++ b/sys/dev/drm/amd/display/modules/stats/stats.c
@@ -313,9 +313,12 @@
 	events = core_stats->events;
 	index = core_stats->event_index;
 
+	if (length == 0)
+		return;
+
 	copy_length = length;
-	if (length > MOD_STATS_EVENT_STRING_MAX)
-		copy_length = MOD_STATS_EVENT_STRING_MAX;
+	if (copy_length >= MOD_STATS_EVENT_STRING_MAX)
+		copy_length = MOD_STATS_EVENT_STRING_MAX - 1;
 
 	memcpy(&events[index].event_string, event_string, copy_length);
 	events[index].event_string[copy_length - 1] = '\0';