From patchwork Mon Apr 10 15:33:37 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Olliver Schinagl X-Patchwork-Id: 749084 X-Patchwork-Delegate: joe.hershberger@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3w1vRC4jf3z9s81 for ; Tue, 11 Apr 2017 01:36:07 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=schinagl.nl header.i=@schinagl.nl header.b="Mf0r4thI"; dkim-atps=neutral Received: by lists.denx.de (Postfix, from userid 105) id 46A97C21C8B; Mon, 10 Apr 2017 15:35:29 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=KHOP_BIG_TO_CC, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 2FDF0C21C75; Mon, 10 Apr 2017 15:34:46 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id E4B58C21C26; Mon, 10 Apr 2017 15:34:09 +0000 (UTC) Received: from 7of9.schinagl.nl (7of9.schinagl.nl [62.251.20.244]) by lists.denx.de (Postfix) with ESMTPS id 86879C21C2B for ; Mon, 10 Apr 2017 15:34:09 +0000 (UTC) Received: from um-mbp-306.cloud.ultimaker.com (static-98-101-100-159.thenetworkfactory.nl [159.100.101.98]) by 7of9.schinagl.nl (Postfix) with ESMTPA id D3467AC887; Mon, 10 Apr 2017 17:34:07 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=schinagl.nl; s=7of9; t=1491838448; bh=DZwqu9F0aRqkiV0VLmnKwyx9sqvSfqm8eTCoa73xQnw=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=Mf0r4thIsw4+DC8QFWr+gEg9mw+yPda3KlolWV3toj6ROVL+h2RygC42LWDdCIV+Q dFTseUsgQaxb98BN/km0qoPgiOrd8J925rrvnUdcdIV5uH4Njm4mNRai8fetDYxO0W 2Gk5WkKmYfF7l7jSend4wTaiiIIRoSOaqVKH+qJU= From: Olliver Schinagl To: Jagan Teki , Maxime Ripard , Simon Glass , Joe Hershberger Date: Mon, 10 Apr 2017 17:33:37 +0200 Message-Id: <20170410153356.2664-3-oliver@schinagl.nl> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170410153356.2664-1-oliver@schinagl.nl> References: <20170410153356.2664-1-oliver@schinagl.nl> X-Mailman-Approved-At: Mon, 10 Apr 2017 15:34:41 +0000 Cc: Mugunthan V N , Marcus Cooper , Philipp Tomsich , Stefan Roese , u-boot@lists.denx.de, Aleksei Mamlin , Ian Campbell , Bernhard Nortmann , dev@linux-sunxi.org, Andre Przywara , Phil Han , Hans de Goede , Zoltan Herpai , Olliver Schinagl , Jelle de Jong Subject: [U-Boot] [PATCHv2 02/21] net: core: Sanitize get/set operations for enetaddr X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" In the current net stack, we have a few functions to get and set the "ethaddr" and "ethNaddr" environment variables, which use magic values to get and set these environment variables. Remove the magicness of the buffer by defining it proper and also check the input for its length. Additionally use the define in fdt parser where the ethaddr variables are also used. Signed-off-by: Olliver Schinagl Reviewed-by: Simon Glass --- common/fdt_support.c | 2 +- include/net.h | 1 + net/eth_common.c | 14 +++++++++----- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/common/fdt_support.c b/common/fdt_support.c index c6a76b7ad2..d462bf0642 100644 --- a/common/fdt_support.c +++ b/common/fdt_support.c @@ -471,7 +471,7 @@ void fdt_fixup_ethernet(void *fdt) { int i, j, prop; char *tmp, *end; - char mac[16]; + char mac[ETH_ENETADDR_ENV_NAME_LEN]; const char *path; unsigned char mac_addr[ARP_HLEN]; int offset; diff --git a/include/net.h b/include/net.h index ed5259a807..b4af8eaae4 100644 --- a/include/net.h +++ b/include/net.h @@ -243,6 +243,7 @@ void eth_set_current(void); /* set nterface to ethcur var */ int eth_get_dev_index(void); /* get the device index */ void eth_parse_enetaddr(const char *addr, uchar *enetaddr); +#define ETH_ENETADDR_ENV_NAME_LEN 32 int eth_getenv_enetaddr(const char *name, uchar *enetaddr); int eth_setenv_enetaddr(const char *name, const uchar *enetaddr); diff --git a/net/eth_common.c b/net/eth_common.c index 049c1ee6f9..0fe4d260d8 100644 --- a/net/eth_common.c +++ b/net/eth_common.c @@ -45,16 +45,20 @@ int eth_setenv_enetaddr(const char *name, const uchar *enetaddr) int eth_getenv_enetaddr_by_index(const char *base_name, int index, uchar *enetaddr) { - char enetvar[32]; - sprintf(enetvar, index ? "%s%daddr" : "%saddr", base_name, index); + char enetvar[ETH_ENETADDR_ENV_NAME_LEN]; + + snprintf(enetvar, ETH_ENETADDR_ENV_NAME_LEN, + index ? "%s%daddr" : "%saddr", base_name, index); return eth_getenv_enetaddr(enetvar, enetaddr); } int eth_setenv_enetaddr_by_index(const char *base_name, int index, uchar *enetaddr) { - char enetvar[32]; - sprintf(enetvar, index ? "%s%daddr" : "%saddr", base_name, index); + char enetvar[ETH_ENETADDR_ENV_NAME_LEN]; + + snprintf(enetvar, ETH_ENETADDR_ENV_NAME_LEN, + index ? "%s%daddr" : "%saddr", base_name, index); return eth_setenv_enetaddr(enetvar, enetaddr); } @@ -72,7 +76,7 @@ void eth_common_init(void) int eth_mac_skip(int index) { - char enetvar[15]; + char enetvar[ETH_ENETADDR_ENV_NAME_LEN]; char *skip_state; sprintf(enetvar, index ? "eth%dmacskip" : "ethmacskip", index);