iwlwifi: mvm: rs: fix a potential out of bounds access
authorEyal Shapira <eyal@wizery.com>
Thu, 19 Nov 2015 16:37:31 +0000 (18:37 +0200)
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Sun, 13 Dec 2015 06:22:31 +0000 (08:22 +0200)
Klocwork pointed these out. There is a theoretical possibility
that rate->index might be set to IWL_RATE_INVALID (15).
This could trigger an out of bounds access on ht_vht_rates or
legacy_rates arrays. Fix it by adding some checks.

Signed-off-by: Eyal Shapira <eyalx.shapira@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/rs.c

index feb775a8223a8a51f97936e85b212d0ff5a2cfed..31b082edd29e37defeb336df54d08bf9be64b343 100644 (file)
@@ -552,9 +552,10 @@ static char *rs_pretty_rate(const struct rs_rate *rate)
        };
        const char *rate_str;
 
-       if (is_type_legacy(rate->type))
+       if (is_type_legacy(rate->type) && (rate->index <= IWL_RATE_54M_INDEX))
                rate_str = legacy_rates[rate->index];
-       else if (is_type_ht(rate->type) || is_type_vht(rate->type))
+       else if ((is_type_ht(rate->type) || is_type_vht(rate->type)) &&
+                (rate->index <= IWL_RATE_MCS_9_INDEX))
                rate_str = ht_vht_rates[rate->index];
        else
                rate_str = "BAD_RATE";