Received: by 10.223.185.116 with SMTP id b49csp5778238wrg; Wed, 7 Mar 2018 18:29:25 -0800 (PST) X-Google-Smtp-Source: AG47ELsP8IxidwzMHdGI1EgAZiA2H+Pe0ZArwlz+bngEeUUpJUYN4ljGZwRwXy/EoFzA2JOokq/k X-Received: by 2002:a17:902:9a08:: with SMTP id v8-v6mr14904295plp.252.1520476165356; Wed, 07 Mar 2018 18:29:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1520476165; cv=none; d=google.com; s=arc-20160816; b=Xu/oPKg90TbvtXVVjwqwP+CkFxGGNL7CzHJr+nP6+nf8qWdOnXLZaUaV/+ggN1KXTP URYhzJNPI9JpnZ9bqKvkDOycAG2kB6yEBOYsAsxdZXmpZU7T5VoB+2ocAUsDhN1h6r4S fUig6X83mrZu7JAOUcEijwDNtiwGrjx/Oz06ci6rS9GfwEsWDTDYyaG1/q+z3+xbzln5 R/+rbbNDT6MtdM+C1b16upg42Jq61ayRlSl2s4nmskJSMX7FORGUk96GBHQk5mI6YB8V KkdBBkmsT3dpQxGMiJeqQSOkn/ZNaTFJzz1I7OBfsxCg6HRHE4B4ldoLyha3RLtCWSnf J95Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:content-disposition :mime-version:message-id:subject:cc:to:from:date :arc-authentication-results; bh=47rgE5pPLQLPSXAG526REAtzyqQG6OhFWYwOBh5stog=; b=RbBosBHESHempnk0sO28d/UY5dxx572ra3xv0W9k55zvzZNYeuO8a/okxHWivdXbCc Q/9cDsMhUtJW0OuwOzfpGslrDDwIf5xY4/3CwIVQnsRZvfNzLcPxLevEHyr5XdSKdTVn iW7LYgb/iU61A9JDLMj/Z6QY+nZvVhqxUkzv382RVmybUWHbw34UR72h6bg9Ek/ECl44 Tevuh3cHSDpgGe8qwBM4Pjv7uf7e7+x+sgk1HibUpq8AQbG+7Al7dUStlTFa7VkPRg/z GqiREGqY8bhMchertUYzwNunwiAPC3I0sL/7Mv8ae+l4yr6zz8rjBhK00vYx5jMfJayl pZ8A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z13si11994469pgu.804.2018.03.07.18.29.10; Wed, 07 Mar 2018 18:29:25 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934703AbeCHC2A (ORCPT + 99 others); Wed, 7 Mar 2018 21:28:00 -0500 Received: from gateway36.websitewelcome.com ([192.185.193.119]:35521 "EHLO gateway36.websitewelcome.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933351AbeCHC17 (ORCPT ); Wed, 7 Mar 2018 21:27:59 -0500 Received: from cm12.websitewelcome.com (cm12.websitewelcome.com [100.42.49.8]) by gateway36.websitewelcome.com (Postfix) with ESMTP id D3DE0400EFDD8 for ; Wed, 7 Mar 2018 20:27:58 -0600 (CST) Received: from gator4166.hostgator.com ([108.167.133.22]) by cmsmtp with SMTP id tlHieUbDm7OvotlHiesZ97; Wed, 07 Mar 2018 20:27:58 -0600 Received: from [189.175.117.58] (port=39554 helo=embeddedor) by gator4166.hostgator.com with esmtpa (Exim 4.89_1) (envelope-from ) id 1etlHi-004KGo-DL; Wed, 07 Mar 2018 20:27:58 -0600 Date: Wed, 7 Mar 2018 20:27:56 -0600 From: "Gustavo A. R. Silva" To: Alessandro Zummo , Alexandre Belloni Cc: linux-rtc@vger.kernel.org, linux-kernel@vger.kernel.org, "Gustavo A. R. Silva" Subject: [PATCH v2] rtc: remove VLA usage Message-ID: <20180308022756.GA28733@embeddedor.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.24 (2015-08-30) X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - gator4166.hostgator.com X-AntiAbuse: Original Domain - vger.kernel.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - embeddedor.com X-BWhitelist: no X-Source-IP: 189.175.117.58 X-Source-L: No X-Exim-ID: 1etlHi-004KGo-DL X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: (embeddedor) [189.175.117.58]:39554 X-Source-Auth: garsilva@embeddedor.com X-Email-Count: 4 X-Source-Cap: Z3V6aWRpbmU7Z3V6aWRpbmU7Z2F0b3I0MTY2Lmhvc3RnYXRvci5jb20= X-Local-Domain: yes Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In preparation to enabling -Wvla, remove VLA and replace it with a fixed-length array instead. From a security viewpoint, the use of Variable Length Arrays can be a vector for stack overflow attacks. Also, in general, as the code evolves it is easy to lose track of how big a VLA can get. Thus, we can end up having segfaults that are hard to debug. Also, fixed as part of the directive to remove all VLAs from the kernel: https://lkml.org/lkml/2018/3/7/621 Signed-off-by: Gustavo A. R. Silva --- Changes in v2: - Update changelog as per Alexandre Belloni request. - Update the code for rtc-bq32k driver based on Alexandre's feedback. drivers/rtc/rtc-bq32k.c | 6 +++++- drivers/rtc/rtc-mcp795.c | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/rtc/rtc-bq32k.c b/drivers/rtc/rtc-bq32k.c index e8698e9..ef52741 100644 --- a/drivers/rtc/rtc-bq32k.c +++ b/drivers/rtc/rtc-bq32k.c @@ -36,6 +36,10 @@ #define BQ32K_CFG2 0x09 /* Trickle charger control */ #define BQ32K_TCFE BIT(6) /* Trickle charge FET bypass */ +#define MAX_LEN 10 /* Maximum number of consecutive + * register for this particular RTC. + */ + struct bq32k_regs { uint8_t seconds; uint8_t minutes; @@ -74,7 +78,7 @@ static int bq32k_read(struct device *dev, void *data, uint8_t off, uint8_t len) static int bq32k_write(struct device *dev, void *data, uint8_t off, uint8_t len) { struct i2c_client *client = to_i2c_client(dev); - uint8_t buffer[len + 1]; + uint8_t buffer[MAX_LEN + 1]; buffer[0] = off; memcpy(&buffer[1], data, len); diff --git a/drivers/rtc/rtc-mcp795.c b/drivers/rtc/rtc-mcp795.c index 79e24ea..00e11c1 100644 --- a/drivers/rtc/rtc-mcp795.c +++ b/drivers/rtc/rtc-mcp795.c @@ -82,7 +82,7 @@ static int mcp795_rtcc_write(struct device *dev, u8 addr, u8 *data, u8 count) { struct spi_device *spi = to_spi_device(dev); int ret; - u8 tx[2 + count]; + u8 tx[257]; tx[0] = MCP795_WRITE; tx[1] = addr; -- 2.7.4