Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp3698690pxk; Tue, 29 Sep 2020 04:08:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxU6I9zS9iBY7kndWxAH46u8R2rPMMNgSUTy7cVtsefFsa1stWvc7nJiTLqMAwg+mrhclbU X-Received: by 2002:a17:906:9416:: with SMTP id q22mr3214451ejx.82.1601377699226; Tue, 29 Sep 2020 04:08:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1601377699; cv=none; d=google.com; s=arc-20160816; b=kNXxr2XBoP5irqoi0JbB/wXYKR6ocF/DLvvdFolIu/wSJbnWamr2Ut2w9FjqPuC1Mu j2oya5jjpA6kGgTD9U8zUSyED3/r5HUHsxcV53FxUhGJVL089DGx/wvG+/3Wt/NMxGKT oC672Eobe53lRCocAm75BO7FHk8bKygs1XpRVFRXZhzIdTROabGAqomuswE8nEvaBttq QOhTwl1awlQHh+IvGq4NDK91iY8IC++wC5so71gbpfHW8jRDRwju5hWFbYcsaXpFdIHw 0QMDUZA8Z0ZufAvmMo9u7gdw4uEr2HONkYTx+FaDiqA0npnPxI7Z/uhkQ4dm1/IWTMsy L6pQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=W4ehdSbY9xjEi547Ai5d+lg7PaotRm4+YDBKsBXynm0=; b=bqH2Kxm9s9gdTURM6ymHEVOgPmV3BLhMKlZsmm7uIiuKulhDkb9abK34xYWLWMqleH LnqzLP3JAjuOpJQkn2PysaRaNVzgR2bLmY4/Jv1/CfL7mLMv61jtnvUFxiniWOudkkHo C6iMOucfb48lA3YeMOEk8c2PrQN8FeYmp3/s8RZjETg6HnYkc9CINIVQJ2LJGEk4AuQD 8BOq8T02AdZCd9TpMTgGO1fvmCJMWPzX1jRgbQ3csGxNAo529YAwX+WaR8eo3kSdl03K EE7ZsUiTkatQMHWhUB5/g3xIeDsntomaWNvtHf7d5cIyhalAKvV6MLeHgA9fHrWC09Wi N/CQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=sLJ3JhU5; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w1si2490336ejy.686.2020.09.29.04.07.56; Tue, 29 Sep 2020 04:08:19 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=sLJ3JhU5; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728795AbgI2LFw (ORCPT + 99 others); Tue, 29 Sep 2020 07:05:52 -0400 Received: from mail.kernel.org ([198.145.29.99]:42272 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728363AbgI2LFq (ORCPT ); Tue, 29 Sep 2020 07:05:46 -0400 Received: from localhost (83-86-74-64.cable.dynamic.v4.ziggo.nl [83.86.74.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 0706E21941; Tue, 29 Sep 2020 11:05:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1601377545; bh=kv8ICS5B+OrzRa84jH9IA3fi/KLgGNKUGYNXpzzTRIs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=sLJ3JhU5sPhb5c9JSr4/l7vTaGPKkVRiVINKxqktC3MkX6wMJhBEMb0B9uw8jqtAT 6vzfVov3HDM0kOYRPrjRQYPa+UlFKnwAw9c2ot6mtL9ctPdffcEkizxvNImmUkmwrD DqYlsZh2Y/aAaqQP6Y69nlHKNoIMtGHljlAFILds= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Maximilian Luz , Kaloyan Nikolov , Dan Carpenter , Brian Norris , Kalle Valo , Sasha Levin Subject: [PATCH 4.4 74/85] mwifiex: Increase AES key storage size to 256 bits Date: Tue, 29 Sep 2020 13:00:41 +0200 Message-Id: <20200929105931.904531888@linuxfoundation.org> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200929105928.198942536@linuxfoundation.org> References: <20200929105928.198942536@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Maximilian Luz [ Upstream commit 4afc850e2e9e781976fb2c7852ce7bac374af938 ] Following commit e18696786548 ("mwifiex: Prevent memory corruption handling keys") the mwifiex driver fails to authenticate with certain networks, specifically networks with 256 bit keys, and repeatedly asks for the password. The kernel log repeats the following lines (id and bssid redacted): mwifiex_pcie 0000:01:00.0: info: trying to associate to '' bssid mwifiex_pcie 0000:01:00.0: info: associated to bssid successfully mwifiex_pcie 0000:01:00.0: crypto keys added mwifiex_pcie 0000:01:00.0: info: successfully disconnected from : reason code 3 Tracking down this problem lead to the overflow check introduced by the aforementioned commit into mwifiex_ret_802_11_key_material_v2(). This check fails on networks with 256 bit keys due to the current storage size for AES keys in struct mwifiex_aes_param being only 128 bit. To fix this issue, increase the storage size for AES keys to 256 bit. Fixes: e18696786548 ("mwifiex: Prevent memory corruption handling keys") Signed-off-by: Maximilian Luz Reported-by: Kaloyan Nikolov Tested-by: Kaloyan Nikolov Reviewed-by: Dan Carpenter Reviewed-by: Brian Norris Tested-by: Brian Norris Signed-off-by: Kalle Valo Link: https://lore.kernel.org/r/20200825153829.38043-1-luzmaximilian@gmail.com Signed-off-by: Sasha Levin --- drivers/net/wireless/mwifiex/fw.h | 2 +- drivers/net/wireless/mwifiex/sta_cmdresp.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/net/wireless/mwifiex/fw.h b/drivers/net/wireless/mwifiex/fw.h index 9a5eb9ed89215..233af2292366d 100644 --- a/drivers/net/wireless/mwifiex/fw.h +++ b/drivers/net/wireless/mwifiex/fw.h @@ -848,7 +848,7 @@ struct mwifiex_tkip_param { struct mwifiex_aes_param { u8 pn[WPA_PN_SIZE]; __le16 key_len; - u8 key[WLAN_KEY_LEN_CCMP]; + u8 key[WLAN_KEY_LEN_CCMP_256]; } __packed; struct mwifiex_wapi_param { diff --git a/drivers/net/wireless/mwifiex/sta_cmdresp.c b/drivers/net/wireless/mwifiex/sta_cmdresp.c index 9e3853c8a22da..32b0b06b74f1d 100644 --- a/drivers/net/wireless/mwifiex/sta_cmdresp.c +++ b/drivers/net/wireless/mwifiex/sta_cmdresp.c @@ -631,7 +631,7 @@ static int mwifiex_ret_802_11_key_material_v2(struct mwifiex_private *priv, key_v2 = &resp->params.key_material_v2; len = le16_to_cpu(key_v2->key_param_set.key_params.aes.key_len); - if (len > WLAN_KEY_LEN_CCMP) + if (len > sizeof(key_v2->key_param_set.key_params.aes.key)) return -EINVAL; if (le16_to_cpu(key_v2->action) == HostCmd_ACT_GEN_SET) { @@ -647,7 +647,7 @@ static int mwifiex_ret_802_11_key_material_v2(struct mwifiex_private *priv, return 0; memset(priv->aes_key_v2.key_param_set.key_params.aes.key, 0, - WLAN_KEY_LEN_CCMP); + sizeof(key_v2->key_param_set.key_params.aes.key)); priv->aes_key_v2.key_param_set.key_params.aes.key_len = cpu_to_le16(len); memcpy(priv->aes_key_v2.key_param_set.key_params.aes.key, -- 2.25.1