Sami Kerola [Sat, 31 Oct 2015 19:21:15 +0000 (19:21 +0000)]
fsck: retire stat(3) when access(3) does better job
The stat(3) and access(3) are in this case almost interchangeable, so choose
the lightweight function with additional advantage checking the file is
executable.
Sami Kerola [Sat, 31 Oct 2015 12:27:36 +0000 (12:27 +0000)]
logger: shadow declaration
misc-utils/logger.c:448:17: warning: declaration of 'msg' shadows a
parameter [-Wshadow]
misc-utils/logger.c:429:74: note: shadowed declaration is here
Karel Zak [Fri, 30 Oct 2015 10:08:32 +0000 (11:08 +0100)]
lib/sysfs: make sysfs_get_devname()/blkid_devno_to_wholedisk() more robust
Now the function uses result buffer for internal stuff (readlink), so
it requires that the buffer is large enough. This is unexpected as
caller assumes that the buffer has to be large enough for devname only.
References: http://www.spinics.net/lists/util-linux-ng/msg12015.html Reported-by: Tom Yan <tom.ty89@gmail.com> Signed-off-by: Karel Zak <kzak@redhat.com>
Karel Zak [Thu, 29 Oct 2015 10:18:21 +0000 (11:18 +0100)]
logger: use --id as local socket credentials
If you have really paranoid syslog (or systemd who listens on /dev/log)
then it replaces in the message PID with a real PID from socket header
credentials:
# echo $PPID
1550
# logger -p info --stderr --id=$PPID "This is message baby!"
<14>Oct 29 11:22:13 kzak[1550]: This is message baby!
# journald -n 1
Oct 29 11:22:13 ws kzak[22100]: This is message baby!
^^^^^
This patch forces kernel to accept another *valid* PID if logger(1)
executed with root permissions; improved version:
# logger -p info --stderr --id=$PPID "This is message baby!"
<14>Oct 29 11:26:00 kzak[1550]: This is message baby!
# journald -n 1
Oct 29 11:26:00 ws kzak[1550]: This is message baby!
Karel Zak [Tue, 27 Oct 2015 12:19:16 +0000 (13:19 +0100)]
logger: use iovec and sendmsg() to send message
The iovec based solutions allow to send multiple strings by one
syscall (for example additional \n messages separator). We can also
use it to send additional socket header metadata (e.g.
SCM_CREDENTIALS) later.
We need a better way, it seems that the original report is mostly
about udev rules disadvantages than about libblkid bug. See RH
bugzilla (#1172510) for more details.
The libmount provides way how to deal with parsing errors in fstab --
on error callback function is executed and according to the return
libmount manipulate with the malformed line, possible are three
states:
1/ fatal error; all file ignored (callback rc < 0)
2/ recoverable error; malformed line ignored (callback rc > 0)
3/ ignore the error (callback rc == 0)
The 2/ is the default if no callback specified.
Unfortunately our utils uses 3/. The correct way is to use 2/.
Karel Zak [Mon, 12 Oct 2015 09:42:13 +0000 (11:42 +0200)]
libmount: fix uid= and gid= translation
The current libmount version returns error when no able to convert
username/groupname to uid/git.
# mount mount /dev/sda1 /mnt/test -o uid=ignore
# mount: failed to parse mount options
This is regression, the original mount(8) has ignored possible unknown
user/group names and the option has been used unconverted (with the
original value). For example UDF kernel driver depends on this behavior
and "uid=ignore" (or "forgot") is a valid mount option.
Reported-By: Anthony DeRobertis <anthony@derobert.net>
Addresses: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=801527 Signed-off-by: Karel Zak <kzak@redhat.com>
Deiz [Sat, 10 Oct 2015 00:35:17 +0000 (20:35 -0400)]
cal: Track date span independently from months_in_row
This fixes a minor issue where cal -n 3 would mirror the spanning
behaviour of cal -3 with Gregorian calendars, instead of starting with
the current month.
Ian Wienand [Thu, 8 Oct 2015 04:00:44 +0000 (15:00 +1100)]
libfdisk: Detect out-of-space when adding new primary partition
I got a bit confused with the interaction below:
Command (m for help): p
Disk /dev/sda: 41 GiB, 43965677568 bytes, 85870464 sectors
...
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 10260471024000 500M 83 Linux
/dev/sda2 10260488586854384842496 40.5G 8e Linux LVM
Command (m for help): n
To create more partitions, first replace a primary with an extended partition.
I knew I should have had two primary partitions available, but I did
not notice that the disk was seen as full (I was trying to grow it)
This change detects available primary partitions, and if so indicates
we are out of space, rather than out of partitions.
Jörg Jenderek [Wed, 7 Oct 2015 09:41:23 +0000 (11:41 +0200)]
fdisk: to recognize Intel Rapid Start hibernation partition
I use Intel Rapid Start Technology on my PC. According to their User Guide
"Rapid_Start_Technology_User_Guide_v1.4.pdf" I create a partition with id=84
for hibernation by this Technology.
Unfortunately the software fdisk (util-linux-2.27) classifies that partition as
"OS/2 hidden C:". That is not wrong, but on website
https://en.wikipedia.org/wiki/Partition_type is written, that id 0x84 beside
using for hiding drive C: this type is a also used as hibernation partition for
Microsoft APM and also for Intel Rapid Start
So I patched 2 header files so that fdisk recognize this partition type variation.
Sami Kerola [Sat, 3 Oct 2015 18:31:07 +0000 (19:31 +0100)]
uuidd: fix shadow declaration
misc-utils/uuidd.c:384:13: warning: declaration of 'ret' shadows a previous
local [-Wshadow]
misc-utils/uuidd.c:327:6: note: shadowed declaration is here
Sami Kerola [Sat, 3 Oct 2015 18:31:06 +0000 (19:31 +0100)]
uuidd: use signalfd() and setup_timer()
Point of this change is to replace use of signal() and alarm() system calls
using newer interfaces. Nice side effect is that the point where timer was
earlier used cannot be distracted by sending rogue SIGALRM.
Karel Zak [Tue, 6 Oct 2015 07:16:33 +0000 (09:16 +0200)]
logger: fix messages separation on UNIX socket
The function write_output() add additional \n after each message on
TYPE_TPC. This is required by syslog daemons, otherwise you will see
multiple log messages merged together in your log file, for example:
Oct 6 09:01:40 ws kzak: AAA<14>Oct 6 09:01:40 kzak: BBB
for
printf "AAA\nBBB\n" | logger -p info -u <any-socket>
Unfortunately, the connection initialization functions keep the
default ALL_TYPES as connection type and nowhere in the control struct
is info about the final real connection type. The problem is invisible
when you specify --tpc or --udp on logger command line.
Addresses: https://github.com/karelzak/util-linux/issues/225 Signed-off-by: Karel Zak <kzak@redhat.com>
This patch provides fix for bash-completion/fndmt script. There
is curly brace missed in the completion generation for the -M/--mountpoint
option.
In other way we will get following messages:
bash: /etc/bash_completion.d/findmnt: line 91: unexpected EOF while looking for matching `)'
bash: /etc/bash_completion.d/findmnt: line 141: syntax error: unexpected end of file
Signed-off-by: Alexander Kuleshov <kuleshovmail@gmail.com>
i used a partitioning+formatting tool product rufus 2.2. of
https://rufus.akeo.ie/ This software has an extra format option for older BIOS.
With this fix the main partition is created with some alignments and for the
remaining unallocated space a small extra and empty partition with
identification 0xEA is created.
On the List of partition identifiers for PCs at
http://www.win.tue.nl/~aeb/partitions/partition_types-1.html is is said that
there is a freedesktop proposal to use also type ea as boot partition
Unfortunately the software fdisk (util-linux-2.27) can not classify that
partition. I send for the fdisk program my 2 patches so that fdisk recognize
this partition type.
Karel Zak [Wed, 30 Sep 2015 10:42:16 +0000 (12:42 +0200)]
libuuid: fix buffer overflow with long paths
Based on patch from Justin Akers, he wrote:
> When building Openembedded inside a Jenkins matrix job the paths can
> get quite long. This ensures libuuid won't crash when attempting to
> connect to uuidd in such a scenario.
Reported-by: Justin Akers <dafugg@gmail.com> Signed-off-by: Karel Zak <kzak@redhat.com>
The patch dramatically reduces malloc()+seek()+read() operations in
libblkid. The code mmaps ~2MiB of the begin and the end of the device
and it moves buffers management to kernel.
Karel Zak [Tue, 22 Sep 2015 13:26:36 +0000 (15:26 +0200)]
lib/crc32: don't require to modify GPT header
This patch introduces smart crc32 function that is able to exclude
specified. The advantage is that we does not have to modify GPT header
(set the current in-header crc field to zero) when we count crc32.
This allows to keep GPT header in read-only buffers and simplify code.
Karel Zak [Thu, 17 Sep 2015 10:27:58 +0000 (12:27 +0200)]
libfdisk: fix partition move/resize code
- verify that the new partition fits to the area if the size of the
has not been modified
- fix remaining space calculation (yes, brown-paper-bag bug..)
- offer also space before first partition as free space
Karel Zak [Fri, 11 Sep 2015 09:19:30 +0000 (11:19 +0200)]
libmount: (monitor) don't check for regular mtab
The monitor supports utab only (as documented). It's application
responsibility to use libmount in the right way. It's overkill to
check for valid environment during monitor initialization.
For example systemd checks for regular mtab during boot, it's better
than try to be smart later in libmount monitor when system is already
running.
Michal Schmidt [Thu, 3 Sep 2015 11:41:19 +0000 (13:41 +0200)]
logger: improve logger --journald man page example
The example use of logger --journald in the man page has a couple of flaws:
- It's missing a "MESSAGE=" field. This is supposed to be the primary
human readable text. Without it the log entry is invisible in a
plain "journalctl" output.
- The MESSAGE_ID is supposed to be a 128-bit hexadecimal string that
globally uniquely identifies the message type.
One can generate such an id with "journalctl --new-id".
This patches fixes the above and also changes the example to use a
here-document instead of printf. In my opinion it makes the expected
multi-line data format more obvious.
Signed-off-by: Michal Schmidt <mschmidt@redhat.com>
Kir Kolyshkin [Thu, 3 Sep 2015 01:20:22 +0000 (18:20 -0700)]
build-sys: allow gettext 0.17 to be used
The requirement for gettext 0.18 was introduced by commit e3e16717
to pass --no-wrap option to msgmerge tool, which I guess improves
the process of updating po files for translators. At the same time,
unfortunately, it makes building from git fail on a RHEL/CentOS 6
system, as it comes with gettext 0.17.
Use the existing hack in autogen.sh to allow building with gettext 0.17,
with an appropriate warning so that the user is aware:
warning: forcing autopoint to use old gettext 0.17
The only negative side effect of this patch I am aware of is
if gettext-0.17 is used, then --no-wrap is not being passed
to msgmerge (although msgmerge 1.17 already supports it), because
Makefile.in.in that comes with gettext 0.17 doesn't have MSGMERGE_OPTIONS.
From my POV, this is way better than to not being able to build.
NOTE if gettext 0.18.3 is installed, it is used and this patch
doesn't change anything; it only allows gettext 1.17 to be used
if this is all we have.
Cc: Benno Schulenberg <bensberg@justemail.net> Cc: Sami Kerola <kerolasa@iki.fi> Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Kir Kolyshkin [Thu, 3 Sep 2015 00:50:15 +0000 (17:50 -0700)]
build-sys: allow autoconf < 2.64 to be used
Since commit 50d096a macro m4_ifblank is used, but as it is only
available in autoconf-2.64, on CentOS 6 system we end up with:
> $ ./autogen.sh
> configure:25396: error: possibly undefined macro: m4_ifblank
> If this token and others are legitimate, please use
> m4_pattern_allow.
> See the Autoconf documentation.
> [root@kir-ovz2 util-linux]# autoconf --version
> autoconf (GNU Autoconf) 2.63
So, the obvious thing to do would be to raise AC_PREREQ to 2.64
in configure.ac. But, given the facts that
- autoconf 2.64 is not available for RHEL/CentOS 6,
- the only need is one small macro,
it's better to just add the missing macro.