The exit code of fold(1) was zero for non-existent file:
$ fold badfile; echo $?
fold: badfile: No such file or directory
0
* coreutils-i18n.patch (src/fold.c:fold_file): Fix incorrect return code
for non-existent files; the I18N patch incorrectly returned an integer
instead of a bool on failure.
While at it, also fix the assignment to 'have_read_stdin' to bool.
The bug was introduced by the downstrean I18N patch. (rhbz#2296201)
Based on patch by Sohum Mendon <sohum.mendon@proton.me>.
OBS-URL: https://build.opensuse.org/package/show/Base:System/coreutils?expand=0&rev=364
- Update to 9.5:
Bug fixes:
* chmod -R now avoids a race where an attacker may replace a traversed file
with a symlink, causing chmod to operate on an unintended file.
[This bug was present in "the beginning".]
* cp, mv, and install no longer issue spurious diagnostics like "failed
to preserve ownership" when copying to GNU/Linux CIFS file systems.
They do this by working around some Linux CIFS bugs.
* cp --no-preserve=mode will correctly maintain set-group-ID bits
for created directories. Previously on systems that didn't support ACLs,
cp would have reset the set-group-ID bit on created directories.
[bug introduced in coreutils-8.20]
* join and uniq now support multi-byte characters better.
For example, 'join -tX' now works even if X is a multi-byte character,
and both programs now treat multi-byte characters like U+3000
IDEOGRAPHIC SPACE as blanks if the current locale treats them so.
* numfmt options like --suffix no longer have an arbitrary 127-byte limit.
[bug introduced with numfmt in coreutils-8.21]
* mktemp with --suffix now better diagnoses templates with too few X's.
Previously it conflated the insignificant --suffix in the error.
[bug introduced in coreutils-8.1]
* sort again handles thousands grouping characters in single-byte locales
where the grouping character is greater than CHAR_MAX. For e.g. signed
character platforms with a 0xA0 (aka  ) grouping character.
[bug introduced in coreutils-9.1]
* split --line-bytes with a mixture of very long and short lines
no longer overwrites the heap (CVE-2024-0684).
[bug introduced in coreutils-9.2]
* tail no longer mishandles input from files in /proc and /sys file systems,
on systems with a page size larger than the stdio BUFSIZ.
[This bug was present in "the beginning".]
* timeout avoids a narrow race condition, where it might kill arbitrary
processes after a failed process fork.
[bug introduced with timeout in coreutils-7.0]
* timeout avoids a narrow race condition, where it might fail to
kill monitored processes immediately after forking them.
[bug introduced with timeout in coreutils-7.0]
* wc no longer fails to count unprintable characters as parts of words.
[bug introduced in textutils-2.1]
Changes in behavior:
* base32 and base64 no longer require padding when decoding.
Previously an error was given for non padded encoded data.
* base32 and base64 have improved detection of corrupted encodings.
Previously encodings with non zero padding bits were accepted.
* basenc --base16 -d now supports lower case hexadecimal characters.
Previously an error was given for lower case hex digits.
* cp --no-clobber, and mv -n no longer exit with failure status if
existing files are encountered in the destination. Instead they revert
to the behavior from before v9.2, silently skipping existing files.
* ls --dired now implies long format output without hyperlinks enabled,
and will take precedence over previously specified formats or hyperlink
mode.
* numfmt will accept lowercase 'k' to indicate Kilo or Kibi units on input,
and uses lowercase 'k' when outputting such units in '--to=si' mode.
* pinky no longer tries to canonicalize the user's login location by default,
rather requiring the new --lookup option to enable this often slow feature.
* wc no longer ignores encoding errors when counting words.
Instead, it treats them as non white space.
New features:
* chgrp now accepts the --from=OWNER:GROUP option to restrict changes to files
with matching current OWNER and/or GROUP, as already supported by chown(1).
* chmod adds support for -h, -H,-L,-P, and --dereference options, providing
more control over symlink handling. This supports more secure handling of
CLI arguments, and is more consistent with chown, and chmod on other
systems.
* cp now accepts the --keep-directory-symlink option (like tar), to preserve
and follow existing symlinks to directories in the destination.
* cp and mv now accept the --update=none-fail option, which is similar
to the --no-clobber option, except that existing files are diagnosed,
and the command exits with failure status if existing files.
The -n,--no-clobber option is best avoided due to platform differences.
* env now accepts the -a,--argv0 option to override the zeroth argument
of the command being executed.
* mv now accepts an --exchange option, which causes the source and
destination to be exchanged. It should be combined with
--no-target-directory (-T) if the destination is a directory.
The exchange is atomic if source and destination are on a single
file system that supports atomic exchange; --exchange is not yet
supported in other situations.
* od now supports printing IEEE half precision floating point with -t fH,
or brain 16 bit floating point with -t fB, where supported by the compiler.
* tail now supports following multiple processes, with repeated --pid options.
Improvements:
* cp,mv,install,cat,split now read and write a minimum of 256KiB at a time.
This was previously 128KiB and increasing to 256KiB was seen to increase
throughput by 10-20% when reading cached files on modern systems.
* env,kill,timeout now support unnamed signals. kill(1) for example now
supports sending such signals, and env(1) will list them appropriately.
* SELinux operations in file copy operations are now more efficient,
avoiding unneeded MCS/MLS label translation.
* sort no longer dynamically links to libcrypto unless -R is used.
This decreases startup overhead in the typical case.
* wc is now much faster in single-byte locales and somewhat faster in
multi-byte locales.
- coreutils-9.4.split-CVE-2024-0684.patch: Remove now-upstream patch.
- gnulib-readutmp-under-gdm.patch: Likewise.
- gnulib-readutmp.patch: Likewise.
- coreutils-i18n.patch: Remove multi-byte patches for join and uniq, as the
upstream version now handles those tests.
Pull in gnulib module mbchar manually, as it is a dependency of mbfile,
but dropped out of the upstream dependency chain.
- coreutils-misc.patch: Remove change for gnulib-tests/test-isnanl.h.
- coreutils-fix-gnulib-time_r-tests.patch: Add upstream gnulib patch to skip
French test if TZ='Europe/Paris' does not work.
OBS-URL: https://build.opensuse.org/request/show/1163997
OBS-URL: https://build.opensuse.org/package/show/Base:System/coreutils?expand=0&rev=362
- update to 9.3:
Bug fixes:
* cp --reflink=auto (the default), mv, and install
will again fall back to a standard copy in more cases.
Previously copies could fail with permission errors on
more restricted systems like android or containers etc.
[bug introduced in coreutils-9.2]
* cp --recursive --backup will again operate correctly.
Previousy it may have issued "File exists" errors when
it failed to appropriately rename files being replaced.
[bug introduced in coreutils-9.2]
* date --file and dircolors will now diagnose a failure to read a file.
Previously they would have silently ignored the failure.
[This bug was present in "the beginning".]
* md5sum --check again correctly prints the status of each file checked.
Previously the status for files was printed as 'OK' once any file had passed.
This also applies to cksum, sha*sum, and b2sum.
[bug introduced in coreutils-9.2]
* wc will now diagnose if any total counts have overflowed.
[This bug was present in "the beginning".]
* `wc -c` will again correctly update the read offset of inputs.
Previously it deduced the size of inputs while leaving the offset unchanged.
[bug introduced in coreutils-8.27]
* Coreutils programs no longer fail for timestamps past the year 2038
on obsolete configurations with 32-bit signed time_t, because the
build procedure now rejects these configurations.
[This bug was present in "the beginning".]
Changes in behavior:
* 'cp -n' and 'mv -n' now issue an error diagnostic if skipping a file,
to correspond with -n inducing a nonzero exit status as of coreutils 9.2.
Similarly 'cp -v' and 'mv -v' will output a message for each file skipped
due to -n, -i, or -u.
New features:
* cp and mv now support --update=none to always skip existing files
in the destination, while not affecting the exit status.
This is equivalent to the --no-clobber behavior from before v9.2.
- drop fix-reflink-fallback.patch (upstream).
- add coreutils-tests-skip-cpuinfo-replaced.patch: avoid FP test failure.
OBS-URL: https://build.opensuse.org/request/show/1080971
OBS-URL: https://build.opensuse.org/package/show/Base:System/coreutils?expand=0&rev=350
- update to 9.2:
* cksum now accepts the --base64 (-b) option to print
base64-encoded checksums. It also accepts/checks such
checksums.
* cksum now accepts the --raw option to output a raw binary
checksum. No file name or other information is output in
this mode.
* cp, mv, and install now accept the --debug option to
print details on how a file is being copied.
* factor now accepts the --exponents (-h) option to print
factors in the form p^e, rather than repeating the prime p, e
times.
* ls now supports the --time=modification option, to explicitly
select the default mtime timestamp for display and sorting.
* mv now supports the --no-copy option, which causes it to fail
when asked to move a file to a different file system.
* split now accepts options like '-n SIZE' that exceed machine
integer range, when they can be implemented as if they were
infinity.
* split -n now accepts piped input even when not in round-robin
mode, by first copying input to a temporary file to determine its
size.
* wc now accepts the --total={auto,never,always,only} option
to give explicit control over when the total is output.
* 'cp --reflink=always A B' no longer leaves behind a newly
created empty file B merely because copy-on-write clones are not
supported.
* 'cp -n' and 'mv -n' now exit with nonzero status if they skip
their action because the destination exists, and likewise for 'cp
-i', 'ln -i', and 'mv -i' when the user declines. (POSIX
OBS-URL: https://build.opensuse.org/request/show/1075026
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/coreutils?expand=0&rev=149
base64-encoded checksums. It also accepts/checks such
checksums.
* cksum now accepts the --raw option to output a raw binary
checksum. No file name or other information is output in
this mode.
* cp, mv, and install now accept the --debug option to
print details on how a file is being copied.
* factor now accepts the --exponents (-h) option to print
factors in the form p^e, rather than repeating the prime p, e
times.
* ls now supports the --time=modification option, to explicitly
select the default mtime timestamp for display and sorting.
* mv now supports the --no-copy option, which causes it to fail
when asked to move a file to a different file system.
* split now accepts options like '-n SIZE' that exceed machine
integer range, when they can be implemented as if they were
infinity.
* split -n now accepts piped input even when not in round-robin
mode, by first copying input to a temporary file to determine its
size.
* wc now accepts the --total={auto,never,always,only} option
to give explicit control over when the total is output.
* 'cp --reflink=always A B' no longer leaves behind a newly
created empty file B merely because copy-on-write clones are not
supported.
* 'cp -n' and 'mv -n' now exit with nonzero status if they skip
their action because the destination exists, and likewise for 'cp
-i', 'ln -i', and 'mv -i' when the user declines. (POSIX
specifies this for 'cp -i' and 'mv -i'.)
OBS-URL: https://build.opensuse.org/package/show/Base:System/coreutils?expand=0&rev=345
* 'comm --output-delimiter="" --total' now delimits columns
in the total line with the NUL character, consistent with
NUL column delimiters in the rest of the output.
Previously no delimiters were used for the total line in
this case.
* 'cp -p' no longer has a security hole when cloning into a
dangling symbolic link on macOS 10.12 and later.
- drop gnulib-simple-backup-fix.patch (upstream)
- drop coreutils-tests-workaround-make-fdleak.patch (obsolete)
OBS-URL: https://build.opensuse.org/package/show/Base:System/coreutils?expand=0&rev=344
- remove builddisabled conditions for rings - will be done now as
BuildFlags: excludebuilds
- gnulib-simple-backup-fix.patch: Add patch to make simple backups in correct
directory; broken in 9.1. See https://bugs.gnu.org/55029
- update to 9.1:
* chmod -R no longer exits with error status when encountering symlinks.
All files would be processed correctly, but the exit status was incorrect.
* If 'cp -Z A B' checks B's status and some other process then removes B,
cp no longer creates B with a too-generous SELinux security context
before adjusting it to the correct value.
* 'cp --preserve=ownership A B' no longer ignores the umask when creating B.
Also, 'cp --preserve-xattr A B' is less likely to temporarily chmod u+w B.
* 'id xyz' now uses the name 'xyz' to determine groups, instead of xyz's uid.
* 'ls -v' and 'sort -V' no longer mishandle corner cases like "a..a" vs "a.+"
or lines containing NULs. Their behavior now matches the documentation
for file names like ".m4" that consist entirely of an extension,
and the documentation has been clarified for unusual cases.
* 'mv -T --backup=numbered A B/' no longer miscalculates the backup number
for B when A is a directory, possibly inflooping.
* cat now uses the copy_file_range syscall if available, when doing
simple copies between regular files. This may be more efficient, by avoiding
user space copies, and possibly employing copy offloading or reflinking.
* chown and chroot now warn about usages like "chown root.root f",
which have the nonstandard and long-obsolete "." separator that
causes problems on platforms where user names contain ".".
Applications should use ":" instead of ".".
* cksum no longer allows abbreviated algorithm names,
so that forward compatibility and robustness is improved.
OBS-URL: https://build.opensuse.org/request/show/972793
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/coreutils?expand=0&rev=145
directory; broken in 9.1. See https://bugs.gnu.org/55029
- update to 9.1:
* chmod -R no longer exits with error status when encountering symlinks.
All files would be processed correctly, but the exit status was incorrect.
* If 'cp -Z A B' checks B's status and some other process then removes B,
cp no longer creates B with a too-generous SELinux security context
before adjusting it to the correct value.
* 'cp --preserve=ownership A B' no longer ignores the umask when creating B.
Also, 'cp --preserve-xattr A B' is less likely to temporarily chmod u+w B.
* 'id xyz' now uses the name 'xyz' to determine groups, instead of xyz's uid.
* 'ls -v' and 'sort -V' no longer mishandle corner cases like "a..a" vs "a.+"
or lines containing NULs. Their behavior now matches the documentation
for file names like ".m4" that consist entirely of an extension,
and the documentation has been clarified for unusual cases.
* 'mv -T --backup=numbered A B/' no longer miscalculates the backup number
for B when A is a directory, possibly inflooping.
* cat now uses the copy_file_range syscall if available, when doing
simple copies between regular files. This may be more efficient, by avoiding
user space copies, and possibly employing copy offloading or reflinking.
* chown and chroot now warn about usages like "chown root.root f",
which have the nonstandard and long-obsolete "." separator that
causes problems on platforms where user names contain ".".
Applications should use ":" instead of ".".
* cksum no longer allows abbreviated algorithm names,
so that forward compatibility and robustness is improved.
* date +'%-N' now suppresses excess trailing digits, instead of always
padding them with zeros to 9 digits. It uses clock_getres and
clock_gettime to infer the clock resolution.
OBS-URL: https://build.opensuse.org/package/show/Base:System/coreutils?expand=0&rev=328
* chmod -R no longer exits with error status when encountering symlinks.
All files would be processed correctly, but the exit status was incorrect.
* If 'cp -Z A B' checks B's status and some other process then removes B,
cp no longer creates B with a too-generous SELinux security context
before adjusting it to the correct value.
* 'cp --preserve=ownership A B' no longer ignores the umask when creating B.
Also, 'cp --preserve-xattr A B' is less likely to temporarily chmod u+w B.
* 'id xyz' now uses the name 'xyz' to determine groups, instead of xyz's uid.
* 'ls -v' and 'sort -V' no longer mishandle corner cases like "a..a" vs "a.+"
or lines containing NULs. Their behavior now matches the documentation
for file names like ".m4" that consist entirely of an extension,
and the documentation has been clarified for unusual cases.
* 'mv -T --backup=numbered A B/' no longer miscalculates the backup number
for B when A is a directory, possibly inflooping.
* cat now uses the copy_file_range syscall if available, when doing
simple copies between regular files. This may be more efficient, by avoiding
user space copies, and possibly employing copy offloading or reflinking.
* chown and chroot now warn about usages like "chown root.root f",
which have the nonstandard and long-obsolete "." separator that
causes problems on platforms where user names contain ".".
Applications should use ":" instead of ".".
* cksum no longer allows abbreviated algorithm names,
so that forward compatibility and robustness is improved.
* date +'%-N' now suppresses excess trailing digits, instead of always
padding them with zeros to 9 digits. It uses clock_getres and
clock_gettime to infer the clock resolution.
* dd conv=fsync now synchronizes output even after a write error,
and similarly for dd conv=fdatasync.
* dd now counts bytes instead of blocks if a block count ends in "B".
OBS-URL: https://build.opensuse.org/package/show/Base:System/coreutils?expand=0&rev=325
- Update to 9.0.
- coreutils-i18n.patch:
* Refresh patch, and re-sync with Fedora.
- coreutils-chmod-fix-exit-status-ign-symlinks.patch: Add upstream patch to
fix a regression with the exit code of chmod introduced in 9.0.
- coreutils-skip-tests-rm-ext3-perf.patch: Add patch to skip the test
'tests/rm/ext3-perf.sh' temporarily as it hangs on OBS.
- coreutils.spec:
* Version: bump version.
* spec file cleanups (spec-cleaner run)
* Remove the above removed patches.
* Reference the above new patches.
OBS-URL: https://build.opensuse.org/request/show/923327
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/coreutils?expand=0&rev=140