]> git.ipfire.org Git - thirdparty/coreutils.git/log
thirdparty/coreutils.git
7 years agocopy: check for vulnerable target dirs
Paul Eggert [Tue, 19 Sep 2017 01:54:52 +0000 (18:54 -0700)] 
copy: check for vulnerable target dirs

* NEWS, doc/coreutils.texi (Target directory): Document this.
* src/cp.c, src/install.c, src/ln.c, src/mv.c: Include targetdir.h.
(target_directory_operand): Use the new targetdir_operand_type
function to check for vulnerable target directories.
* src/cp.c (stat_target_operand): New function.
(target_directory_operand, do_copy): Use it.
* src/local.mk (noinst_HEADERS): Add src/targetdir.h.
(src_ginstall_SOURCES, src_cp_SOURCES, src_ln_SOURCES)
(src_mv_SOURCES): Add src/targetdir.c.
* src/targetdir.c, src/targetdir.h: New files.
* tests/mv/vulnerable-target.sh: New test.
* tests/local.mk (all_root_tests): Add it.

7 years agoptx: avoid infloop due to zero-length matches with -S regex
Bernhard Voelker [Wed, 13 Sep 2017 21:37:20 +0000 (23:37 +0200)] 
ptx: avoid infloop due to zero-length matches with -S regex

* src/ptx.c (find_occurs_in_text): Die with an appropriate error
diagnostic when the given regular expression returns a match of
length 0.
* tests/misc/ptx.pl (S-infloop): Add a test.
* NEWS (Bug fixes): Mention the fix.

Fixes https://bugs.gnu.org/28417 which was detected using
Symbolic Execution techniques developed in the course of the
SYMBIOSYS research project at COMSYS, RWTH Aachen University.

7 years agomaint: post-release administrivia
Pádraig Brady [Sat, 2 Sep 2017 02:25:50 +0000 (19:25 -0700)] 
maint: post-release administrivia

* NEWS: Add header line for next release.
* .prev-version: Record previous version.
* cfg.mk (old_NEWS_hash): Auto-update.

7 years agoversion 8.28 v8.28
Pádraig Brady [Sat, 2 Sep 2017 01:53:58 +0000 (18:53 -0700)] 
version 8.28

* NEWS: Record release date.

7 years agotests: fix false failure in recent ls --hyperlink test
Pádraig Brady [Fri, 1 Sep 2017 06:52:59 +0000 (23:52 -0700)] 
tests: fix false failure in recent ls --hyperlink test

* tests/ls/hyperlink.sh: If the hostname or any part of
the absolute path would be changed due to URL encoding,
the test would fail.  Therefore simplify to remove
these components of the URL from consideration.

7 years agomaint: avoid a syntax-check failure
Pádraig Brady [Fri, 1 Sep 2017 04:29:39 +0000 (21:29 -0700)] 
maint: avoid a syntax-check failure

* .gitignore: Remove lines indicated by sc_gitignore_redundant
in a freshly checked out repo.

7 years agotests: exclude the expensive gnulib fts-tests
Pádraig Brady [Thu, 31 Aug 2017 05:49:24 +0000 (22:49 -0700)] 
tests: exclude the expensive gnulib fts-tests

* gnulib: The only change in this gnulib update
is the tagging of the fts-tests module as longrunning,
which gnulib-tool currently implicitly excludes.
This test was seen to take about 20s and 285MB.
Reported by Assaf Gordon on space restricted VMs.

7 years agotty: don't distinguish input errors
Pádraig Brady [Thu, 31 Aug 2017 03:14:22 +0000 (20:14 -0700)] 
tty: don't distinguish input errors

* src/tty.c (main): Don't distinguish ENOTTY from other errors,
because isatty() doesn't portably distinguish errors.
Solaris returns ENOENT for all input errors for example.
Musl also returns ENOENT, and ENODEV may be returned as disscussed at:
http://openwall.com/lists/musl/2017/04/06/6
* tests/misc/tty.sh: Adjust accordingly.

7 years agotests: avoid printf '0*d' construct unsupported by ash
Pádraig Brady [Thu, 31 Aug 2017 03:05:31 +0000 (20:05 -0700)] 
tests: avoid printf '0*d' construct unsupported by ash

* tests/ln/sf-1.sh: Generate specific length with space padding
which is supported.
Reported by Assaf Gordon on Alpine Linux.

7 years agotests: skip tests upon failure to set SELinux context
Pádraig Brady [Thu, 31 Aug 2017 00:16:23 +0000 (17:16 -0700)] 
tests: skip tests upon failure to set SELinux context

On some setups the root:object_r:tmp_t context is invalid.
This does indicate a limitation in the test framework,
but for now we'll relax this to skipping the tests.
The tests still run on a Fedora 25 system for example.

* tests/cp/cp-a-selinux.sh: Upon chcon error, skip rather than ERROR.
* tests/install/install-Z-selinux.sh: Likewise.
* tests/misc/chcon.sh: Likewise.
* tests/misc/runcon-no-reorder.sh: Likewise.
* tests/misc/selinux.sh: Likewise.
* tests/mkdir/restorecon.sh: Likewise.

7 years agoexpr: fix a recently introduced memory leak
Kamil Dudka [Wed, 30 Aug 2017 11:50:42 +0000 (13:50 +0200)] 
expr: fix a recently introduced memory leak

* src/expr.c (eval6): Free memory allocated by mbs_logical_substr().

Introduced in v8.27-47-ga9f2be5.  Detected by Coverity Analysis:

Error: RESOURCE_LEAK:
src/expr.c:851: leaked_storage: Variable "s" going out of scope
leaks the storage it points to.
849|             char *s = mbs_logical_substr (l->u.s, pos, len);
850|             v = str_value (s);
851|->         }
852|         freev (l);
853|         freev (i1);

7 years agobuild: fix build of renameat2 on Alpine Linux
Pádraig Brady [Wed, 30 Aug 2017 08:33:06 +0000 (01:33 -0700)] 
build: fix build of renameat2 on Alpine Linux

* gnulib: The only change included in this update
it the added check for the presence of <linux/fs.h>
which is not present on Alpine Linux by default.

7 years agotty: fix exit code with EINVAL
Pádraig Brady [Wed, 30 Aug 2017 07:55:34 +0000 (00:55 -0700)] 
tty: fix exit code with EINVAL

* src/tty.c (main): All systems mention that isatty()
man return EINVAL as well as (the POSIX compliant) ENOTTY.
Also Centos 6 was seen to return EINVAL from ttyname().
* tests/misc/tty.sh: Fix a test issue where we assume
standard input is always a valid tty.
Reported by Assaf Gordon on OpenSolaris 5.10 and 5.11,
and Centos 6.5

7 years agoruncon: revert "disable use of the TIOCSTI ioctl"
Pádraig Brady [Wed, 30 Aug 2017 07:27:41 +0000 (00:27 -0700)] 
runcon: revert "disable use of the TIOCSTI ioctl"

This reverts commit v8.27-97-g8cb06d4 because
the setsid() fallback was not implemented correctly
and disabling the ioctl was not a complete solution
to the security issue of the child being passed
the tty of the parent.

Given runcon is not really a sandbox command,
the advice is to use `runcon ... setsid ...`
to avoid this particular issue.

7 years agostat: fix determination of max name length on BSD systems
Pádraig Brady [Wed, 30 Aug 2017 06:42:54 +0000 (23:42 -0700)] 
stat: fix determination of max name length on BSD systems

We only use one of statfs or statvfs for `stat -f`
and on the BSDs we use statfs which doesn't have the
f_namelen member.  However on OpenBSD and later FreeBSD
systems statfs does provide f_namemax, so use that.

* NEWS: Mention the improvement for OpenBSD and FreeBSD.
* m4/stat-prog.m4: Check for f_namemax in the statfs struct.
* src/stat.c: Return '?' rather than '*' when we can't
determine the max length of the file system.
* tests/ln/sf-1.sh: This test was failing on all BSDs
due to '*' being returned for the max length which
caused the test to attempt to create 1Mi+1 names.
The test now uses a short name when we can't determine
the max name length to use.

Reported by Assaf Gordon on various BSD based systems.

7 years agostat,tail: support "AAFS" AppArmor file system
Pádraig Brady [Tue, 29 Aug 2017 08:04:32 +0000 (01:04 -0700)] 
stat,tail: support "AAFS" AppArmor file system

* src/stat.c (human_fstype): This file system is used
to manage AppArmor policy in the Linux kernel.

7 years agoall: update gnulib submodule to latest
Pádraig Brady [Tue, 29 Aug 2017 05:14:06 +0000 (22:14 -0700)] 
all: update gnulib submodule to latest

* bootstrap: Sync timestamp update.

7 years agoruncon: disable use of the TIOCSTI ioctl
Pádraig Brady [Mon, 28 Aug 2017 08:57:54 +0000 (01:57 -0700)] 
runcon: disable use of the TIOCSTI ioctl

Similar to the issue with SELinux sandbox (CVE-2016-7545),
children of runcon can inject arbitrary input to the terminal
that would be run at the originating terminal privileges.

The new libseccomp dependency is widely available and used
on modern SELinux systems, but is not available by default
on older systems like RHEL6 etc.

* m4/jm-macros.m4: Check for libseccomp and
warn if unavailable on selinux supporting systems.
* src/local.mk: Link runcon with -lseccomp.
* src/runcon.c (disable_tty_inject): A new function to
disable use of the TIOCSTI using libseccomp, or with setsid()
where libseccomp is unavailable.
* tests/misc/runcon-no-inject.sh: A new test that uses
python to make the TIOCSTI call, and ensure that doesn't succeed.
* tests/local.mk: Reference the new test
* NEWS: Mention the fix.
Addresses http://bugs.gnu.org/24541

7 years agols: support --hyperlink to output file:// URIs
Pádraig Brady [Mon, 21 Aug 2017 10:53:36 +0000 (03:53 -0700)] 
ls: support --hyperlink to output file:// URIs

Terminals such as iTerm2 and VTE based terminals
(as of version 0.49.1), support hyperlinks when
passed terminals codes as described at:
https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda

* src/ls.c (gobble_file): Allocate an absolute file name to output.
(quote_name): Output the absolute name with the appropriate codes.
(file_escape): A new function to encode file names as per rfc8089.
(main): Handle the new option and call the file_escape_init() helper.
Disable --dired when --hyperlink is specified.
(print_dir): Get the absolute file name here too, so that the
directory name can be linkified.
* NEWS: Mention the new feature.
* tests/ls/hyperlink.sh: Add a new test.
* tests/local.mk: Reference the new test.
* doc/coreutils.texi (ls invocation): Describe --hyperlink.

7 years agodoc: remove older ChangeLog items
Pádraig Brady [Tue, 29 Aug 2017 04:09:08 +0000 (21:09 -0700)] 
doc: remove older ChangeLog items

This saves about 0.5MB uncompressed from the tarball.

* Makefile.am: Following on from v8.26-34-g2c64bc8
update the oldest documented version to 8.18 which
is now about 5 years old.  Also remove older ChangeLogs
that were previously thought to be for changes not
in the git history, but are adequately recorded upon review.
* build-aux/ChangeLog-2007: Remove file.
* lib/ChangeLog-2007: Likewise.
* m4/ChangeLog-2007: Likewise.

7 years agoenv: add --chdir option
Colin Watson [Sun, 27 Aug 2017 07:16:21 +0000 (08:16 +0100)] 
env: add --chdir option

This is useful when chaining with other commands that run commands in a
different context, while avoiding using the shell to cd, and thus
having to consider shell quoting the chained command.

* NEWS (New features): Document the new option.
* doc/coreutils.texi (env invocation): Likewise.
* src/env.c (usage): Likewise.
(main): Implement the new option.
* tests/misc/env.sh: Test the new option.

7 years agotests: don't fail tests when failing to write files
Pádraig Brady [Tue, 29 Aug 2017 04:51:37 +0000 (21:51 -0700)] 
tests: don't fail tests when failing to write files

* tests/sample-test: Use framework_error_ rather than fail=1
* tests/chown/deref.sh: Likewise.
* tests/chown/preserve-root.sh: Likewise.
* tests/cp/src-base-dot.sh: Likewise.
* tests/dd/unblock-sync.sh: Likewise.
* tests/du/2g.sh: Likewise.
* tests/du/inacc-dest.sh: Likewise.
* tests/du/one-file-system.sh: Likewise.
* tests/fmt/goal-option.sh: Likewise.
* tests/ln/hard-backup.sh: Likewise.
* tests/ls/color-dtype-dir.sh: Likewise.
* tests/ls/m-option.sh: Likewise.
* tests/ls/stat-dtype.sh: Likewise.
* tests/ls/time-style-diag.sh: Likewise.
* tests/ls/x-option.sh: Likewise.
* tests/misc/chcon.sh: Likewise.
* tests/misc/nohup.sh: Likewise.
* tests/misc/od-N.sh: Likewise.
* tests/misc/sort-compress.sh: Likewise.
* tests/misc/tac-continue.sh: Likewise.
* tests/misc/time-style.sh: Likewise.
* tests/mv/backup-dir.sh: Likewise.
* tests/mv/dir2dir.sh: Likewise.
* tests/rm/dir-no-w.sh: Likewise.
* tests/rm/dir-nonrecur.sh: Likewise.
* tests/rm/inaccessible.sh: Likewise.
* tests/rm/interactive-always.sh: Likewise.
* tests/rm/interactive-once.sh: Likewise.
* tests/rm/rm3.sh: Likewise.
* tests/rm/v-slash.sh: Likewise.
* tests/touch/relative.sh: Likewise.

7 years agodf: avoid stat() for dummy file systems with -l
Josef Cejka [Mon, 31 Jul 2017 23:50:34 +0000 (01:50 +0200)] 
df: avoid stat() for dummy file systems with -l

When systemd is configured to automount a remote file system - see
'man systemd.automount(5)', then the mount point is initially
mounted by systemd with the file system type "autofs".
When the resource is used later on, then the wanted file system is
mounted over that mount point on demand.
'df -l' triggered systemd to mount the file system because it called
stat() on the mount point.
Instead of single-casing "autofs" targets, we can avoid stat()ing
all dummy file systems (which includes "autofs"), because those are
skipped later on in get_dev() anyway.

*src/df.c (filter_mount_list): Also skip dummy file systems unless
the -a option or a specific target are given.
* NEWS: Mention the fix.

Co-authored-by: Bernhard Voelker <mail@bernhard-voelker.de>
Fixes http://bugzilla.suse.com/show_bug.cgi?id=1043059

7 years agodoc: add 'realpath usage examples' section
Assaf Gordon [Wed, 28 Jun 2017 00:20:17 +0000 (20:20 -0400)] 
doc: add 'realpath usage examples' section

* doc/coreutils.texi (Realpath usage examples): New section.

7 years agodoc: fix realpath index entry
Assaf Gordon [Tue, 27 Jun 2017 23:53:58 +0000 (19:53 -0400)] 
doc: fix realpath index entry

The 'readlink' node has '@findex realpath' in it. This results in
    info doc/coreutils.info realpath
incorrectly jumping to the 'readlink' node (instead of the 'realpath'
node). Change it to @cindex instead.

* doc/coreutils.texi (readlink): Change '@findex realpath' to @cindex.

7 years agorealpath: improve usage description for --relative-{to,base}
Assaf Gordon [Sat, 24 Jun 2017 23:47:26 +0000 (19:47 -0400)] 
realpath: improve usage description for --relative-{to,base}

* src/realpath.c (usage): Explicitly say 'DIR' instead of 'FILE' for
--relative-{to,base} parameters, to avoid giving the impression
that regular files can be used as relative base.
* doc/coreutils.texi (realpath): Same.

7 years agols: consistently quote symlink targets
Pádraig Brady [Thu, 24 Aug 2017 07:18:41 +0000 (00:18 -0700)] 
ls: consistently quote symlink targets

* src/ls.c (gobble_file): Disable the optimization to avoid quoting
if the symlink target itself needs quoting.  This was introduced
with the quoting alignment adjustments in v8.25-106-g01971c0
* tests/ls/symlink-quote.sh: Add a test.
* tests/local.mk: Reference the test.
* NEWS: Mention the fix.

7 years agotail: reinstate inotify use with FIFOs
Pádraig Brady [Tue, 22 Aug 2017 04:00:01 +0000 (21:00 -0700)] 
tail: reinstate inotify use with FIFOs

commit v8.27-44-g18f6b22 was too aggressive in
only allowing inotify use with regular files. This will
support responsive processing of `tail -f fifo | ...`

* src/tail.c (any_non_regular): Adjust to allow FIFOs
since inotify supports these well.
* tests/tail-2/inotify-only-regular.sh: Adjust comment.

7 years agomaint: avoid a syntax check failure
Pádraig Brady [Sat, 19 Aug 2017 22:45:13 +0000 (15:45 -0700)] 
maint: avoid a syntax check failure

* src/sort.c: Don't include stdio--.h as fopen() is no longer used.

7 years agotests: fix issues on alpine linux
Pádraig Brady [Sat, 19 Aug 2017 22:36:54 +0000 (15:36 -0700)] 
tests: fix issues on alpine linux

* tests/misc/seq-epipe.sh: Remove stale comment.
* tests/misc/sort-debug-warn.sh: musl doesn't indicate a set_locale()
failure with missing locales, so avoid a test portion in that case.
* tests/misc/wc-files0.sh: Avoid a bug on older ash implementations.
Addresses http://bugs.gnu.org/28054

7 years agoptx: fix some integer overflow bugs
Paul Eggert [Thu, 17 Aug 2017 19:02:16 +0000 (12:02 -0700)] 
ptx: fix some integer overflow bugs

Problem reported by Lukas Zachar at:
http://bugzilla.redhat.com/1482445
* src/ptx.c (line_width, gap_size, maximum_word_length)
(reference_max_width, half_line_width, before_max_width)
(keyafter_max_width, truncation_string_length, compare_words)
(compare_occurs, search_table, find_occurs_in_text, print_spaces)
(fix_output_parameters, define_all_fields):
Use ptrdiff_t, not int, for object offsets and sizes.
(WORD, OCCURS): Use ptrdiff_t, not short int.
(WORD_TABLE, number_of_occurs, generate_all_output):
Prefer ptrdiff_t to size_t where either will do.
(total_line_count, file_line_count, OCCURS, fix_output_parameters)
(define_all_fields):
Use intmax_t, not int, for line counts.
(DELTA): Remove.  All uses changed.
(OCCURS, find_occurs_in_text, fix_output_parameters):
Use int, not size_t, for file indexes.
(tail_truncation, before_truncation, keyafter_truncation)
(head_truncation, search_table, define_all_fields)
(generate_all_output):
Use bool for booleans.
(digest_word_file, find_occurs_in_text):
Use x2nrealloc instead of checking for overflow by hand.
(find_occurs_in_text, fix_output_parameters, define_all_fields):
Omit unnecessary cast.
(fix_output_parameters): Don’t assume integers fit in 11 digits.
(fix_output_parameters, define_all_fields):
Use sprintf return value rather than calling strlen.
(define_all_fields): Do not rely on sprintf to generate a string
that may contain more than INT_MAX bytes.
(main): Use xstrtoimax, not xstrtoul.
Use xnmalloc to catch integer overflow.

7 years agonohup: simplify by using fcntl
Paul Eggert [Thu, 17 Aug 2017 16:30:37 +0000 (09:30 -0700)] 
nohup: simplify by using fcntl

* src/nohup.c: Do not include cloexec.h.
(main): Use fcntl rather than dup + set_cloexec_flag.

7 years agosort: use pthread_sigmask, not sigprocmask
Paul Eggert [Thu, 17 Aug 2017 16:28:59 +0000 (09:28 -0700)] 
sort: use pthread_sigmask, not sigprocmask

POSIX says sigprocmask has unspecified behavior in a multithreaded
program like ‘sort’.
* src/sort.c (pthread_sigmask) [GNULIB_defined_pthread_functions]:
New macro, for use when ‘sort’ is not multithreaded.
(cs_enter, cs_leave): Use it.  Pass address, not value, as
this is typically a tad faster.  All callers changed.

7 years agosort: minor cleanups
Paul Eggert [Thu, 17 Aug 2017 15:13:06 +0000 (08:13 -0700)] 
sort: minor cleanups

* src/sort.c (move_fd): Rename from move_fd_or_die,
since it no longer can die.

7 years agosort: file descriptor discipline
Paul Eggert [Thu, 17 Aug 2017 15:03:57 +0000 (08:03 -0700)] 
sort: file descriptor discipline

Use O_CLOEXEC when creating file descriptors, so that subsidiary
processes do not inherit file descriptors that they do not need.
This is helpful for ‘sort’, as it is a multithreaded program that
forks and execs.
* bootstrap.conf (gnulib_modules): Add mkostemp, open, pipe2.
* src/sort.c (create_temp_file): Open temporary file with O_CLOEXEC.
(stream_open): Open the stream with O_CLOEXEC.
(pipe_fork): Create the pipe with O_CLOEXEC.
(check_output): Open the output file with O_CLOEXEC.
(main): Use xfopen/xfclose to handle --files0-from, so that
O_CLOEXEC is used properly.  This is simpler anyway.
* tests/misc/sort-files0-from.pl: Adjust to change in diagnostic
wording.

7 years agobuild: update gnulib submodule to latest
Paul Eggert [Wed, 16 Aug 2017 21:19:50 +0000 (14:19 -0700)] 
build: update gnulib submodule to latest

7 years agokill: fix signal number to name lookup on AIX
Pádraig Brady [Sun, 23 Jul 2017 10:25:32 +0000 (03:25 -0700)] 
kill: fix signal number to name lookup on AIX

* src/operand2sig.c (operand2sig): AIX uses a different bit pattern
in the returned status from the wait() functions and from shells.
Therefore hardcode the selection of the lower bits of the number.
* NEWS: Mention the fix.

7 years agobuild: use the appropriate single file include option with xlc
Pádraig Brady [Fri, 4 Aug 2017 06:39:26 +0000 (23:39 -0700)] 
build: use the appropriate single file include option with xlc

* configure.ac: Set USE_XLC_INCLUDE when __xlc__ is defined.
* src/local.mk: Use it to select the appropriate include option.
Reported by Michael Felt.

7 years agotests: avoid false failures on AIX
Pádraig Brady [Fri, 4 Aug 2017 04:20:08 +0000 (21:20 -0700)] 
tests: avoid false failures on AIX

* tests/ln/sf-1.sh: Limit the symlink size to 1MiB
to avoid memory exhaustion seen on NFS on AIX, giving:
  + printf '%0*d' 4294967296 0
  + ./tests/ln/sf-1.sh: line 38: printf: warning: 0: Result too large
* tests/id/setgid.sh: Skip the test when the adjusted gid
would equal 4294967295, as that's reserved on AIX.
Reported by Michael Felt.

7 years agosort: handle musl locale differences in --debug reporting
Pádraig Brady [Sun, 13 Aug 2017 07:45:32 +0000 (00:45 -0700)] 
sort: handle musl locale differences in --debug reporting

* src/sort.c (main): Don't assume hard_LC_COLLATE implies
a successful setting of the locale as musl defaults to
UTF8 when failing to set the specified locale.
* tests/misc/sort-debug-warn.sh: Adjust for the now
separated locale debug info and map the musl specific
message back to the common case.
Addresses https://bugs.gnu.org/28054

7 years agoseq: produce consistent error messages upon write error
Pádraig Brady [Sun, 13 Aug 2017 07:18:43 +0000 (00:18 -0700)] 
seq: produce consistent error messages upon write error

* src/seq.c (io_error): Use the same error message as would
be generated at exit time when closing the stdout stream.
The inconsistency was added with commit v8.25-26-gc92585b.
This was noticed due to an inconsistency in the expected
error message generated by seq on musl libc.
Addresses https://bugs.gnu.org/28054

7 years agotests: fix false failure with large printf formats
Pádraig Brady [Sun, 13 Aug 2017 06:53:33 +0000 (23:53 -0700)] 
tests: fix false failure with large printf formats

* tests/misc/printf-surprise.sh: With musl libc the
large printf format does succeed, outputting data.
To avoid SIGPIPE being generated we ignore that signal
and then handle the subsequent EPIPE error.
Addresses https://bugs.gnu.org/28054

7 years agobuild: adjust warning options to work with latest GCC
Jim Meyering [Sat, 12 Aug 2017 20:51:19 +0000 (13:51 -0700)] 
build: adjust warning options to work with latest GCC

* configure.ac: Disable some new warnings to avoid false positives.
Building with warnings enabled and latest gcc would evoke build
failure without these changes.  Disable the following in coreutils
proper: -Wformat-overflow=2 -Wformat-truncation=2, and
disable these for gnulib: -Wformat-truncation=2 -Wduplicated-branches

7 years agognulib: update to latest and adjust gl/modules/tempname.diff
Jim Meyering [Sat, 12 Aug 2017 00:33:15 +0000 (17:33 -0700)] 
gnulib: update to latest and adjust gl/modules/tempname.diff

* gnulib: Update to latest.
* gl/modules/tempname.diff: This patch failed to apply.
Adjust it to reflect removal of the secure_getenv dependency.

7 years agochroot: fix typo in preceding change: didn't compile
Jim Meyering [Sat, 12 Aug 2017 00:47:41 +0000 (17:47 -0700)] 
chroot: fix typo in preceding change: didn't compile

* src/chroot.c (usage): Add backslashes.

7 years agodoc: correct technicality in chroot's --help output
Jim Meyering [Thu, 10 Aug 2017 14:42:56 +0000 (07:42 -0700)] 
doc: correct technicality in chroot's --help output

* src/chroot.c (usage): Use correct quoting in descriptive diagnostic.
We would run `"$SHELL" -i`, not `${SHELL} -i`.

8 years agodoc: fix join example
Assaf Gordon [Tue, 8 Aug 2017 16:22:32 +0000 (10:22 -0600)] 
doc: fix join example

* doc/coreutils.texi (join invocation): Fix incorrect output in example.
Reported by Phlosioneer in https://bugs.gnu.org/28014 .

8 years agobuild: update gnulib submodule to latest
Paul Eggert [Thu, 3 Aug 2017 23:30:44 +0000 (16:30 -0700)] 
build: update gnulib submodule to latest

8 years agocopy: more-accurate warning about destruction
Paul Eggert [Thu, 3 Aug 2017 20:44:53 +0000 (13:44 -0700)] 
copy: more-accurate warning about destruction

* src/copy.c (copy_internal):
* tests/cp/backup-is-src.sh, tests/mv/backup-is-src.sh:
Say "might destroy", not "would destroy".

8 years agomaint: avoid a syntax-check failure
Pádraig Brady [Thu, 3 Aug 2017 03:20:22 +0000 (20:20 -0700)] 
maint: avoid a syntax-check failure

* src/shred.c (wipename): As per the comment, the arguments
to error() are sufficiently quoted, so split the call over
multiple lines to avoid the syntax-check.

8 years agobuild: update gnulib submodule to latest
Paul Eggert [Wed, 2 Aug 2017 18:10:06 +0000 (11:10 -0700)] 
build: update gnulib submodule to latest

8 years agocopy: go back to failing 'cp --backup a~ a'
Paul Eggert [Tue, 1 Aug 2017 20:14:03 +0000 (13:14 -0700)] 
copy: go back to failing 'cp --backup a~ a'

Suggested by Kamil Dudka in:
http://lists.gnu.org/archive/html/coreutils/2017-07/msg00072.html
* NEWS: Document the changed nature of the fix.
* doc/coreutils.texi, tests/cp/backup-is-src.sh:
* tests/mv/backup-is-src.sh: Revert previous change.
* src/copy.c (source_is_dst_backup): New function.
(copy_internal): Use it.  Fail instead of falling back on numbered
backups when it looks like the backup will overwrite the source.
Although this reintroduces a race, it's more compatible with
previous behavior.

8 years agocopy: sanity-check --suffix
Paul Eggert [Mon, 31 Jul 2017 00:11:24 +0000 (17:11 -0700)] 
copy: sanity-check --suffix

* src/cp.c, src/install.c, src/ln.c, src/mv.c (main):
Use set_simple_backup_suffix, to sanity-check the user-supplied
backup suffix.

8 years agocopy: make backup files more reliably
Paul Eggert [Mon, 31 Jul 2017 00:11:24 +0000 (17:11 -0700)] 
copy: make backup files more reliably

* NEWS, doc/coreutils.texi (Backup options): Document the change.
* bootstrap.conf (gnulib_modules): Add backup-rename.
* src/copy.c (copy_internal): Silently switch to numbered backups
if a simple backup might lose data.  Use backup_file_rename
to avoid races with numbered backups.
* tests/cp/backup-is-src.sh, tests/mv/backup-is-src.sh:
Adjust to match new behavior.

8 years agoshred: avoid rename race
Paul Eggert [Mon, 31 Jul 2017 00:11:24 +0000 (17:11 -0700)] 
shred: avoid rename race

Use renameat2 to avoid a rename race condition, on recent-enough
GNU/Linux.
* bootstrap.conf (gnulib_modules): Add renameat2.
* src/shred.c: Include renameat2.h.
(wipename): Use renameat2 instead of rename.

8 years agobuild: update gnulib submodule to latest
Paul Eggert [Mon, 31 Jul 2017 00:11:24 +0000 (17:11 -0700)] 
build: update gnulib submodule to latest

8 years agomaint: fix grammar in a shred.c comment
Jim Meyering [Sun, 23 Jul 2017 18:04:15 +0000 (20:04 +0200)] 
maint: fix grammar in a shred.c comment

* src/shred.c: Remove spurious "to" in an old comment.

8 years agomaint: fix recent syntax-check failures
Pádraig Brady [Sun, 23 Jul 2017 19:30:49 +0000 (12:30 -0700)] 
maint: fix recent syntax-check failures

* .gitignore: Add /lib/utime.h from the recent gnulib update.
* src/nproc.c (usage): Adjust spacing to placate help2man.

8 years agoshred: remove redundant zeroing of freed memory
Pádraig Brady [Sun, 23 Jul 2017 08:06:33 +0000 (01:06 -0700)] 
shred: remove redundant zeroing of freed memory

* src/shred.c (dopass): shred used to read the input file,
and so needed to ensure internal memory was cleared.
This is no longer the case since SH-UTILS-1_16f-260-gf381610
so avoid this redundant clearing.
(do_wipefd): Likewise.
* NEWS: Remove the recent mention of this issue.

8 years agomaint: resync with blake2 upstream
Pádraig Brady [Sun, 23 Jul 2017 08:50:37 +0000 (01:50 -0700)] 
maint: resync with blake2 upstream

* src/blake2/blake2-impl.h: Don't use the equivalent explicit_bzero().

8 years agotests: avoid a false failure on AIX
Pádraig Brady [Sun, 23 Jul 2017 08:54:03 +0000 (01:54 -0700)] 
tests: avoid a false failure on AIX

* tests/misc/sync.sh: Normalize the error messages
when syncing a non read/write directory, as AIX
gives the "Is a directory" error.
Also ensure that sync(1) returns an error for this
case on all systems.

8 years agoshred: use explicit_bzero
Paul Eggert [Thu, 20 Jul 2017 21:01:14 +0000 (14:01 -0700)] 
shred: use explicit_bzero

* NEWS: Document this.
* bootstrap.conf (gnulib_modules): Add explicit_bzero.
* gl/lib/randint.c (randint_free):
* gl/lib/randread.c (randread_free):
* src/blake2/blake2-impl.h (secure_zero_memory):
* src/shred.c (dopass, do_wipefd):
Prefer explicit_bzero to memset when erasing secrets.

8 years agobuild: update gnulib submodule to latest
Paul Eggert [Thu, 20 Jul 2017 20:49:06 +0000 (13:49 -0700)] 
build: update gnulib submodule to latest

8 years agonproc: fix indentation of usage output
Andreas Schwab [Sun, 9 Jul 2017 07:17:13 +0000 (09:17 +0200)] 
nproc: fix indentation of usage output

* src/nproc.c (usage): Align output.

8 years agogroups: do not exit early
Jim Meyering [Sat, 8 Jul 2017 11:01:55 +0000 (13:01 +0200)] 
groups: do not exit early

Most programs take care to operate on all command-line-specified
operands before exiting.  That is an important feature that allows
to identify all problems with the first run.  However, groups would
exit upon the first problematic user name.
Bug introduced via commit v6.10-56-g167b8025ac.
* src/groups.c (main): Do not exit immediately upon error.
* tests/misc/groups-process-all.sh: New file. Test for this.
* tests/local.mk (all_tests): Add it.
* NEWS (Bug fixes): Mention this.

8 years agotests: groups-dash.sh: avoid false failure
Jim Meyering [Sat, 8 Jul 2017 10:01:34 +0000 (12:01 +0200)] 
tests: groups-dash.sh: avoid false failure

* tests/misc/groups-dash.sh: Avoid false failure on a system for which
"none" is a valid user name.  The first invocation would succeed, and
the second would fail with "groups: ‘--’: no such user".
Use a user name that cannot exist.

8 years agodoc: tweak wording
Jim Meyering [Sat, 3 Jun 2017 04:50:04 +0000 (21:50 -0700)] 
doc: tweak wording

* NEWS (Bug fixes): Tweak wording of the mv/cp-vs-symlink-ownership
entry and the one about df.

8 years agoexpr: add multibyte support
Assaf Gordon [Wed, 28 Jun 2017 01:23:52 +0000 (01:23 +0000)] 
expr: add multibyte support

Discussed in https://bugs.gnu.org/26779 .

* NEWS: Mention the improvement.
* bootstrap.conf: Add gnulib modules mbslen,mbschr.
* src/expr.c (mbs_logical_substr): New function to return a substring
based on logical character positions (instead of bytes).
(mbs_logical_cspn): Similar to strcspn/mbscspn, but returns number of
logical characters instead of byte offset.
(mbs_offset_to_chars): New function to return number of logical
characters fitting in a given byte offset.
(docolon): Report matched logical characters instead of bytes.
(eval6): For length/substr/index operations, use logical characters
instead of bytes by calling the above new functions.
* tests/misc/expr.pl: Repeat all tests with non-C locale to detect any
regressions.
* tests/misc/expr-multibyte.pl: New tests with multibyte input.
* tests/local.mk: Add new test file.

8 years agomaint: avoid spurious "make distcheck" failure
Jim Meyering [Tue, 20 Jun 2017 14:53:17 +0000 (07:53 -0700)] 
maint: avoid spurious "make distcheck" failure

When the generated file, doc/constants.texi, happens to be older than
doc/coreutils.info, it will not be updated until/unless its generated
contents change.  This is due to way that rule is careful to update
the file, to avoid provoking a pointless rerunning of makeinfo.

Note that this does not happen when one first runs "make distclean",
as recommended in README-release.  However, I sometimes run it as
a more-rigorous "make check", and shouldn't have to manually run
"make distclean" first, in that case.

Before this change, one could reproduce the failure by running
`touch -dyesterday doc/constants.texi && make distcheck`.  It would
fail with "makeinfo: could not open ../../doc/coreutils.info-t
for writing: Permission denied"
* Makefile.am (dist-hook): Touch the two generated files, so that
they cannot be out of date wrt doc/coreutils.texi.

8 years agomaint: use C99 for loop initial declarations where possible
Pádraig Brady [Sat, 17 Jun 2017 21:54:23 +0000 (14:54 -0700)] 
maint: use C99 for loop initial declarations where possible

This results in a net reduction of about 120 lines.

8 years agotail: only use inotify with regular files
Pádraig Brady [Sat, 17 Jun 2017 06:50:47 +0000 (23:50 -0700)] 
tail: only use inotify with regular files

* src/tail.c (any_non_regular): A new function to check passed files.
(main): Use the above to skip inotify if any non regular files passed
like /dev/tty or /dev/ttyUSB0 etc.
* tests/tail-2/inotify-only-regular.sh: A new test.
* tests/local.mk: Reference the new test.
* NEWS: Mention the bug fix.
Fixes http://bugs.gnu.org/21265 and http://bugs.gnu.org/27368

8 years agotail: with -f don't warn if doing a blocking read of a tty
Pádraig Brady [Thu, 15 Jun 2017 09:41:14 +0000 (02:41 -0700)] 
tail: with -f don't warn if doing a blocking read of a tty

* src/tail.c: (main): Only issue the warning about -f being
ineffective when we're not going into simple blocking mode.
* tests/tail-2/follow-stdin.sh: Ensure the warning is output correctly.
Fixes http://bugs.gnu.org/27368

8 years agotail: exit promptly when output no longer writable
Pádraig Brady [Wed, 7 Jun 2017 08:00:28 +0000 (01:00 -0700)] 
tail: exit promptly when output no longer writable

This will support use cases like:

  tail -f file.log | grep -q trigger &&
  process_immediately

* src/tail.c (check_output_alive): A new function that
uses select on fifos or pipes to detect if they're broken.
(tail_forever): Call check_output_alive() periodically.
(tail_forever_inotify): Merge the select() call from
check_output_alive() into the select() originally present
for the --pid case, and adjust accordingly.
* tests/tail-2/pipe-f.sh: Add test cases.
* NEWS: Mention the improvement.

8 years agomaint: update to work with GCC7's -Werror=implicit-fallthrough=5
Jim Meyering [Sat, 10 Jun 2017 17:02:31 +0000 (10:02 -0700)] 
maint: update to work with GCC7's -Werror=implicit-fallthrough=5

* src/system.h (FALLTHROUGH): Define.
* src/cp.c (main): Use new FALLTHROUGH macro in place of comments.
* src/basename.c (main): Likewise.
* src/dircolors.c (append_quoted): Likewise.
* src/echo.c (main): Likewise.
* src/fold.c (main): Likewise.
* src/join.c (main): Likewise.
* src/kill.c (main): Likewise.
* src/ls.c (get_funky_string, gobble_file): Likewise.
* src/sort.c (parse_field_count, main): Likewise.
* src/stat.c (print_it): Likewise.
* src/tail.c (parse_obsolete_option): Likewise.
* src/test.c (posixtest): Likewise.
* src/wc.c (wc): Likewise.
* src/who.c (main): Likewise.

8 years agotail: with --pid, ensure all inotify events are processed
Pádraig Brady [Wed, 7 Jun 2017 07:17:57 +0000 (00:17 -0700)] 
tail: with --pid, ensure all inotify events are processed

* NEWS: Mention the bug fix.
* src/tail.c (tail_forever_inotify): With --pid, avoid waiting
for new events if there are still events to process.
* tests/tail-2/inotify-dir-recreate.sh: Adjust to trigger.

8 years agotests: fix issues with recently added tail test
Pádraig Brady [Wed, 7 Jun 2017 07:02:23 +0000 (00:02 -0700)] 
tests: fix issues with recently added tail test

* tests/tail-2/inotify-dir-recreate.sh: Skip when
inotify is not usable.  Also remove a bash specific &> construct.

8 years agocopy: don't fail when unable to chown symlinks
Pádraig Brady [Sat, 3 Jun 2017 04:50:04 +0000 (21:50 -0700)] 
copy: don't fail when unable to chown symlinks

* src/copy.c (copy_internal): Honor the x->require_preserve flag
for symlinks as we do for ordinary files, so we don't exit with
failure upon failure to chown a symbolic link.
* NEWS: Mention the bug fix.

8 years agodoc: mention `setpriv --no-new-privs` feature in runcon info
Sebastian Kisela [Mon, 29 May 2017 12:17:07 +0000 (14:17 +0200)] 
doc: mention `setpriv --no-new-privs` feature in runcon info

* doc/coreutils.texi (runcon invocation): Mention setpriv usage.
Discussed at https://bugzilla.redhat.com/1360903

8 years agomv: distinguish copy and rename operations with --verbose
Pádraig Brady [Thu, 18 May 2017 01:05:27 +0000 (02:05 +0100)] 
mv: distinguish copy and rename operations with --verbose

* src/copy.c (copy_internal): In x->move_mode distinguish
whether we're copying, creating directory, or renaming.
* tests/mv/backup-dir.sh: Adjust to new output.
* tests/mv/mv-n.sh: Likewise.
* tests/mv/mv-special-1.sh: Likewise.
* NEWS: Mention the improvement.
Fixes http://bugs.gnu.org/26971

8 years agouptime: remove inconsistent AM/PM from current time
Prateek saxena [Thu, 11 May 2017 11:46:02 +0000 (12:46 +0100)] 
uptime: remove inconsistent AM/PM from current time

* src/uptime.c (main): 00-23 was always used for the hour component
of the current time, so remove the AM/PM output (which was only
present in some locales anyway).  Also add seconds to the time
to be more consistent with the usual procps-ng uptime implementation
on GNU/Linux.
* NEWS: Mention the fix.
Fixes http://bugs.gnu.org/26783

8 years agomaint: fix various typos in recent commits
Pádraig Brady [Thu, 4 May 2017 01:22:41 +0000 (18:22 -0700)] 
maint: fix various typos in recent commits

* NEWS: Grammar fixes.
* HACKING: Likewise.

8 years agodoc: Fixed typo in timeout man page
Jaak Ristioja [Wed, 3 May 2017 11:37:56 +0000 (14:37 +0300)] 
doc: Fixed typo in timeout man page

* man/timeout.x: Correct spelling of "currently".
Fixes http://bugs.gnu.org/26762

8 years agodoc: update the instructions for generating a coverage report
Pádraig Brady [Sun, 30 Apr 2017 03:53:16 +0000 (20:53 -0700)] 
doc: update the instructions for generating a coverage report

* HACKING: Change from explicit instructions to using gnulib
provided coverage testing targets.  Also include instructions
for adding root only tests to the report.
Fixes http://bugs.gnu.org/26709

8 years agodd: simplify translator’s jobs
Paul Eggert [Thu, 27 Apr 2017 21:49:00 +0000 (14:49 -0700)] 
dd: simplify translator’s jobs

* src/dd.c (print_xfer_stats): Format the SI units directly,
without translating them, to simplify the translators’ jobs.
See Bug#26621.

8 years agodate,touch: test and document large TZ security issue
Pádraig Brady [Thu, 27 Apr 2017 03:51:39 +0000 (20:51 -0700)] 
date,touch: test and document large TZ security issue

Add a test for CVE-2017-7476 which was fixed in gnulib at:
http://git.sv.gnu.org/gitweb/?p=gnulib.git;a=commitdiff;h=94e01571

* tests/misc/date-tz.sh: Add a new test which overwrites enough
of the heap to trigger a segfault, even without ASAN enabled.
* tests/local.mk: Reference the new test.
* NEWS: Mention the bug fix.

8 years agobuild: update gnulib submodule to latest
Pádraig Brady [Thu, 27 Apr 2017 03:42:37 +0000 (20:42 -0700)] 
build: update gnulib submodule to latest

* .gitignore: Add new entry as indicated by `make syntax-check`.

8 years agodd: status=progress outputs "6 s", not "6.00001 s"
Paul Eggert [Mon, 24 Apr 2017 07:06:00 +0000 (00:06 -0700)] 
dd: status=progress outputs "6 s", not "6.00001 s"

Problem reported by Benno Schulenberg (Bug#26621).
* NEWS: Document this.
* src/dd.c (print_xfer_stats): With status=progress,
format times with %.0f rather than %g.  Improve
translator comments.

8 years agobuild: update gnulib submodule to latest
Paul Eggert [Sat, 22 Apr 2017 22:15:18 +0000 (15:15 -0700)] 
build: update gnulib submodule to latest

8 years agomaint: remove unused functions and constants
Paul Eggert [Sat, 22 Apr 2017 09:46:46 +0000 (02:46 -0700)] 
maint: remove unused functions and constants

These were found by clang.
* gl/lib/rand-isaac.c (min):
* gl/lib/randint.c (shift_right):
* src/md5sum.c (algorithm):
Remove; unused.

8 years agodate: adjust to gnulib parse-datetime changes
Paul Eggert [Sat, 22 Apr 2017 09:44:03 +0000 (02:44 -0700)] 
date: adjust to gnulib parse-datetime changes

* doc/coreutils.texi (Options for date): Capitalize a sentence.
* tests/misc/date-debug.sh: Adjust --debug output to match
recent changes to Gnulib’s parse-datetime module.

8 years agobuild: update gnulib submodule to latest
Paul Eggert [Sat, 22 Apr 2017 09:31:32 +0000 (02:31 -0700)] 
build: update gnulib submodule to latest

* gl/modules/tempname.diff: Update to match current Gnulib.

8 years agoshred: fix invalid pattern generation for certain sizes
Bogdan Drozdowski [Tue, 18 Apr 2017 02:04:01 +0000 (19:04 -0700)] 
shred: fix invalid pattern generation for certain sizes

* src/shred.c (fillpattern): Fix the "off by one" issue when
testing whether we have enough space to copy the already
written portion of the buffer to the remainder of the buffer.
Specifically for buffer sizes that are (3*(2^x))+1, i.e. 7,13,...
we both use an uninitialized byte and invoke undefined
behavior in memcpy() operation on overlapping memory regions.
* tests/misc/shred-passes.sh: Add an invocation that will
trigger either valgrind UMR, or ASAN like:
  ERROR: AddressSanitizer: memcpy-param-overlap: memory ranges
  #1 0x403065 in fillpattern src/shred.c:293
A direct test is awkward due to the random writes surrounding
the problematic pattern writes.
Fixes http://bugs.gnu.org/26545

8 years agodoc: fix awk example for getting penultimate field
Bo Rydberg [Mon, 17 Apr 2017 02:07:49 +0000 (19:07 -0700)] 
doc: fix awk example for getting penultimate field

* doc/coreutils.texi (cut invocation): Add required brackets.
Fixes http://bugs.gnu.org/26519

8 years agotail: revert to polling if a followed directory is replaced
Sebastian Kisela [Wed, 5 Apr 2017 07:40:41 +0000 (09:40 +0200)] 
tail: revert to polling if a followed directory is replaced

* src/tail.c (tail_forever_inotify): Add the IN_DELETE_SELF flag when
creating watch for the parent directory.  After the parent directory
is removed, an event is caught and then we switch from inotify to
polling mode.  Till now, inotify has always frozen because it waited for
an event from a watched dir, which has been already deleted and was not
added again.
* tests/tail-2/inotify-dir-recreate.sh: Add a test case.
* tests/local.mk: Reference the new test.
* NEWS: Mention the bug fix.
Fixes http://bugs.gnu.org/26363
Reported at https://bugzilla.redhat.com/1283760

8 years agomaint: fix syntax-check issues in previous tty commit
Pádraig Brady [Wed, 5 Apr 2017 23:18:11 +0000 (16:18 -0700)] 
maint: fix syntax-check issues in previous tty commit

* src/tty.c: Avoid EXIT_FAILURE to be more descriptive
and to placate sc_some_programs_must_avoid_exit_failure.

8 years agotty: handle misconfigured namespaces
Paul Eggert [Wed, 5 Apr 2017 18:34:42 +0000 (11:34 -0700)] 
tty: handle misconfigured namespaces

On some platforms, isatty succeeds but ttyname fails.
POSIX does not seem to allow this, but there it is.
Problem reported by Christian Brauner (Bug#26371).
While we’re at it, check for errors more carefully and return a
new exit status 4 if stdin is closed or a similar error occurs.
* doc/coreutils.texi (tty invocation): Document new behavior.
* init.cfg (stderr_fileno_):
Don't assume have_input_tty is not in the environment.
* src/tty.c (TTY_STDIN_ERROR): New constant.
(main): Exit with nonzero status if there is a usage error,
like other coreutils programs.
Check for error in getting stdin type.
* tests/misc/tty.sh: New file.
* tests/local.mk (all_tests): Add it.

8 years agodoc: refactor and update expand and unexpand --help
Pádraig Brady [Sun, 2 Apr 2017 23:52:34 +0000 (16:52 -0700)] 
doc: refactor and update expand and unexpand --help

* src/expand-common.c (emit_tab_list_info): A new function to
output the extended info on --tab=LIST, including the new
'+' and '/' prefixes.
* src/expand-common.h: Declare the above.
* src/expand.c (usage:): Call emit_tab_list_info and
match alignment with that used in unexpand --help.
* src/unexpand.c (usage): Likewise.

8 years agoexpand,unexpand: add support for incremental tab stops
Jacob Keller [Tue, 28 Mar 2017 22:49:50 +0000 (15:49 -0700)] 
expand,unexpand: add support for incremental tab stops

Support --tabs="1,+8" which is equivalent to --tabs="1,9,17,..."
useful for viewing unified diff output with its 1 character
gutter for example.

* doc/coreutils.texi ({expand,unexpand} invocation): Document,
using diff processing as the example.
* src/expand-common.c (set_increment_size): Update the new
increment_size global.
(parse_tab_stops): Handle the new '+' prefix.
(finalize_tab_stops): Verify both '+' and '/' prefixes
are not used together.
* tests/misc/expand.pl: Add test cases.
* NEWS: Mention the new feature.

8 years agosort: update comment
Paul Eggert [Thu, 30 Mar 2017 15:29:00 +0000 (08:29 -0700)] 
sort: update comment

* src/sort.c: Update identifiers in comment.

8 years agodoc: clarify in dd man page that bs= overrides [io]bs=
Chris Davies [Thu, 30 Mar 2017 02:03:23 +0000 (19:03 -0700)] 
doc: clarify in dd man page that bs= overrides [io]bs=

* src/dd.c (usage): Add the extra info.
Reported in https://bugs.debian.org/859021