From patchwork Thu Jun 15 08:26:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Philip Oberfichtner X-Patchwork-Id: 1795272 X-Patchwork-Delegate: sbabic@denx.de 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=googlegroups.com (client-ip=2607:f8b0:4864:20::838; helo=mail-qt1-x838.google.com; envelope-from=swupdate+bncbaabbcuxvosamgqebx4oliy@googlegroups.com; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=googlegroups.com header.i=@googlegroups.com header.a=rsa-sha256 header.s=20221208 header.b=PpGA05FE; dkim-atps=neutral Received: from mail-qt1-x838.google.com (mail-qt1-x838.google.com [IPv6:2607:f8b0:4864:20::838]) (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 4Qhb5S6tFsz20WR for ; Thu, 15 Jun 2023 18:27:56 +1000 (AEST) Received: by mail-qt1-x838.google.com with SMTP id d75a77b69052e-3f9d3ad6fd5sf3800471cf.1 for ; Thu, 15 Jun 2023 01:27:56 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1686817674; cv=pass; d=google.com; s=arc-20160816; b=N3AYQ92VLEwSLJr/3WeJ6Lf7n7J1lvI03KTN3UM1YPG5gNW7PC8AUEWFNi9Vl2Fk+R TE3PLBSANPUIQg106V3nhb/zBKzwOm6rmQztnEmLgjQZhUfOZKt5rveLCLJhT1IJwXFI EOZH9EEKa1lqh1mK4+/h9T1PDLumcIxt/bCTTqxLPd75O2Jg2twa0EngBHxmSLTqKjne daOFcfW8ymmYJfVprngRj4mUTX8w8f72zn+KoJvVmKrJVUWlU9cvUaqYewloS2kM6JmE LDE+evtbW0Vza416VI5h3f+9/VyzMPAFFohAxdQnFqkhzRm0Y87snS7RSmNr6rU8InTe ooXg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:dkim-signature; bh=oqEsLQXhl43Tfvz3LqF7FrFRcMHncmrxuE0ROp2J4B4=; b=zakcSbMPirRjgZsWOJgZYVIm7DgjK9Bh9P1Arrnx/Ufv0M2Z4eLE7jOvXC1T2r+CNI fAZJqsLgtVuwDXnxIHCDn7FV0ZTA4dhg6oIwoubKW9IHKezEk9mrcLldppqiXARURV5X TsChK9lYvJe4HUapiwf9gJSifd1/X63sOqNeU5bltKsNScmjJmizDDHlfddYWHSDIaPV KqLv8y2smIN7B4S3fhGZjbnOrLfjxdz4C0nqNliK37qL0dv97Dcs4G0hGIy08M5eJdk0 8vZQoWv3RYK+ugkXNdHalHFOne+GJD1NWp8UpK+/F+dYLcBCMiJqDtQ4ryhdTBo3uvRF MblQ== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@denx.de header.s=phobos-20191101 header.b="bJM/8R/4"; spf=pass (google.com: domain of pro@denx.de designates 2a01:238:438b:c500:173d:9f52:ddab:ee01 as permitted sender) smtp.mailfrom=pro@denx.de; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=denx.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20221208; t=1686817674; x=1689409674; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:x-original-authentication-results :x-original-sender:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:sender:from:to:cc:subject:date:message-id :reply-to; bh=oqEsLQXhl43Tfvz3LqF7FrFRcMHncmrxuE0ROp2J4B4=; b=PpGA05FEJSEYtuk92UpnoAeU7QTSNoAG+JiBvNFl2RhCGickGlDAieQUsuyUzKXAf6 mCGDDRp/2pSoSTzlZwCbQ+eJNOBCIVKAkOt95954ZW30p2+0E0C70AyClwMnOK3LZ4ri No/VDAq9JoJ1/IlRMvL77uEIrN/UKWgkV2pldi1VuFX+V6p7mK9oAr5OS0ufPWslK8WB BOqk2LtqEBhm1uw/TPlKoxHnvsmWr9G5HQoqHaOawIITNTIgnx8760MoPd9M/jEeF8zi 0DDi/3mo/0fPolsHJyh8yRYoDIiOOo6uklp8r+ReBqm3nSwfdVTwo7ttFrdFiIlPai12 1Cyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686817674; x=1689409674; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :x-beenthere:x-gm-message-state:sender:from:to:cc:subject:date :message-id:reply-to; bh=oqEsLQXhl43Tfvz3LqF7FrFRcMHncmrxuE0ROp2J4B4=; b=IFJkOZf6wnTAXUwyJoWij3pB9gaOmXVkZeoGHf0NKXYBwFUECYF82qnqPrfp/z8NJ2 wJeVYkaBIXC/0Yoet86nyaplWMlilwy5s0PLt7RDDZtItJE+BufZG+amRFdkKgt4VU4l 10P90R3L1jI7J1/q1z16Y0zR7luBEtwDw7g0VtNipj9bs58fCpK1N2LQMqsMLnszuTOO x2q4gZHZ3PUilyqJZBJuMRcw9NoUHc5E9+kv6df848KZp53SwQEdDTyWuVZUMOxdJK9d LGS7RxGir82SHKCRvT3gP9ks30vEDOMaoqIRlfXfbrGkNHMtfdqyfi90EPxfzw1+LEXM m3jw== Sender: swupdate@googlegroups.com X-Gm-Message-State: AC+VfDxaSioIc7tNaPmCVHo+IOpIaLOLNVSmeCKBVFmmd74fkfheACCP BG5EVmckXx/G4G1Wk95xRhY= X-Google-Smtp-Source: ACHHUZ4h1SIeVBoWlwCtXzNP9yNXVprWuGJvCPTYQxnrWOcPSB4ZSLyKYTEtrwRB+Hbtl5nvtbhHgw== X-Received: by 2002:ac8:5ac5:0:b0:3ef:e3ff:b297 with SMTP id d5-20020ac85ac5000000b003efe3ffb297mr4236461qtd.16.1686817674449; Thu, 15 Jun 2023 01:27:54 -0700 (PDT) X-BeenThere: swupdate@googlegroups.com Received: by 2002:ac8:4917:0:b0:3f4:e472:df8d with SMTP id e23-20020ac84917000000b003f4e472df8dls171213qtq.0.-pod-prod-00-us; Thu, 15 Jun 2023 01:27:53 -0700 (PDT) X-Received: by 2002:a05:6122:32ca:b0:456:f5b7:837c with SMTP id ck10-20020a05612232ca00b00456f5b7837cmr2055161vkb.1.1686817673779; Thu, 15 Jun 2023 01:27:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686817673; cv=none; d=google.com; s=arc-20160816; b=v8MVlMpabqZuyiNji5n1YQPYWFqyYvd1gGBFs083b+rZHE0oJdWeeXRFgMS0Nt16lw hbyfr2WBggcKDXFUmUNSBGl8P9FC1Zbp0AlT1hqQKBybbkhoQlV/+9j2QaI0HOd+eB/a UbGSio7WgZoSkqdqn+zf2wTUc4DNojkXohajAihYgo26/38RHh7PFjusqNQXp7ZxMJrV 6/IC069plFlVR7Uvck8hdDkjpQzwByqgaxOqw8HsySmRgetwAQk5b2PNGF0XFvUOa1F2 zkRAgOsRuAQfsFnD+68BAPAGdQyRgW1CxYirERM4G3NcVvj1YQxwUODJZad4n6UKPo07 LdMQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=KD+dPQJ6vq1alB0jgYNt09hUoKF9TPqCVm7Tme5KdXw=; b=ubPgxZNLQ9md9RLFrJGdXSFP2rSY+MG+sYJ+UTIkU/kd96xcjkPFTrNvjDKFAwRfWY qfXBvilhdNU6AxPpB4OZPwhwAKB4H7bOO082l9QAZm1JptPWMEckOMoC1Gp6iNLgEqhd w+h7gTqglR02YwRQZ1HSttE/DGe/3DseZgp7HAdBamMGofmiGw3ELMNDinLvL1ch/eWD cAtP2n1AdaI0UTuMhEstRoSMehPIz0m4bMlFgXD+oqRILw2vJJq9UrKudanSPLQrdw64 gMpq0bB5TU+WdTrefZ8P7kaWd9bw2RsvQlseWlMyKbFXmAWCtmVvofHN3hertxLG8XDx E1wA== ARC-Authentication-Results: i=1; gmr-mx.google.com; dkim=pass header.i=@denx.de header.s=phobos-20191101 header.b="bJM/8R/4"; spf=pass (google.com: domain of pro@denx.de designates 2a01:238:438b:c500:173d:9f52:ddab:ee01 as permitted sender) smtp.mailfrom=pro@denx.de; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=denx.de Received: from phobos.denx.de (phobos.denx.de. [2a01:238:438b:c500:173d:9f52:ddab:ee01]) by gmr-mx.google.com with ESMTPS id cg6-20020a056122310600b00462f78b2408si1306670vkb.2.2023.06.15.01.27.53 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Jun 2023 01:27:53 -0700 (PDT) Received-SPF: pass (google.com: domain of pro@denx.de designates 2a01:238:438b:c500:173d:9f52:ddab:ee01 as permitted sender) client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; Received: from mail-internal.denx.de (p578adb1c.dip0.t-ipconnect.de [87.138.219.28]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: noc@denx.de) by phobos.denx.de (Postfix) with ESMTPSA id 1C4468468A for ; Thu, 15 Jun 2023 10:27:48 +0200 (CEST) Received: from pollux.denx.de (pollux [192.168.1.1]) by mail-internal.denx.de (Postfix) with ESMTPS id 04B7718068B for ; Thu, 15 Jun 2023 10:27:44 +0200 (CEST) Received: by pollux.denx.de (Postfix, from userid 535) id EBE761A0094; Thu, 15 Jun 2023 10:27:43 +0200 (CEST) From: Philip Oberfichtner To: swupdate@googlegroups.com Cc: sbabic@denx.de, Philip Oberfichtner Subject: [swupdate] [libubootenv PATCH 2/2] validate_flags: Use isdigit() instead of strtoull() Date: Thu, 15 Jun 2023 10:26:50 +0200 Message-Id: <20230615082650.2693630-2-pro@denx.de> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20230615082650.2693630-1-pro@denx.de> References: <20230615082650.2693630-1-pro@denx.de> MIME-Version: 1.0 X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean X-Original-Sender: pro@denx.de X-Original-Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@denx.de header.s=phobos-20191101 header.b="bJM/8R/4"; spf=pass (google.com: domain of pro@denx.de designates 2a01:238:438b:c500:173d:9f52:ddab:ee01 as permitted sender) smtp.mailfrom=pro@denx.de; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=denx.de Precedence: list Mailing-list: list swupdate@googlegroups.com; contact swupdate+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: swupdate@googlegroups.com X-Google-Group-Id: 605343134186 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , Using strtoull() is unreliable for testing if the input is a number. It is implementation-defined, whether or not errno is set. Furthermore, the decimal type has to be handled separately from the hex type. U-Boot will reject an "0x10" entry as decimal, "16" is expected instead. Signed-off-by: Philip Oberfichtner Reviewed-by: Stefano Babic --- src/uboot_env.c | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/uboot_env.c b/src/uboot_env.c index a31e459..b1e5923 100644 --- a/src/uboot_env.c +++ b/src/uboot_env.c @@ -1681,10 +1681,24 @@ int libuboot_read_config(struct uboot_ctx *ctx, const char *config) return libuboot_read_config_ext(&ctx, config); } +static bool validate_int(bool hex, const char *value) +{ + const char *c; + + for (c = value; c != value + strlen(value); ++c) { + if (hex && !isxdigit(*c)) + return false; + + if (!hex && !isdigit(*c)) + return false; + } + + return true; +} + static bool libuboot_validate_flags(struct var_entry *entry, const char *value) { bool ok_type = true, ok_access = true; - unsigned long long test; switch (entry->access) { case ACCESS_ATTR_ANY: @@ -1709,15 +1723,13 @@ static bool libuboot_validate_flags(struct var_entry *entry, const char *value) ok_type = true; break; case TYPE_ATTR_DECIMAL: + ok_type = validate_int(false, value); + break; case TYPE_ATTR_HEX: - errno = 0; ok_type = strlen(value) > 2 && (value[0] == '0') && (value[1] == 'x' || value [1] == 'X'); - if (ok_type) { - test = strtoull(value, NULL, 16); - if (errno) - ok_type = false; - } + if (ok_type) + ok_type = validate_int(true, value + 2); break; case TYPE_ATTR_BOOL: ok_access = (value[0] == '1' || value[0] == 'y' || value[0] == 't' ||