From nobody Wed Jul 2 05:10:33 2025 X-Original-To: dev-commits-src-all@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 4bX7JT64VBz61M8v; Wed, 02 Jul 2025 05:10:33 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bX7JT5VrDz3SX1; Wed, 02 Jul 2025 05:10:33 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1751433033; 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=8tnRs6yW/gt97Tes7Hs3ekKbDb14uv/Lntge1apa+vo=; b=ToPaw8Vz4LWjXcFp/ZOg8i+Iav38ScClWLjB7Aubnr0azc23oOBLPIvPG6qVcpN2cizTV5 tSKyzUWNNJpUqZnK2iXMCG9UD/fcK0oSkYngdH9K/uPPOIIcKcbACz9fXRrwtT28zQSBtb 7s/2z2zwxBcBmMjyOAY5g1QuILR9jJMynX/Rc69NBWsmMJA6vishIuybrsZJ8TJUKkFQ5g PkTz8mkgqMrAM9oXrcb7YLrBK7Kq5Rmm06/b+ef+LuYPk1h0V3xp7kQ/CTbZv6bdWrBoQl H5F3a2ztd6g1d3HCoAjHwGptpV3HMiINze1crCKMxgBv0Sv0COba32oobrqGnQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1751433033; 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=8tnRs6yW/gt97Tes7Hs3ekKbDb14uv/Lntge1apa+vo=; b=r5riZ2j9NQzwsH12APCpO+Vj686nYW02w49v3syC0AZ+dO2btVoDLidfbq12VOdJhti9eo fr1WdUOtIsG5UhaFHxCyY3U6Mr9einmx52VbyWcPLvGdPcy/UY9KreTHC5Z8dcKiPDJGYO t7LM8gi/wcrQluxR5jkhYOk/W9/wUY7an+E4DQaWd306F4gp8XoHGKZEum0ukqycC0v+Yz LQwBb6P34F/lgTj6zUNapN2mHYHNizM1L7rZe/xPWstXQDHWRa4Xp+4amaIC2MQ09Vj6M4 4Rl67QRF6wQr/K8SYDFbwJrT0NglcUGsDcQwwN+VCCt9pVz6mU0kRdPXgGmcsA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1751433033; a=rsa-sha256; cv=none; b=wrP36upJLQE+kCm+BO7OZ1B22/Rz/D9IkWiR/qz71KlEbOjR93ymNIB2ZcINL7Vyh5dPAN ezkiqTAytihVg8kKrrYvrM21bezNequ7SAU2ULyrehw/Z+/K6rP7BUzwpCHYTH+aIe5KBD jHpOFeTUq690/YStofpM7LvVQyu3qNzRJHwTZXE7WsMM3VHReFe8ekL6wHqRugtAU49mY4 9CfPu6NDTe9DiMGb/jjR4cwBvPhXbpu5+FqvThB5I1MDuODvC874X4tfbdasmU/0GXC5Zy Q1uo0s52ZCYKU1sa9sq0JWjVo7aVm0MhsitRdnMVC2rc6ety+TXsuqn9Kde4Hw== 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 4bX7JT56Pmz1522; Wed, 02 Jul 2025 05:10:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5625AXxX059689; Wed, 2 Jul 2025 05:10:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5625AXkg059686; Wed, 2 Jul 2025 05:10:33 GMT (envelope-from git) Date: Wed, 2 Jul 2025 05:10:33 GMT Message-Id: <202507020510.5625AXkg059686@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Xin LI Subject: git: 119fb2a288a4 - main - sh(1): Do not interpret chdir to "" as equivalent to chdir with no argument List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: delphij X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 119fb2a288a48b566f5b2c195edfdb980f876d76 Auto-Submitted: auto-generated The branch main has been updated by delphij: URL: https://cgit.FreeBSD.org/src/commit/?id=119fb2a288a48b566f5b2c195edfdb980f876d76 commit 119fb2a288a48b566f5b2c195edfdb980f876d76 Author: Xin LI AuthorDate: 2025-07-02 05:09:29 +0000 Commit: Xin LI CommitDate: 2025-07-02 05:09:29 +0000 sh(1): Do not interpret chdir to "" as equivalent to chdir with no argument A script that does the following: cd "${dir}" || exit 1 would incorrectly remain in the current directory when `${dir}` is an empty string under the current implementation. This behavior, while historical, is potentially dangerous, as it is likely not what the script author intended. Change the command to treat an empty string as an error and emit a diagnostic message to standard error, as required by IEEE Std 1003.1-2024. PR: standards/287440 Test Plan: kyua test bin/sh Relnotes: yes Differential Revision: https://reviews.freebsd.org/D50974 --- bin/sh/cd.c | 2 -- bin/sh/tests/builtins/Makefile | 1 + bin/sh/tests/builtins/cd12.0 | 3 +++ bin/sh/tests/builtins/cd12.0.stderr | 1 + 4 files changed, 5 insertions(+), 2 deletions(-) diff --git a/bin/sh/cd.c b/bin/sh/cd.c index b908c4320c04..6f97bff3c9f0 100644 --- a/bin/sh/cd.c +++ b/bin/sh/cd.c @@ -99,8 +99,6 @@ cdcmd(int argc __unused, char **argv __unused) if ((dest = *argptr) == NULL && (dest = bltinlookup("HOME", 1)) == NULL) error("HOME not set"); - if (*dest == '\0') - dest = "."; if (dest[0] == '-' && dest[1] == '\0') { dest = bltinlookup("OLDPWD", 1); if (dest == NULL) diff --git a/bin/sh/tests/builtins/Makefile b/bin/sh/tests/builtins/Makefile index ac959b17c639..7fdecb23c817 100644 --- a/bin/sh/tests/builtins/Makefile +++ b/bin/sh/tests/builtins/Makefile @@ -52,6 +52,7 @@ ${PACKAGE}FILES+= cd8.0 ${PACKAGE}FILES+= cd9.0 cd9.0.stdout ${PACKAGE}FILES+= cd10.0 ${PACKAGE}FILES+= cd11.0 +${PACKAGE}FILES+= cd12.0 cd12.0.stderr ${PACKAGE}FILES+= command1.0 ${PACKAGE}FILES+= command2.0 ${PACKAGE}FILES+= command3.0 diff --git a/bin/sh/tests/builtins/cd12.0 b/bin/sh/tests/builtins/cd12.0 new file mode 100644 index 000000000000..34bc053afd1e --- /dev/null +++ b/bin/sh/tests/builtins/cd12.0 @@ -0,0 +1,3 @@ +(cd /bin) || exit 1 +cd "" && exit 1 +exit 0 diff --git a/bin/sh/tests/builtins/cd12.0.stderr b/bin/sh/tests/builtins/cd12.0.stderr new file mode 100644 index 000000000000..cce88588b909 --- /dev/null +++ b/bin/sh/tests/builtins/cd12.0.stderr @@ -0,0 +1 @@ +cd: : No such file or directory