diff --git a/umac/cmn_services/crypto/src/wlan_crypto_global_api.c b/umac/cmn_services/crypto/src/wlan_crypto_global_api.c index 4551cdbbd33e..b0bcd261f3d3 100644 --- a/umac/cmn_services/crypto/src/wlan_crypto_global_api.c +++ b/umac/cmn_services/crypto/src/wlan_crypto_global_api.c @@ -447,7 +447,7 @@ QDF_STATUS wlan_crypto_setkey(struct wlan_objmgr_vdev *vdev, if (IS_MGMT_CIPHER(req_key->type)) { igtk_idx = req_key->keyix - WLAN_CRYPTO_MAXKEYIDX; - if (igtk_idx > WLAN_CRYPTO_MAXIGTKKEYIDX) { + if (igtk_idx >= WLAN_CRYPTO_MAXIGTKKEYIDX) { qdf_print("%s[%d] igtk key invalid keyid %d \n", __func__, __LINE__, igtk_idx); return QDF_STATUS_E_INVAL; @@ -777,7 +777,7 @@ QDF_STATUS wlan_crypto_delkey(struct wlan_objmgr_vdev *vdev, uint8_t bssid_mac[WLAN_ALEN]; if (!vdev || !macaddr || - (key_idx > + (key_idx >= (WLAN_CRYPTO_MAXKEYIDX + WLAN_CRYPTO_MAXIGTKKEYIDX))) { QDF_TRACE(QDF_MODULE_ID_CRYPTO, QDF_TRACE_LEVEL_ERROR, "%s[%d] Invalid params vdev %pK, macaddr %pK" @@ -1402,7 +1402,7 @@ uint8_t *wlan_crypto_add_mmie(struct wlan_objmgr_vdev *vdev, return NULL; } - if (crypto_priv->def_igtk_tx_keyid > WLAN_CRYPTO_MAXIGTKKEYIDX) { + if (crypto_priv->def_igtk_tx_keyid >= WLAN_CRYPTO_MAXIGTKKEYIDX) { qdf_print("%s[%d] igtk key invalid keyid %d \n", __func__, __LINE__, crypto_priv->def_igtk_tx_keyid); return NULL; @@ -1558,7 +1558,7 @@ bool wlan_crypto_is_mmie_valid(struct wlan_objmgr_vdev *vdev, return false; } - if (mmie->key_id > (WLAN_CRYPTO_MAXKEYIDX + + if (mmie->key_id >= (WLAN_CRYPTO_MAXKEYIDX + WLAN_CRYPTO_MAXIGTKKEYIDX)) { qdf_print("%s[%d] keyid not valid\n", __func__, __LINE__); return false; @@ -2322,6 +2322,8 @@ bool wlan_crypto_rsn_info(struct wlan_objmgr_vdev *vdev, struct wlan_crypto_params *my_crypto_params; my_crypto_params = wlan_crypto_vdev_get_crypto_params(vdev); + if (!my_crypto_params) + return false; /* * Check peer's pairwise ciphers. * At least one must match with our unicast cipher