From nobody Wed Mar 02 21:57:35 2022 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id C304319E0F1A; Wed, 2 Mar 2022 21:57:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4K87Jc6Y0Zz3KYG; Wed, 2 Mar 2022 21:57:36 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1646258257; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=bSAmGP9cNl8kN6UurFenZN3vgjl0GbXbEe7rqIMsLxY=; b=AgCkCsDqC9VBdBqntzhhk+3TpTPevP7/xyW8mRhYvetRiKzxPHwWBQykmI9X1YzL5OQw1i XiqhbzfkyAVv+CFPcu3EnfepsfGPDgJGeOqy6wA2Z5GLtPdD/AHphZPy4SbpmfWJ+q6rIV 9sgdXOOTle4cbIgiWHCriys01oRQ82mI1M1vwVVT1cuuV878g1Vuv0spIWkfhlZqNklJUk e57cY0StJA1+BnbmhXFNXZAa43SVnq7H6CrUTwNyMExWBjKFZStLh0tfgf12Uyx2ujFuok SW5nL1qWFDzt2TfBijkeuQmIUKNmlDz1r7UskE1cFR86YFeLQsmI+DqqLoHbgg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 72724346C; Wed, 2 Mar 2022 21:57:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 222LvZdV065420; Wed, 2 Mar 2022 21:57:35 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 222LvZaD065419; Wed, 2 Mar 2022 21:57:35 GMT (envelope-from git) Date: Wed, 2 Mar 2022 21:57:35 GMT Message-Id: <202203022157.222LvZaD065419@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Eric van Gyzen Subject: git: c2d161d30006 - stable/13 - efivar: Attempt to fix setting/printing/deleting EFI vars with '-' in their name List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: vangyzen X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: c2d161d300064de86683443ba5020b9c0004efb3 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1646258257; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=bSAmGP9cNl8kN6UurFenZN3vgjl0GbXbEe7rqIMsLxY=; b=fdXFTqZA9A5EeRYpVkop2hG6Mch/xqTDduTwP3fEH6QOmzubOcJMIFmo8/e8FQ3HNOqa9J uoI2V46G6bNe7F6XTE3iHGMppoXHQqGdAve5qaNOkB+3m4qshqbtJr9WOvjb4yOS/TPiLh 9Dr+C4JvG75Wqr1BlaEjnHeocOzHkv1KMMzBvzYYRjRvZtUbUB+BGVAHYEI5Lfz0I/P3aB fR1RF/tlG7D0qSe9W8Ku9QywoBhj/mDlAVL2NmxZz02xKt3s663uW8AKHvYKvvf/Apt8Rr dKRKMgEW/rlpU85AkiapFRXwSaozaavi3lshdgqv1zFfkQPuQgzqiCkQAdZP+w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1646258257; a=rsa-sha256; cv=none; b=mlzQI8KU08hrBXY3Or6dpY3x2El+onMJergI0h63sg7nPWgrSBnUrAqBAI6Wl3a3px6kNO pmPBGFgicBvRPwJIwNkf95dNbiZjg42p/TCvg9xNbmAM58ltNSQfFBafRXA/yfFT7BniyB u0kTpglpZTxGcMWZ5NrIgsMo5LknBlIfmYGabN/6IIKhoXWOj4IZRUtrnR+s0dfT7aXhYx IfECxIsm2apjB5iKadPOMB1GnbSaOefDMGPwW19grpUrnlB308yC5uaU+xaQ7pzUiseWtt lHGPDHYVCCeYFWoPX2FwETTgnF2WHuIiRG757+aa6Fj0ciJlrcVAjQVTGg+sBg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by vangyzen: URL: https://cgit.FreeBSD.org/src/commit/?id=c2d161d300064de86683443ba5020b9c0004efb3 commit c2d161d300064de86683443ba5020b9c0004efb3 Author: Warner Losh AuthorDate: 2021-04-09 22:35:17 +0000 Commit: Eric van Gyzen CommitDate: 2022-03-02 21:56:31 +0000 efivar: Attempt to fix setting/printing/deleting EFI vars with '-' in their name Due to how we're parsing UUIDs, we were disallowing setting, printing or deleting any UEFI variable with a '-' in it when you attempted to do that operation with the exact name (wildcard reporting was unaffected). Fix the parser to loop over all the dashes in the name and only give up when all possible matches are exhausted. Reviewed by: markj@ Sponsored by: Netflix, Inc Differential Revision: https://reviews.freebsd.org/D29620 (cherry picked from commit 0292a5c95f14b1ad3df39ee71c51cc830864a3aa) --- usr.sbin/efivar/efivar.c | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/usr.sbin/efivar/efivar.c b/usr.sbin/efivar/efivar.c index cbf4050a787d..2fdf0e4d09b8 100644 --- a/usr.sbin/efivar/efivar.c +++ b/usr.sbin/efivar/efivar.c @@ -118,15 +118,24 @@ rep_errx(int eval, const char *fmt, ...) static void breakdown_name(char *name, efi_guid_t *guid, char **vname) { - char *cp; - - cp = strrchr(name, '-'); - if (cp == NULL) - rep_errx(1, "Invalid name: %s", name); - *vname = cp + 1; - *cp = '\0'; - if (efi_name_to_guid(name, guid) < 0) - rep_errx(1, "Invalid guid %s", name); + char *cp, *ocp; + + ocp = NULL; + while (true) { + cp = strrchr(name, '-'); + if (cp == NULL) { + if (ocp != NULL) + *ocp = '-'; + rep_errx(1, "Invalid guid in: %s", name); + } + if (ocp != NULL) + *ocp = '-'; + *vname = cp + 1; + *cp = '\0'; + ocp = cp; + if (efi_name_to_guid(name, guid) >= 0) + break; + } } static uint8_t *