Received: by 2002:a05:6a10:9afc:0:0:0:0 with SMTP id t28csp2118443pxm; Thu, 24 Feb 2022 17:00:18 -0800 (PST) X-Google-Smtp-Source: ABdhPJxf2GcE7+jaydDpAZemqfZlMaPfowJKHlyO89myhVo4JpZH5RUCKrea+7EoL55dvjpQcnX0 X-Received: by 2002:a17:906:3a41:b0:6ce:374d:adfa with SMTP id a1-20020a1709063a4100b006ce374dadfamr4301462ejf.199.1645750818494; Thu, 24 Feb 2022 17:00:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645750818; cv=none; d=google.com; s=arc-20160816; b=0i1+rwL9oOVVfLBJ6zml1NJTwXjRXgJ97Y9+kANVy8XbBVhQ2AtZbMH4FX6MkCWjbJ Y9j0BFo4WjNpGfFB/+QG+01a7cI+TIcr15/kUcDrdg36RoI4f6Uy/KvFoLSKNj6aZhxj 8x0AiFHpTi2PQ0WuJbkE5jysEGpWNToYh82LKHvGXIxYiwZFCZsXlZbtXVZxdRZVSu/f Q6U0J69BEjoE9jV67MkSr3qdVLTsMEDugJdyW5XRVrz3soDVU5J4GkF1cY5WKAB+DqMK 069kgWqoApvfKYM0mTz4rqVLa4LUJJfjRd6o6EtAYqP4Xh1vZ3/j6UVOdfVY6W+57s9b GO5w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=qV7cBYb+lx8KFjvKbwkNfxMJJGD4Bddo38M3EKUri3U=; b=h6S4YeNgq7FA18Lhq6AQNTLyrpKGaFtEk3efa+W977MQZsCjzQbF/GgkgeSn74a5fW ygTLJTPA8dKbw77Cwk6ule5Jxb2qhMx+eGuVZbPMTd9U/k3eJMUabpXBZMazIPeX3sfv yR0ZieynfdSF5QPNRma/0LVF1Bhb9fxpnrB0WaLEieRVXHud+n8PMVOTcV006c8blMvQ 8QejhmsmHomzJd0C0954VkwUQ4atwttqFVUe+J9D2UhsD3Yl2ajSUHG7+1kqA7ENmchA Nu0B6TPn01suSfYQABBGIYGPkQZm3ifIUVVOqZwYt0Ab6HvMYPIchr227fq9Fl9UwRU6 pHFg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=j9KEW7lC; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id c22-20020aa7df16000000b0041128ea9625si839935edy.399.2022.02.24.16.59.59; Thu, 24 Feb 2022 17:00:18 -0800 (PST) Received-SPF: pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=j9KEW7lC; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234658AbiBXVKi (ORCPT + 73 others); Thu, 24 Feb 2022 16:10:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39016 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234634AbiBXVK3 (ORCPT ); Thu, 24 Feb 2022 16:10:29 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B53B428D396; Thu, 24 Feb 2022 13:09:55 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 74E9BB829B3; Thu, 24 Feb 2022 21:09:54 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5B672C340E9; Thu, 24 Feb 2022 21:09:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1645736993; bh=6IApdu4M+sjJDandvKx6K/9PvnrmBluI9K7FQQLLGW0=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=j9KEW7lCO//9VFNx8CNNClk840VX7fW2bvpH3lUk0LAKuLf5OID86bAkMP5HAD1at wVJbn5CRNz86xwmSIjEcFCGop1vz42TxX+0DbhvQkDGQ026GS4V9WCDvno61uWJFyi lMywvmQbxrnhMA7Uzqr4OiW0OE6SA4NRArb4v3ktFPE8/GD6MnKPSS/y4Sa+2pLFZx yYEAT2+r9F/FTLRyFKzmKBO2WlnEc7Dvv7uhypvH3S66DvD0WGfdvLvmjeJ+t9CA38 0mkgANMPlYEJr5paRSTbmb9tHUgUxFVazt50P8rq+nEc1RRyRuXXGeY9XLZ2P3mfME dBjl+xQLeaDFg== Date: Thu, 24 Feb 2022 15:17:51 -0600 From: "Gustavo A. R. Silva" To: linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, Jeff Johnson Cc: Kalle Valo , "David S. Miller" , Jakub Kicinski , netdev@vger.kernel.org, linux-hardening@vger.kernel.org, "Gustavo A. R. Silva" Subject: [PATCH v2 6/6][next] ath6kl: wmi: Replace one-element array with flexible-array member in struct wmi_aplist_event Message-ID: <1b7889828f23763c034c1558cbab9c8e2066053e.1645736204.git.gustavoars@kernel.org> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org Replace one-element array with flexible-array member in struct wmi_aplist_event. Also, make use of the struct_size() helper and remove unneeded variable ap_info_entry_size. This issue was found with the help of Coccinelle and audited and fixed, manually. Link: https://www.kernel.org/doc/html/v5.16/process/deprecated.html#zero-length-and-one-element-arrays Link: https://github.com/KSPP/linux/issues/79 Reviewed-by: Jeff Johnson Signed-off-by: Gustavo A. R. Silva --- Changes in v2: - Revert changes in if-statement logic: if (len < sizeof(struct wmi_aplist_event)) Link: https://lore.kernel.org/linux-hardening/3f408c80-cabf-5ba2-2014-2eb0550b73f9@quicinc.com/ - Update changelog text. - Add Reviewed-by: Jeff Johnson tag. drivers/net/wireless/ath/ath6kl/wmi.c | 5 +---- drivers/net/wireless/ath/ath6kl/wmi.h | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/drivers/net/wireless/ath/ath6kl/wmi.c b/drivers/net/wireless/ath/ath6kl/wmi.c index bdfc057c5a82..3787b9fb0075 100644 --- a/drivers/net/wireless/ath/ath6kl/wmi.c +++ b/drivers/net/wireless/ath/ath6kl/wmi.c @@ -1750,7 +1750,6 @@ static int ath6kl_wmi_snr_threshold_event_rx(struct wmi *wmi, u8 *datap, static int ath6kl_wmi_aplist_event_rx(struct wmi *wmi, u8 *datap, int len) { - u16 ap_info_entry_size; struct wmi_aplist_event *ev = (struct wmi_aplist_event *) datap; struct wmi_ap_info_v1 *ap_info_v1; u8 index; @@ -1759,14 +1758,12 @@ static int ath6kl_wmi_aplist_event_rx(struct wmi *wmi, u8 *datap, int len) ev->ap_list_ver != APLIST_VER1) return -EINVAL; - ap_info_entry_size = sizeof(struct wmi_ap_info_v1); ap_info_v1 = (struct wmi_ap_info_v1 *) ev->ap_list; ath6kl_dbg(ATH6KL_DBG_WMI, "number of APs in aplist event: %d\n", ev->num_ap); - if (len < (int) (sizeof(struct wmi_aplist_event) + - (ev->num_ap - 1) * ap_info_entry_size)) + if (len < struct_size(ev, ap_list, ev->num_ap)) return -EINVAL; /* AP list version 1 contents */ diff --git a/drivers/net/wireless/ath/ath6kl/wmi.h b/drivers/net/wireless/ath/ath6kl/wmi.h index 6a7fc07cd9aa..a9732660192a 100644 --- a/drivers/net/wireless/ath/ath6kl/wmi.h +++ b/drivers/net/wireless/ath/ath6kl/wmi.h @@ -1957,7 +1957,7 @@ union wmi_ap_info { struct wmi_aplist_event { u8 ap_list_ver; u8 num_ap; - union wmi_ap_info ap_list[1]; + union wmi_ap_info ap_list[]; } __packed; /* Developer Commands */ -- 2.27.0