Przeglądaj źródła

qcacmn: Fetch thermal_stats in array range

Since lvl_idx maybe get value large than
param_buf->num_temp_range_stats, then out
of bounds will happen when read array of
wmi_tt_stats.

Change-Id: I85b29216272952102dca41792c290baf285a8e31
CRs-Fixed: 3136333
chunquan 3 lat temu
rodzic
commit
3407f05fb7
1 zmienionych plików z 7 dodań i 0 usunięć
  1. 7 0
      wmi/src/wmi_unified_tlv.c

+ 7 - 0
wmi/src/wmi_unified_tlv.c

@@ -12926,6 +12926,13 @@ populate_thermal_stats(WMI_THERM_THROT_STATS_EVENTID_param_tlvs *param_buf,
 			       WMI_THERMAL_STATS_TEMP_THRESH_LEVEL_MAX :
 			       tt_stats_event->therm_throt_levels;
 
+	if (*therm_throt_levels > param_buf->num_temp_range_stats) {
+		wmi_err("therm_throt_levels:%u oob num_temp_range_stats:%u",
+			*therm_throt_levels,
+			param_buf->num_temp_range_stats);
+		return;
+	}
+
 	wmi_tt_stats = param_buf->temp_range_stats;
 	if (!wmi_tt_stats) {
 		wmi_err("wmi_tt_stats Null");