Karel Zak [Mon, 23 Jan 2023 13:09:27 +0000 (14:09 +0100)]
Merge branch 'bcachefs-fuzz' of https://github.com/t-8ch/util-linux
* 'bcachefs-fuzz' of https://github.com/t-8ch/util-linux:
libblkid: bcachefs: limit maximum size of read superblock
libblkid: iso9660: don't warn on isonum mismatch
libblkid: bcachefs: fix member_field_end
libblkid: bcachefs: validate size of member field
libblkid: bcachefs: fix field type
libblkid: bcachefs: add reproducer for oss-fuzz 55282
libblkid: bcachefs: fix endless loop
Samanta Navarro [Fri, 20 Jan 2023 11:57:15 +0000 (11:57 +0000)]
fsck.cramfs: print correct error on 32-bit systems
On 32-bit systems the file length check does not handle files correctly
which are larger than 4 GB. Use an unsigned long long which is already
in place for blkdev_get_size.
Karel Zak [Fri, 20 Jan 2023 14:20:55 +0000 (15:20 +0100)]
lsfd: remove strcpy(), keep things based on sizeof()
* use safe xstrncpy() rather than strcpy()
* use sizeof() for static buffers rather than macro with real size
(this solution is more robust for future code changes)
* use xcalloc() to zeroize allocated memory
Samanta Navarro [Fri, 20 Jan 2023 11:57:15 +0000 (11:57 +0000)]
fsck.cramfs: print correct error on 32-bit systems
On 32-bit systems the file length check does not handle files correctly
which are larger than 4 GB. Use an unsigned long long which is already
in place for blkdev_get_size.
It's probably typo in the original path (too many brackets:-)). Let's
be explicit about the types used in the calculation. '1 << n' means
the left shift is on 'int', but we need '(t)1 << n'.
Karel Zak [Tue, 17 Jan 2023 15:15:11 +0000 (16:15 +0100)]
Merge branch 'blkdev' of https://github.com/ferivoz/util-linux
* 'blkdev' of https://github.com/ferivoz/util-linux:
lib/blkdev: use off_t for max values
lib/blkdev: set errno in more cases
lib/blkdev: handle interrupted read call
Samanta Navarro [Fri, 13 Jan 2023 11:51:52 +0000 (11:51 +0000)]
lib/blkdev: set errno in more cases
Applications evaluate errno in case of a -1 return value. Examples
within util-linux are fsck.cramfs and mkfs.minix. Set errno more often
to offer reasonable error codes to the application and user.
Samanta Navarro [Fri, 13 Jan 2023 11:50:40 +0000 (11:50 +0000)]
lib/blkdev: handle interrupted read call
The read call may fail if it is interrupted by a signal. Do not assume
that we have reached the end of the underlying block device because of
this. Use read_all which retries in these cases.
Samanta Navarro [Fri, 13 Jan 2023 11:53:41 +0000 (11:53 +0000)]
mkswap: do not use uninitialized stack value
If blkdev_get_size fails, then size is not set. Exit with an error code
and indicate what went wrong instead of continuing with random stack
content.
Proof of Concept:
```
$ mkswap /dev/null
mkswap: warning: truncating swap area to 17179869180 KiB
mkswap: /dev/null: insecure permissions 0666, fix with: chmod 0600 /dev/null
mkswap: unable to assign device to libblkid probe
```
The first output line depends on stack content and sometimes does not
show up at all. Abort operation if argument is neither regular file nor
block device.
Karel Zak [Thu, 12 Jan 2023 14:33:09 +0000 (15:33 +0100)]
include: add missing license lines
The header files are usually based on code from lib/. This commit
copies relevant license headers from lib/ to include/ to keep
things consistent. The very generic things (e.g. MBR definitions)
are always public domain.
Fixes: https://github.com/util-linux/util-linux/issues/2010 Signed-off-by: Karel Zak <kzak@redhat.com>
Samanta Navarro [Wed, 11 Jan 2023 11:57:21 +0000 (11:57 +0000)]
login: never send signals to init
If the signal handler is triggered after a failed fork attempt, then
child_pid will be -1. This in turn leads to a positive test and a
subsequent call of kill(1, signal). If signal was SIGTERM, then there
will be also another kill(1, SIGHUP) call.
Test explicitly for a positive child_pid value to prevent these cases.
Chris Webb [Tue, 10 Jan 2023 13:58:58 +0000 (13:58 +0000)]
unshare: support --map-users=inner:outer:count as well as outer,inner,count
The argument ordering in /proc/self/[gu]id_map and mount -o X-mount.idmap
is consistently inner:outer:count but unshare --map-users and --map-groups
were originally defined to expect outer,inner,count instead.
To reduce confusion caused by this mismatch, support a colon-separated
inner:outer:count ordering as well as the original comma-separated
outer,inner,count argument format. Although we accept both formats, only
document the new one in the usage text and deprecate the old format in
the man page.
Fixes: https://github.com/util-linux/util-linux/issues/1988 Signed-off-by: Chris Webb <chris@arachsys.com>
Karel Zak [Tue, 10 Jan 2023 11:40:47 +0000 (12:40 +0100)]
libmount: use MNT_ERR_APPLYFLAGS for failed mount_setattr()
The classic mount(2) based version uses MNT_ERR_APPLYFLAGS when not
able to set flags and errno is EINVAL. This is expected by
mnt_context_get_mount_excode() where libmount generates error messages
for mount(8).
Expected is:
# mount --make-private /mnt/test
mount: /mnt/test: not mount point or bad option.
rather than generic error:
mount: /mnt/test: wrong fs type, bad option, bad superblock on none ...
Karel Zak [Tue, 10 Jan 2023 10:30:55 +0000 (11:30 +0100)]
Merge branch 'waitpid' of https://github.com/t-8ch/util-linux
* 'waitpid' of https://github.com/t-8ch/util-linux:
waitpid: adapt bash-completion for current functionality
po-man: add waitpid.1 manpage
waitpid: add support for already exited PIDs
Karel Zak [Mon, 9 Jan 2023 11:47:31 +0000 (12:47 +0100)]
Merge branch 'po-man/fixes' of https://github.com/t-8ch/util-linux
* 'po-man/fixes' of https://github.com/t-8ch/util-linux:
sr.po: fix mkfs.cramfs translation
build: propagate failures from asciidoctor
po-man: remove unicode dash from manpage NAME section
sr.po: add missing dash to manpage header
po-man: always convert common manpage fragments
po-man: enable out of tree builds
autotools: add asciidoctor-includetracker to distributed files
Karel Zak [Mon, 9 Jan 2023 11:35:03 +0000 (12:35 +0100)]
Merge branch 'schedutils' of https://github.com/chaiken/util-linux
* 'schedutils' of https://github.com/chaiken/util-linux:
schedutils: better illustrate the usage of cpu-lists with taskset
schedutils: clarify meaning of taskset return code
schedutils: clarify confusing mask example in taskset man page
This is required by string_to_bitmask().
The previous cast failed on s390x with the following warning:
In function 'string_to_bitmask',
inlined from 'string_to_bitmask' at lib/strutils.c:802:5,
inlined from 'main' at sys-utils/wdctl.c:770:8:
lib/strutils.c:829:23: error: write of 64-bit data outside the bound of destination object, data truncated into 32-bit [-Werror=extra]
829 | *mask |= flag;
|
libmount: ensure child hangs around until we persisted namespace
When we create a new namespace in a child process to persist it we need
to ensure that the child hangs around. During exit the child will drop
all references to its namespaces and so by the time we call open we
might already fail to open the namespace. Fix this.
Signed-off-by: Christian Brauner (Microsoft) <brauner@kernel.org>
po-man: remove unicode dash from manpage NAME section
Translators seem to like using unicode dashes.
When used in the NAME section of a manpage, asciidoctor will break.
Instead of trying to force all translators to keep this in mind, add an
extension to asciidoctor that takes care of this.