From patchwork Sat Sep 3 12:21:09 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 1673840 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.a=rsa-sha256 header.s=badeba3b8450 header.b=LQmzXO3x; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4MKYmh1VlTz1yhK for ; Sat, 3 Sep 2022 22:21:38 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 1370884382; Sat, 3 Sep 2022 14:21:25 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=gmx.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.b="LQmzXO3x"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id B0303845E7; Sat, 3 Sep 2022 14:21:22 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FREEMAIL_FROM,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 334D6841D7 for ; Sat, 3 Sep 2022 14:21:20 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmx.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=xypron.glpk@gmx.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1662207675; bh=6BV6hoIOB2FRd+c3GwLS3ReyvmzURclM+QW0pvJiZTo=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date; b=LQmzXO3x+uKrQceKWQSvMSUebLIzOo+YslLcV/1KfG7AP+zNkQvTe5wmXCiCEgsGs 3POkooom7eYKU+R06WwdmVYREyGJsIxMB+GobtptvFwEkBRgyOWK/q+fHN6uzbCCrq DPpa9dgzYwskWMI7pk9ksaoRO0HPpNusaFVsFFoI= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from rpi3.fritz.box ([84.118.157.2]) by mail.gmx.net (mrgmx104 [212.227.17.174]) with ESMTPSA (Nemesis) id 1MFsYx-1obNki1ae7-00HREl; Sat, 03 Sep 2022 14:21:15 +0200 From: Heinrich Schuchardt To: Joe Hershberger , Ramon Fried Cc: Simon Glass , u-boot@lists.denx.de, Heinrich Schuchardt Subject: [PATCH 1/1] cmd: fix tftpput command Date: Sat, 3 Sep 2022 12:21:09 +0000 Message-Id: <20220903122109.6076-1-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 X-Provags-ID: V03:K1:A/SFJFwWkoL31kneSi+I3wrWyAfLg489bOH/AgX+qbxZuQaKxvv oCtyLd3zoNTWy9IUfdwFBiRZ//zi6CuulPKzlz0KsaJU6AXHEpkJ4mQ3nw0b1cd+Plpv+b3 HVJTTde1hYT5AgNWr0dBUwJiujAK5WplRVgAfheqet7esaeElpMKSBVVen35ytF5pLfgovH ksWJqxVuhqRTJknmB/CjQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:kdYn/d6aIhI=:8/7NpKHuYiM3iED157CzgL I2SvKxZsoAU+KwDxGAcNl8qnSzsJ3lGhUiwOVKJ+fNdCXO4poWpYPA98wFc9Xp9teWC3T7CZf bTXBWlpjfXF8lEGxvVc7E9EeyuhICZB9RU9w75MbS75+LPMDvmoCbrTCw8uMbQu80Iidc1xRV WElbt2lkRqYkyJd92xxLUB20xQDIO68Pxn4qYEvNbGG6kwzTe6SMAbWpdh2Bs5MaQ4OLMGoF3 aDZ2+7cYGHW4i80K+uvC0r1yI1Zp5sB+rIzhSPNP4WbqGpTgxCpYAs74ClS+WD4UcqMTPtOMi 45/6a2tncwE7Rz0S1ndl4FOne6RXzSYu5m6AcpgFF4BnC2qE3njWrb515Xmt5w23Naf9yy3Q8 Vq/5K90r7p7Ev9Sx1ruT1e16TLFMUskZ7J1u0pKBcud8y4KhRqvUZaR6jymCQyJbvknOhMpve r58nB+LDubogRAqPMwKjGyVoRpzBjlqhpobZV4xHGoqV+d81Xd/ojPRRXzw6gcLurg3KntyPV FBOrmrhOsK9yROghGaTJ3g38OI2BHNkKodc7v6T9LgVF/DUU+g3mpnEmljnx8U/sFVUlxVt8T +AvJQsIMKzujNdzLKZF3zxgUxWnyQbqsdHD1Tb5vPr6Oq1BgoZy5/q7sj/heKwPbadq7sF73R PH17pMbxULikH+sv3oGSzdVUvuTadsVcT1V+Qi8EjuIZB5MyZsD9NkGl2tu9fM0LPxjUjXgMO d1FG954QiK3eUsFwrNXFlHMhqSk73wS2/pH9dU6ZakTTylDGLmQDA/ApnMIPeLs6R9o/5XVbu j3Ca6k3EzJbOSG/0Z8Qw8dEjmtV2Bu/5SzpNmo0+2VaPtIXbbpQZlqqeUFD2nVrgbxHrOSDQM PLrQZ9LUpf4e5kxvshELkV9Q9Q6Yy25Bz9ObQaFwmIfOFI8hKqjdq4XV6aUOXUDjHa4rmikQN KuUYIzfUjix/NNpvf7MQDc8usZHfRIUIRl1zB+WQOZp7d4qx8/Z4zZht5vOx+Aoanm9mLhtp1 hQpEXHnpIDa5N/Qe3ekN8p6ndokr070sXM+D4iQZoAYWGU69I/Lap6bcXZ7PerpJE19UL2oDa utiRT2meyQ2bfDZ0QzSPDHmrBWBdNiyrJSmyKznwNFyAscJWoWXqvWEWgFZupEwwWqukWTWGJ vGw+55PSqtyfOP4isgRRQpUAJ3 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.6 at phobos.denx.de X-Virus-Status: Clean Calling tftpput with less than 2 arguments must lead to a failure. If tftpput is called with two arguments, these are the address and the size of the file to be transferred. Signed-off-by: Heinrich Schuchardt Reviewed-by: Simon Glass --- cmd/net.c | 50 +++++++++++++++++++++++++++++++++++++------------- 1 file changed, 37 insertions(+), 13 deletions(-) -- 2.30.2 diff --git a/cmd/net.c b/cmd/net.c index 3619c843d8..e1be7b431a 100644 --- a/cmd/net.c +++ b/cmd/net.c @@ -189,6 +189,19 @@ static void netboot_update_env(void) #endif } +/** + * parse_addr_size() - parse address and size arguments + */ +static int parse_addr_size(char * const argv[]) +{ + if (strict_strtoul(argv[1], 16, &image_save_addr) < 0 || + strict_strtoul(argv[2], 16, &image_save_size) < 0) { + printf("Invalid address/size\n"); + return CMD_RET_USAGE; + } + return 0; +} + static int netboot_common(enum proto_t proto, struct cmd_tbl *cmdtp, int argc, char *const argv[]) { @@ -199,6 +212,7 @@ static int netboot_common(enum proto_t proto, struct cmd_tbl *cmdtp, int argc, ulong addr; net_boot_file_name_explicit = false; + *net_boot_file_name = '\0'; /* pre-set image_load_addr */ s = env_get("loadaddr"); @@ -207,12 +221,18 @@ static int netboot_common(enum proto_t proto, struct cmd_tbl *cmdtp, int argc, switch (argc) { case 1: + if (CONFIG_IS_ENABLED(CMD_TFTPPUT) && proto == TFTPPUT) + goto err_usage; + /* refresh bootfile name from env */ copy_filename(net_boot_file_name, env_get("bootfile"), sizeof(net_boot_file_name)); break; - case 2: /* + case 2: + if (CONFIG_IS_ENABLED(CMD_TFTPPUT) && proto == TFTPPUT) + goto err_usage; + /* * Only one arg - accept two forms: * Just load address, or just boot file name. The latter * form must be written in a format which can not be @@ -232,28 +252,28 @@ static int netboot_common(enum proto_t proto, struct cmd_tbl *cmdtp, int argc, break; case 3: - image_load_addr = hextoul(argv[1], NULL); - net_boot_file_name_explicit = true; - copy_filename(net_boot_file_name, argv[2], - sizeof(net_boot_file_name)); - + if (CONFIG_IS_ENABLED(CMD_TFTPPUT) && proto == TFTPPUT) { + if (parse_addr_size(argv)) + goto err_usage; + } else { + image_load_addr = hextoul(argv[1], NULL); + net_boot_file_name_explicit = true; + copy_filename(net_boot_file_name, argv[2], + sizeof(net_boot_file_name)); + } break; #ifdef CONFIG_CMD_TFTPPUT case 4: - if (strict_strtoul(argv[1], 16, &image_save_addr) < 0 || - strict_strtoul(argv[2], 16, &image_save_size) < 0) { - printf("Invalid address/size\n"); - return CMD_RET_USAGE; - } + if (parse_addr_size(argv)) + goto err_usage; net_boot_file_name_explicit = true; copy_filename(net_boot_file_name, argv[3], sizeof(net_boot_file_name)); break; #endif default: - bootstage_error(BOOTSTAGE_ID_NET_START); - return CMD_RET_USAGE; + goto err_usage; } bootstage_mark(BOOTSTAGE_ID_NET_START); @@ -282,6 +302,10 @@ static int netboot_common(enum proto_t proto, struct cmd_tbl *cmdtp, int argc, else bootstage_error(BOOTSTAGE_ID_NET_DONE_ERR); return rcode; + +err_usage: + bootstage_error(BOOTSTAGE_ID_NET_START); + return CMD_RET_USAGE; } #if defined(CONFIG_CMD_PING)