From 399989900dd40273e9cfc694746db7d6f79a100d Mon Sep 17 00:00:00 2001 From: zxystd <1051244836@qq.com> Date: Sat, 24 Feb 2024 21:40:03 +0800 Subject: [PATCH] rs: add a few rate index validity checks. Validate index before access iwl_rate_mcs to keep rate->index inside the valid boundaries. Use MCS_0_INDEX if index is less than MCS_0_INDEX and MCS_9_INDEX if index is greater then MCS_9_INDEX. --- itlwm/hal_iwm/rs.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/itlwm/hal_iwm/rs.cpp b/itlwm/hal_iwm/rs.cpp index 8beec3bb..1ccb42f7 100644 --- a/itlwm/hal_iwm/rs.cpp +++ b/itlwm/hal_iwm/rs.cpp @@ -536,10 +536,10 @@ static char *rs_pretty_rate(const struct rs_rate *rate) (rate->index <= IWL_RATE_MCS_9_INDEX)) rate_str = ht_vht_rates[rate->index]; else - rate_str = "BAD_RATE"; + rate_str = NULL; snprintf(buf, sizeof(buf), "(%s|%s|%s)", rs_pretty_lq_type(rate->type), - rs_pretty_ant(rate->ant), rate_str); + rs_pretty_ant(rate->ant), rate_str ?: "BAD_RATE"); return buf; } @@ -1096,10 +1096,13 @@ static void rs_get_lower_rate_down_column(struct iwl_lq_sta *lq_sta, rate->bw = RATE_MCS_CHAN_WIDTH_20; - WARN_ON_ONCE(rate->index < IWL_RATE_MCS_0_INDEX || - rate->index > IWL_RATE_MCS_9_INDEX); + if (WARN_ON_ONCE(rate->index < IWL_RATE_MCS_0_INDEX)) + rate->index = rs_ht_to_legacy[IWL_RATE_MCS_0_INDEX]; + else if (WARN_ON_ONCE(rate->index > IWL_RATE_MCS_9_INDEX)) + rate->index = rs_ht_to_legacy[IWL_RATE_MCS_9_INDEX]; + else + rate->index = rs_ht_to_legacy[rate->index]; - rate->index = rs_ht_to_legacy[rate->index]; rate->ldpc = false; } else { /* Downgrade to SISO with same MCS if in MIMO */