diff --git a/0001-tests-avoid-FP-when-run-as-root.patch b/0001-tests-avoid-FP-when-run-as-root.patch deleted file mode 100644 index 9cd42ba9c06b1097c1d7ec51c0da74229ae683ad..0000000000000000000000000000000000000000 --- a/0001-tests-avoid-FP-when-run-as-root.patch +++ /dev/null @@ -1,129 +0,0 @@ -From 2f9fff9e1f0c0b7a9034d7c46ca197ce693c4736 Mon Sep 17 00:00:00 2001 -From: Bernhard Voelker -Date: Sun, 9 Feb 2020 19:58:07 +0100 -Subject: [PATCH] tests: avoid FP when run as root - -Test 'sv-bug-54171' produced a false-positive error as 'find' would -not fail for an unreadable directory when run as root. -Migrate the test to the newer shell-based tests, and add the -'skip_if_root_' guard to avoid a false-positive. - -* find/testsuite/find.posix/sv-bug-54171.exp: Remove. -* find/testsuite/find.posix/sv-bug-54171.xo: Remove. -* find/testsuite/Makefile.am (EXTRA_DIST_XO, EXTRA_DIST_EXP): Remove the -above deleted test. -* tests/find/depth-unreadable-dir.sh: Add test. -* tests/local.mk (all_tests): Reference it. - -Test FP introduced in commit v4.6.0-178-gdf4610d0. -Fixes https://savannah.gnu.org/bugs/?57762 -and https://bugzilla.redhat.com/1799064 ---- - find/testsuite/Makefile.am | 2 -- - find/testsuite/find.posix/sv-bug-54171.exp | 5 ---- - find/testsuite/find.posix/sv-bug-54171.xo | 1 - - tests/find/depth-unreadable-dir.sh | 39 ++++++++++++++++++++++++++++++ - tests/local.mk | 1 + - 5 files changed, 40 insertions(+), 8 deletions(-) - delete mode 100644 find/testsuite/find.posix/sv-bug-54171.exp - delete mode 100644 find/testsuite/find.posix/sv-bug-54171.xo - create mode 100755 tests/find/depth-unreadable-dir.sh - -diff --git a/find/testsuite/Makefile.am b/find/testsuite/Makefile.am -index d252451..77a2902 100644 ---- a/find/testsuite/Makefile.am -+++ b/find/testsuite/Makefile.am -@@ -119,7 +119,6 @@ find.posix/prune-stat.xo \ - find.posix/sizetype.xo \ - find.posix/sv-bug-15235.xo \ - find.posix/sv-bug-19613.xo \ --find.posix/sv-bug-54171.xo \ - find.posix/typesize.xo - - -@@ -246,7 +245,6 @@ find.posix/sv-bug-15235.exp \ - find.posix/sv-bug-19605.exp \ - find.posix/sv-bug-19613.exp \ - find.posix/sv-bug-19617.exp \ --find.posix/sv-bug-54171.exp \ - find.posix/typesize.exp \ - find.posix/user-empty.exp \ - find.posix/user-missing.exp -diff --git a/find/testsuite/find.posix/sv-bug-54171.exp b/find/testsuite/find.posix/sv-bug-54171.exp -deleted file mode 100644 -index 8e5448f..0000000 ---- a/find/testsuite/find.posix/sv-bug-54171.exp -+++ /dev/null -@@ -1,5 +0,0 @@ --exec rm -rf tmp --exec mkdir tmp tmp/dir --exec chmod 0311 tmp/dir --find_start f {tmp -depth -name dir } --exec rm -rf tmp -diff --git a/find/testsuite/find.posix/sv-bug-54171.xo b/find/testsuite/find.posix/sv-bug-54171.xo -deleted file mode 100644 -index 2dc4706..0000000 ---- a/find/testsuite/find.posix/sv-bug-54171.xo -+++ /dev/null -@@ -1 +0,0 @@ --tmp/dir -diff --git a/tests/find/depth-unreadable-dir.sh b/tests/find/depth-unreadable-dir.sh -new file mode 100755 -index 0000000..86e2fd6 ---- /dev/null -+++ b/tests/find/depth-unreadable-dir.sh -@@ -0,0 +1,39 @@ -+#!/bin/sh -+# find -depth: ensure to output an unreadable directory. -+ -+# Copyright (C) 2020 Free Software Foundation, Inc. -+ -+# This program is free software: you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation, either version 3 of the License, or -+# (at your option) any later version. -+ -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+ -+# You should have received a copy of the GNU General Public License -+# along with this program. If not, see . -+ -+. "${srcdir=.}/tests/init.sh"; fu_path_prepend_ -+print_ver_ find -+ -+# Find run as root would not fail for an unreadable directory. -+skip_if_root_ -+ -+# Prepare an unreadable directory, and the expected stdout/stderr. -+mkdir tmp tmp/dir \ -+ && chmod 0311 tmp/dir \ -+ && echo 'tmp/dir' > exp \ -+ && echo "find: 'tmp/dir': Permission denied" > experr \ -+ || framework_failure_ -+ -+# Run FTS-based find with -depth; versions < 4.7.0 failed to output -+# an unreadable directory (see #54171). -+returns_ 1 find tmp -depth -name dir > out 2> err || fail=1 -+ -+compare exp out || fail=1 -+compare experr err || fail=1 -+ -+Exit $fail -diff --git a/tests/local.mk b/tests/local.mk -index dccc734..986df55 100644 ---- a/tests/local.mk -+++ b/tests/local.mk -@@ -106,6 +106,7 @@ check-root: - - all_tests = \ - tests/misc/help-version.sh \ -+ tests/find/depth-unreadable-dir.sh \ - tests/find/many-dir-entries-vs-OOM.sh \ - tests/find/name-lbracket-literal.sh \ - tests/find/printf_escapechars.sh \ --- -1.8.3.1 - diff --git a/0004-fts-remove-NOSTAT_LEAF_OPTIMIZATION.patch b/0004-fts-remove-NOSTAT_LEAF_OPTIMIZATION.patch deleted file mode 100644 index 854bce67b1f2ed824d17842fe1453bc78d06a4ce..0000000000000000000000000000000000000000 --- a/0004-fts-remove-NOSTAT_LEAF_OPTIMIZATION.patch +++ /dev/null @@ -1,159 +0,0 @@ -rom 47bf2cf3184027c1eb9c1dfeea5c5b8b2d69710d Mon Sep 17 00:00:00 2001 -From: Paul Eggert -Date: Wed, 15 Apr 2020 20:50:32 -0700 -Subject: [PATCH] fts: remove NOSTAT_LEAF_OPTIMIZATION -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -It caused ‘find’ and ‘du’ to dump core, and it was useful -only for obsolescent Linux filesystems anyway. Problem reported in: -https://lists.gnu.org/r/bug-gnulib/2020-04/msg00068.html -Quite possibly there is still a serious underlying fts bug with -tight-loop-check and mutating file systems, but if so this patch -should cause the bug to be triggered less often. -* lib/fts.c (enum leaf_optimization): Remove -NOSTAT_LEAF_OPTIMIZATION, as it’s problematic. -(S_MAGIC_REISERFS, S_MAGIC_XFS): Remove; no longer needed. -(leaf_optimization): Remove special cases for ReiserFS and XFS. -(fts_read): Remove NOSTAT_LEAF_OPTIMIZATION code. -* lib/fts_.h (struct _ftsent.fts_n_dirs_remaining): -Remove. All uses removed. ---- - ChangeLog | 17 +++++++++++++++++ - lib/fts.c | 56 ++++++++------------------------------------------------ - lib/fts_.h | 5 ----- - 3 files changed, 25 insertions(+), 53 deletions(-) - -diff --git a/gl/lib/fts.c b/gl/lib/fts.c -index 1093ce5..dfe3fef 100644 ---- a/gl/lib/fts.c -+++ b/gl/lib/fts.c -@@ -445,7 +445,6 @@ fts_open (char * const *argv, - if ((parent = fts_alloc(sp, "", 0)) == NULL) - goto mem2; - parent->fts_level = FTS_ROOTPARENTLEVEL; -- parent->fts_n_dirs_remaining = -1; - } - - /* The classic fts implementation would call fts_stat with -@@ -634,9 +633,8 @@ fts_close (FTS *sp) - } - - /* Minimum link count of a traditional Unix directory. When leaf -- optimization is OK and MIN_DIR_NLINK <= st_nlink, then st_nlink is -- an upper bound on the number of subdirectories (counting "." and -- ".."). */ -+ optimization is OK and a directory's st_nlink == MIN_DIR_NLINK, -+ then the directory has no subdirectories. */ - enum { MIN_DIR_NLINK = 2 }; - - /* Whether leaf optimization is OK for a directory. */ -@@ -645,12 +643,8 @@ enum leaf_optimization - /* st_nlink is not reliable for this directory's subdirectories. */ - NO_LEAF_OPTIMIZATION, - -- /* Leaf optimization is OK, but is not useful for avoiding stat calls. */ -- OK_LEAF_OPTIMIZATION, -- -- /* Leaf optimization is not only OK: it is useful for avoiding -- stat calls, because dirent.d_type does not work. */ -- NOSTAT_LEAF_OPTIMIZATION -+ /* st_nlink == 2 means the directory lacks subdirectories. */ -+ OK_LEAF_OPTIMIZATION - }; - - #if (defined __linux__ || defined __ANDROID__) \ -@@ -663,9 +657,7 @@ enum leaf_optimization - # define S_MAGIC_CIFS 0xFF534D42 - # define S_MAGIC_NFS 0x6969 - # define S_MAGIC_PROC 0x9FA0 --# define S_MAGIC_REISERFS 0x52654973 - # define S_MAGIC_TMPFS 0x1021994 --# define S_MAGIC_XFS 0x58465342 - - # ifdef HAVE___FSWORD_T - typedef __fsword_t fsword; -@@ -786,23 +778,15 @@ dirent_inode_sort_may_be_useful (FTSENT const *p, int dir_fd) - } - - /* Given an FTS entry P for a directory with descriptor DIR_FD, -- return true if it is both useful and valid to apply leaf optimization. -- The optimization is useful only for file systems that lack usable -- dirent.d_type info. The optimization is valid if an st_nlink value -- of at least MIN_DIR_NLINK is an upper bound on the number of -- subdirectories of D, counting "." and ".." as subdirectories. -+ return whether it is valid to apply leaf optimization. -+ The optimization is valid if a directory's st_nlink value equal -+ to MIN_DIR_NLINK means the directory has no subdirectories. - DIR_FD is negative if unavailable. */ - static enum leaf_optimization - leaf_optimization (FTSENT const *p, int dir_fd) - { - switch (filesystem_type (p, dir_fd)) - { -- /* List here the file system types that may lack usable dirent.d_type -- info, yet for which the optimization does apply. */ -- case S_MAGIC_REISERFS: -- case S_MAGIC_XFS: /* XFS lacked it until 2013-08-22 commit. */ -- return NOSTAT_LEAF_OPTIMIZATION; -- - case 0: - /* Leaf optimization is unsafe if the file system type is unknown. */ - FALLTHROUGH; -@@ -1027,26 +1011,7 @@ check_for_dir: - if (p->fts_info == FTS_NSOK) - { - if (p->fts_statp->st_size == FTS_STAT_REQUIRED) -- { -- FTSENT *parent = p->fts_parent; -- if (parent->fts_n_dirs_remaining == 0 -- && ISSET(FTS_NOSTAT) -- && ISSET(FTS_PHYSICAL) -- && (leaf_optimization (parent, sp->fts_cwd_fd) -- == NOSTAT_LEAF_OPTIMIZATION)) -- { -- /* nothing more needed */ -- } -- else -- { -- p->fts_info = fts_stat(sp, p, false); -- if (S_ISDIR(p->fts_statp->st_mode) -- && p->fts_level != FTS_ROOTLEVEL -- && 0 < parent->fts_n_dirs_remaining -- && parent->fts_n_dirs_remaining != (nlink_t) -1) -- parent->fts_n_dirs_remaining--; -- } -- } -+ p->fts_info = fts_stat(sp, p, false); - else - fts_assert (p->fts_statp->st_size == FTS_NO_STAT_REQUIRED); - } -@@ -1830,11 +1795,6 @@ err: memset(sbp, 0, sizeof(struct stat)); - } - - if (S_ISDIR(sbp->st_mode)) { -- p->fts_n_dirs_remaining -- = ((sbp->st_nlink < MIN_DIR_NLINK -- || p->fts_level <= FTS_ROOTLEVEL) -- ? -1 -- : sbp->st_nlink - (ISSET (FTS_SEEDOT) ? 0 : MIN_DIR_NLINK)); - if (ISDOT(p->fts_name)) { - /* Command-line "." and ".." are real directories. */ - return (p->fts_level == FTS_ROOTLEVEL ? FTS_D : FTS_DOT); -diff --git a/gl/lib/fts_.h b/gl/lib/fts_.h -index d40a116..2e76cc4 100644 ---- a/gl/lib/fts_.h -+++ b/gl/lib/fts_.h -@@ -227,11 +227,6 @@ typedef struct _ftsent { - - size_t fts_namelen; /* strlen(fts_name) */ - -- /* If not (nlink_t) -1, an upper bound on the number of -- remaining subdirectories of interest. If this becomes -- zero, some work can be avoided. */ -- nlink_t fts_n_dirs_remaining; -- - # define FTS_D 1 /* preorder directory */ - # define FTS_DC 2 /* directory that causes cycles */ - # define FTS_DEFAULT 3 /* none of the above */ diff --git a/findutils-4.7.0.tar.xz b/findutils-4.7.0.tar.xz deleted file mode 100644 index d34edc2df25c1b08a0aacc4db66192f991cf4f78..0000000000000000000000000000000000000000 Binary files a/findutils-4.7.0.tar.xz and /dev/null differ diff --git a/findutils-4.8.0.tar.xz b/findutils-4.8.0.tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..7bbd5654636da0f5da14eeab83cbbb560bc483e5 Binary files /dev/null and b/findutils-4.8.0.tar.xz differ diff --git a/findutils.spec b/findutils.spec index 622f22e601f1aa58b2e5072e3e521f89b0b63e84..dbe0946056f63d677d079b13c4f4a7e15304a50c 100644 --- a/findutils.spec +++ b/findutils.spec @@ -1,7 +1,7 @@ Name: findutils Epoch: 2 -Version: 4.7.0 -Release: 7 +Version: 4.8.0 +Release: 1 Summary: The GNU Find Utilities License: GPLv3+ URL: http://www.gnu.org/software/findutils/ @@ -9,11 +9,9 @@ Source0: https://ftp.gnu.org/pub/gnu/findutils/%{name}-%{version}.tar.xz # resolve test failures when ran as root # https://savannah.gnu.org/bugs/?57762 -Patch0: 0001-tests-avoid-FP-when-run-as-root.patch Patch1: 0001-findutils-xautofs.patch # rhbz #1252549 #1299169 Patch2: 0001-findutils-leaf-opt.patch -Patch3: 0004-fts-remove-NOSTAT_LEAF_OPTIMIZATION.patch Buildrequires: gcc autoconf gettext-devel texinfo libselinux-devel dejagnu automake gdb Requires(post): info @@ -96,6 +94,12 @@ fi %exclude %{_mandir}/man5/locatedb.5* %changelog +* Mon Aug 30 2021 shixuantong - 2:4.8.0-1 +- Type:enhancement +- ID:NA +- SUG:NA +- DESC:update version to 4.8.0 + * Fri Mar 19 2021 shixuantong - 2:4.7.0-7 - Type:bugfix - ID:NA