From nobody Wed Jul 9 20:29:23 2025 X-Original-To: dev-commits-src-main@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 4bcqMR3d6Nz60wRV; Wed, 09 Jul 2025 20:29:23 +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 4bcqMR22tKz3pvJ; Wed, 09 Jul 2025 20:29:23 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1752092963; 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=4DtOFRAahcW0m/0GS7zDHUpEIOAK9ESmY9lT8dVKaTA=; b=xvSlA31VJXB9J5ADS+1w2N9ABnHhFOXp9VLBaHSuCQg9Do3UddFC0kQNEujxomo1OqVguo WR+oM/SmMOjgelsouwUsxrvD09qNZq5MTh8li7tKejoLMwGmVuIuEOG1lGoMKqPc+ZAI0e oPmq7cfbTvQfBioNguEjVw4G59FpOIWYBGmrU1CBrfVIqfEj0LxgC29sqNNEqRTpc7jHbk N1vwqpL0G+cTW49AbcoeXmdeZzUidlVINLLDz1wyE+7C1jHaYWI54GX4uql1WU6CawB2/J SzqKdTBdwDHd78bSE5CVJKf3PkyF+DhQqoHzOPukzC93JBHO2Sxy7SZISX6CwA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1752092963; 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=4DtOFRAahcW0m/0GS7zDHUpEIOAK9ESmY9lT8dVKaTA=; b=h2bZP0bqcSu59N8JTeeU8CDA4R4UMZJ3wfVm1HLPecVD19w7Q74rCMzbvR9z+VhH/H/IBh Hol6g0jHPCvT0BpjIf5jSBxoaQGC/qGhMbj/MYBrSs+IRT3oFcJoyaX/clyU68Iy/fZTb1 tR7MFNNZX4Ta6FqRwysDZllpFhc0End+KqaNDJzLnlBynHfu+h0uJuhOU8MwStpYJxTozP wzRr1gYA6LGt3aOvl1hCKQUJR14LgFNRq/MtFRFjvyB2X4BJjx8gEiY9VmZ8285ZqllBmw FGWvDXX2Aejg2SozuLoQlMigAaaBYRBFC5FtnXBrmCXSlIKbuWEdmStfHy8nOg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1752092963; a=rsa-sha256; cv=none; b=pxSVSy0dUPcicTB20syNzpzQmsiYD+nOXYXc2naqGtQkX5k71pr8PI0cNNja5d04hhz8dW ECXDQC2zFhXlaIFGUxYD7SB1r/AGRNj5QpKjZrKA6k9vOYc0dvjYDSwvVF5rUPpuCPhHC8 4Yl019u9Z3X2zXadURBuzAjs2fP2gryaBgk4eypCCcskohISkjXNzWUucqjWC7Ky5rkZ8c VDTeRZtlk+fdEUn0vN68HacNI2z383D2vY6P+sfLIScNpy/WyOEypsz0IOexPybmBHT5wg gbnRunHdF0oQpKiQojscZ4NPpZ9CUcfMRwLpd7km+wnTxQn19vGSphMPKnh4fQ== 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 4bcqMR1DdNzdFG; Wed, 09 Jul 2025 20:29:23 +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 569KTNFM047999; Wed, 9 Jul 2025 20:29:23 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 569KTNfe047996; Wed, 9 Jul 2025 20:29:23 GMT (envelope-from git) Date: Wed, 9 Jul 2025 20:29:23 GMT Message-Id: <202507092029.569KTNfe047996@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= Subject: git: 9bf14f2a475e - main - kyua: Try harder to delete directories. List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: des X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 9bf14f2a475e221c48488984dc5a02a4608bb877 Auto-Submitted: auto-generated The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=9bf14f2a475e221c48488984dc5a02a4608bb877 commit 9bf14f2a475e221c48488984dc5a02a4608bb877 Author: Dag-Erling Smørgrav AuthorDate: 2025-07-09 20:28:47 +0000 Commit: Dag-Erling Smørgrav CommitDate: 2025-07-09 20:28:47 +0000 kyua: Try harder to delete directories. When recursing into a directory to delete it, start by chmod'ing it to 0700. This fixes an issue where kyua is able to run, but not debug, a test case that creates unwriteable directories, because when debugging it tries (and fails) to delete the directory after the test completes. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: igoro Differential Revision: https://reviews.freebsd.org/D51229 --- contrib/kyua/utils/fs/operations.cpp | 2 ++ contrib/kyua/utils/fs/operations_test.cpp | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/contrib/kyua/utils/fs/operations.cpp b/contrib/kyua/utils/fs/operations.cpp index 7a96d0b2058a..185d164b88d7 100644 --- a/contrib/kyua/utils/fs/operations.cpp +++ b/contrib/kyua/utils/fs/operations.cpp @@ -692,6 +692,7 @@ fs::rm_r(const fs::path& directory) { const fs::directory dir(directory); + ::chmod(directory.c_str(), 0700); for (fs::directory::const_iterator iter = dir.begin(); iter != dir.end(); ++iter) { if (iter->name == "." || iter->name == "..") @@ -701,6 +702,7 @@ fs::rm_r(const fs::path& directory) if (fs::is_directory(entry)) { LD(F("Descending into %s") % entry); + ::chmod(entry.c_str(), 0700); fs::rm_r(entry); } else { LD(F("Removing file %s") % entry); diff --git a/contrib/kyua/utils/fs/operations_test.cpp b/contrib/kyua/utils/fs/operations_test.cpp index f1349351166e..6f0fa52811c9 100644 --- a/contrib/kyua/utils/fs/operations_test.cpp +++ b/contrib/kyua/utils/fs/operations_test.cpp @@ -664,6 +664,19 @@ ATF_TEST_CASE_BODY(rm_r__files_and_directories) } +ATF_TEST_CASE_WITHOUT_HEAD(rm_r__bad_perms); +ATF_TEST_CASE_BODY(rm_r__bad_perms) +{ + fs::mkdir(fs::path("root"), 0755); + fs::mkdir(fs::path("root/dir"), 0755); + atf::utils::create_file("root/dir/file", ""); + ::chmod(fs::path("root/dir").c_str(), 0000); + ATF_REQUIRE(lookup(".", "root", S_IFDIR)); + fs::rm_r(fs::path("root")); + ATF_REQUIRE(!lookup(".", "root", S_IFDIR)); +} + + ATF_TEST_CASE_WITHOUT_HEAD(rmdir__ok) ATF_TEST_CASE_BODY(rmdir__ok) { @@ -811,6 +824,7 @@ ATF_INIT_TEST_CASES(tcs) ATF_ADD_TEST_CASE(tcs, rm_r__empty); ATF_ADD_TEST_CASE(tcs, rm_r__files_and_directories); + ATF_ADD_TEST_CASE(tcs, rm_r__bad_perms); ATF_ADD_TEST_CASE(tcs, rmdir__ok); ATF_ADD_TEST_CASE(tcs, rmdir__fail);