mac80211: aes_cmac: check crypto_shash_setkey() return value
authorJohannes Berg <johannes.berg@intel.com>
Fri, 9 Apr 2021 09:40:28 +0000 (12:40 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 19 Apr 2021 10:01:40 +0000 (12:01 +0200)
As crypto_shash_setkey() can fail, we should check the return value.

Addresses-Coverity-ID: 1401813 ("Unchecked return value")
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Link: https://lore.kernel.org/r/iwlwifi.20210409123755.533ff7acf1d2.I034bafa201c4a6823333f8410aeaa60cca5ee9e0@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/aes_cmac.c

index b31f1021ad9c47c70d3db43086d6a394b29a7ac5..48c04f89de20af1b29572b4a712d04cca9c2e8f9 100644 (file)
@@ -2,6 +2,7 @@
 /*
  * AES-128-CMAC with TLen 16 for IEEE 802.11w BIP
  * Copyright 2008, Jouni Malinen <j@w1.fi>
+ * Copyright (C) 2020 Intel Corporation
  */
 
 #include <linux/kernel.h>
@@ -73,8 +74,14 @@ struct crypto_shash *ieee80211_aes_cmac_key_setup(const u8 key[],
        struct crypto_shash *tfm;
 
        tfm = crypto_alloc_shash("cmac(aes)", 0, 0);
-       if (!IS_ERR(tfm))
-               crypto_shash_setkey(tfm, key, key_len);
+       if (!IS_ERR(tfm)) {
+               int err = crypto_shash_setkey(tfm, key, key_len);
+
+               if (err) {
+                       crypto_free_shash(tfm);
+                       return ERR_PTR(err);
+               }
+       }
 
        return tfm;
 }