Pali Rohár [Sat, 5 Dec 2020 19:43:22 +0000 (20:43 +0100)]
libblkid: udf: add support for APPLICATION_ID
iso9660 superblock code already sets APPLICATION_ID to Application
Identifier from ISO9660 Supplementary Volume Descriptor.
In udf similar meaning has Application Identifier from UDF Primary Volume
Descriptor. Therefore exports it as APPLICATION_ID label.
More tools for generating hybrid ISO+UDF images (e.g. genisoimage, mkisofs
or nero) set Application Identifier in UDF Primary Volume Descriptor to
just empty string. But they set Implementation Identifier in UDF Primary
Volume Descriptor to their tool name.
So if Application Identifier is empty then exports Implementation
Identifier as APPLICATION_ID label.
Please note that Application Identifier and Implementation Identifier are
stored in UDF only in ASCII, not UNICODE.
Pali Rohár [Sat, 5 Dec 2020 19:39:35 +0000 (20:39 +0100)]
libblkid: udf: check that dstrings are encoded in OSTA Compressed Unicode
dstring structures are in UL_ENCODE_LATIN1/UL_ENCODE_UTF16BE encodings only
when corresponding desc_charset structures are set to the OSTA Compressed
Unicode. So add missing checks.
Karel Zak [Thu, 3 Dec 2020 11:14:10 +0000 (12:14 +0100)]
libsmartcols: sanitize variable names on export output
The shells are very restrictive about variable names, only [:alnum:]
chars are allowed (and alphabetic chars as the first char). The
library will replace "bad" chars with "_". The char '%' at the end is
replaced by _PCT.
Addresses: https://github.com/karelzak/util-linux/issues/1201 Signed-off-by: Karel Zak <kzak@redhat.com>
Sami Kerola [Thu, 26 Nov 2020 22:01:39 +0000 (22:01 +0000)]
col: make input to tolerate invalid wide characters
The getwchar(3) will choke and exit if invalid character is encountered.
This change will make col(1) to print broken multibyte characters as
\x{hex} string.
Reported-by: Vitaly Lipatov <lav@etersoft.ru>
Addresses: https://github.com/karelzak/util-linux/issues/1198 Signed-off-by: Sami Kerola <kerolasa@iki.fi>
Karel Zak [Tue, 1 Dec 2020 10:44:09 +0000 (11:44 +0100)]
travis: disable OSX for now
For weeks we have a problem with timeout on OSX on travis, not sure
how to fix it ... volunteer wanted :-)
==> ./bootstrap --prefix=/usr/local/Cellar/cmake/3.19.1 --no-system-libs --paral
==> make
No output has been received in the last 10m0s, this potentially indicates a stalled build or something wrong with the build itself.
Check the details on how to adjust your build configuration on: https://docs.travis-ci.com/user/common-build-problems/#Build-times-out-because-no-output-was-received
Karel Zak [Tue, 1 Dec 2020 10:35:02 +0000 (11:35 +0100)]
fuzzers: make tests setup more robust
- use robust functions like write_all()
- don't use assert() to check write/open/etc return values, because oss-fuzz.com
report foreign (system, libc, ...) issues as our fails
Addresses: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=28009 Signed-off-by: Karel Zak <kzak@redhat.com>
Karel Zak [Wed, 25 Nov 2020 13:48:30 +0000 (14:48 +0100)]
Merge remote-tracking branch 'pali/multisesssion'
* pali/multisesssion:
libblkid: udf: add support for unclosed sequential Write-Once media
libblkid: udf: add support for multisession via session_offset hint
libblkid: iso9660: add support for multisession via session_offset hint
libblkid: fix blkid_probe_get_sb() to use hint offset calculation
libblkid: allow to specify offset defined by hint for blkid_probe_get_idmag()
libblkid: detect session_offset hint for optical discs
libblkid: do size correction of optical discs also by last written sector
libblkid: detect CD/DVD discs in packet writing mode
libblkid: overwrite existing hint
libblkid: export blkid_probe_reset_hints()
blkid: add --hint <name>=value
libblkid: add blkid_probe_{set,get}_hint()
Karel Zak [Tue, 24 Nov 2020 12:12:22 +0000 (13:12 +0100)]
Merge remote-tracking branch 'sami/uuidd-work'
* sami/uuidd-work:
uuidd: fix misleading indentation
uuidd: make timeout to take effect when debug is not defined
uuidd: remove unnecessary bulk request size limit
uuidd: add uuidd specific data types that are used in protocol
uuidd: reorder bulk time and random generation code
uuidd: document uuidd protocol
uuidd: override operation type when performing bulk request
uuidd: move option parsing to separate function
uuidd: add command-line option values struct
uuidd: use pid_t type when referring to process id
Karel Zak [Tue, 24 Nov 2020 11:46:03 +0000 (12:46 +0100)]
build-sys: do not use extra subdir for getopt examples
This is unnecessary, we have ${docsdir}/util-linux which is good
enough for these two getopt examples. I guess the "getopt"
subdirectory is legacy from time getopt has been merged into
util-linux.
Unfortunately, there is not any direct sysfs way how to refer this
relationship in /sys/{block,dev/block}. So, we have to read the
device_map file and then compare device numbers with the list.
$ lsblk /dev/sr0
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
└─pktcdvd0 252:0 1 0B 0 disk
Addresses: https://github.com/karelzak/util-linux/issues/1185 Signed-off-by: Karel Zak <kzak@redhat.com>
Sami Kerola [Sat, 21 Nov 2020 21:24:10 +0000 (21:24 +0000)]
uuidd: remove unnecessary bulk request size limit
Limiting random query to 1000 uuid's was pointless when the next line will
further restrict upper limit to 63 entries. The 63 entries is what fits to
the uuidd communication buffer with the header.
Sami Kerola [Sat, 21 Nov 2020 16:57:43 +0000 (16:57 +0000)]
uuidd: add uuidd specific data types that are used in protocol
Use a typedef for types that are sensitive what comes to uuidd protocol
field widths, read write sizes, and related checks.
Proposed-by: Karel Zak <kzak@redhat.com>
Reference: https://github.com/karelzak/util-linux/pull/1196#discussion_r528595794 Signed-off-by: Sami Kerola <kerolasa@iki.fi>
Sami Kerola [Sat, 21 Nov 2020 16:38:58 +0000 (16:38 +0000)]
uuidd: document uuidd protocol
Seeing what can be expected should make it easier to understand what the
code does.
Notice that simply writing down the resposes one can start wondering deeper
questions, such as, why does the time bulk response reply only one uuid
followed by number how many were requested? Was that a some type of TODO
note?
Sami Kerola [Fri, 20 Nov 2020 22:27:34 +0000 (22:27 +0000)]
uuidd: move option parsing to separate function
Moving the option parsing to a separate function will allow moving some
variables from main() heap to be in scope that free them later. That should
make the uuidd to have a little bit smaller runtime memory allocation.
The static long options is changed to be local variable. That should make
it to be part of heap for a bit, until removed. Earlier the variable was in
data segment and permanently in runtime memory. Whether this makes any
impact either way is not entirely clear, but hope is the runtime memory
allocation is tiny bit smaller.
Sami Kerola [Fri, 20 Nov 2020 22:05:46 +0000 (22:05 +0000)]
uuidd: use pid_t type when referring to process id
Earlier use of a variable that holds switch enabling boolean to hold process
id was a little bit strange, and not exactly correct. An int should be good
enough to hold any pid, but it is better to be precise and use the type that
is meant for the job.
Érico Rolim [Wed, 18 Nov 2020 14:35:26 +0000 (11:35 -0300)]
setpriv: allow using [-+]all for capabilities.
The initial change to lib/caputils that allowed this was commit 5d95818757941bc609e5aeec5e2218f7d35a6e19, which made it possible to
trust the value returned by cap_last_cap().
The error message was also somewhat misleading, since cap_last_cap()
being smaller than CAP_LAST_CAP happens when setpriv itself is built
with kernel headers older than the currently running kernel, not due to
libcap-ng.
Érico Rolim [Fri, 20 Nov 2020 15:33:23 +0000 (12:33 -0300)]
setpriv: small clean-up.
- Add _() calls for some strings which were missing it.
- In print_caps(), use the same error checking done in
list_known_caps(); it is expected that libcap-ng will always return a
string, even if it's only "cap_%d".
Karel Zak [Fri, 20 Nov 2020 11:01:22 +0000 (12:01 +0100)]
Merge branch 'w45'
* w45:
fdformat: remove command from default build
more: improve error messaging when input file is directory
ul: make set_column() zero check more obvious
colrm: fix argument parsing
rfkill: stop execution when rfkill device cannot be opened
cifuzz: reindent yaml file
man: make tilde and caret characters to render correctly
Masayoshi Mizuma [Fri, 20 Nov 2020 05:06:08 +0000 (00:06 -0500)]
lscpu: add helper to get physical sockets
Add a helper function, get_number_of_physical_sockets_from_dmi(),
to get physical sockets from DMI table in case of the sysfs for
cpu topology doesn't have the physical socket information.
get_number_of_physical_sockets_from_dmi() parse the DMI table
and counts the number of SMBIOS Processor Information (Type04)
structure.
Masayoshi Mizuma [Fri, 20 Nov 2020 05:06:05 +0000 (00:06 -0500)]
lscpu: use cluster on aarch64 machine which doesn't have ACPI PPTT
lscpu may show the wrong number of sockets if the machine is aarch64 and
doesn't have ACPI PPTT.
That's because lscpu shows the number of sockets by using a sysfs entry
(cpu/cpuX/topology/core_siblings). The sysfs entry is set by MPIDR_EL1
register if the machine doesn't have ACPI PPTT. MPIDR_EL1 doesn't show
the physical socket information directly. It shows the affinity level.
According to linux/arch/arm64/kernel/topology.c:store_cpu_topology(),
the top level of affinity is called as 'Cluster'.
Use Cluster instead of Socket on the machine which doesn't have ACPI PPTT.
This patch is useful for aarch64 machine which is based on ARM
SBBR v1.0 and v1.1, the specs don't require ACPI PPTT. ARM SBBR v1.2
requires ACPI PPTT.
Karel Zak [Thu, 19 Nov 2020 11:04:08 +0000 (12:04 +0100)]
lib/signames: change license to public domain
The file is simple list of signal names and trivial function to search
in the list. We do not need any extra license here and as public
domain it will be more portable to other tools (GPL and BSD) in the
util-linux.
All previous contributors (Sami, Niklas and me) agree with this change.
Karel Zak [Thu, 19 Nov 2020 10:12:06 +0000 (11:12 +0100)]
umount: ignore --no-canonicalize,-c for non-root users
It seems better to ignore this option than drop-permissions and later
exit with EPERMs. This change makes umount(8) more compatible with
fuser user umounts by systemd where -c is used to reduce overhead etc.
Addresses: https://github.com/karelzak/util-linux/issues/1192 Signed-off-by: Karel Zak <kzak@redhat.com>
Érico Rolim [Sun, 15 Nov 2020 04:34:41 +0000 (01:34 -0300)]
lib/caputils: add fall back for last cap using prctl.
This allows the rest of the programs using cap_last_cap to trust the
value returned by it, since it will either be obtained from procfs
(straight from kernel) or with prctl.
Also checked if the file under /proc is actually mounted in a procfs.
Sami Kerola [Wed, 11 Nov 2020 21:10:32 +0000 (21:10 +0000)]
fdformat: remove command from default build
It should be safe assumption a command related to floppy disks does not
need to be part of default build. Notice that the reference commit removed
floppy driver from linux about year ago. Virtual floppies might exist they
should not need low-level formatting. But if someone really needs this
enabling the build in that case is better than pushing the binary by
default to many many systems that install util-linux.
Sami Kerola [Mon, 19 Oct 2020 20:57:04 +0000 (21:57 +0100)]
colrm: fix argument parsing
Short options had all sortss of characters listed, that were clearly copied
from col(1) command getopt_long() invocation. Luckily both -V and -h were
part of the short options, but lets get rid of the unnecessary ones.
Fixes: 1647d032a7bfcba36d3dabe627b858b372210d05 Signed-off-by: Sami Kerola <kerolasa@iki.fi>
Sami Kerola [Tue, 1 Sep 2020 19:23:36 +0000 (20:23 +0100)]
cifuzz: reindent yaml file
Fixex two yamllint indentation warning, the truthy is false positive.
util-linux $ yamllint ./.github/workflows/cifuzz.yml
6:1 warning truthy value should be one of [false, true] (truthy)
14:2 error wrong indentation: expected 2 but found 1 (indentation)
22:4 error wrong indentation: expected 5 but found 3 (indentation)
Reference: https://github.com/adrienverge/yamllint Signed-off-by: Sami Kerola <kerolasa@iki.fi>
That's because 367c85c47 changes to get the modelname from Processor
Version of SMBIOS.
To fix that, use the hard corded table to show the "Model name" and
add two new lines; "BIOS Vendor ID" and "BIOS Model name" to show the
SMBIOS information.
lscpu shows the SMBIOS information when root user runs it because
accessing the SMBIOS information requires root privilege.
[kzak@redhat.com: - port the patch to new lscpu code]
Signed-off-by: Masayoshi Mizuma <m.mizuma@jp.fujitsu.com> Signed-off-by: Karel Zak <kzak@redhat.com>
Karel Zak [Tue, 3 Nov 2020 10:49:28 +0000 (11:49 +0100)]
lscpu: update tests
* cpu MHz is per-CPU value and not printed in summary anymore
* topology is reordered
* number of NUMA nodes is moved to NUMA section
* parsable output uses cache ID from kernel if avalable
Karel Zak [Tue, 3 Nov 2020 10:13:26 +0000 (11:13 +0100)]
lscpu: improve bogomips use
* keep global (cputype) bogomips
* add per-CPU bogomips
* use bogomips from the first CPU as global (for cputype) if /proc/cpuinfo does not provide global bogomips
* add BOGOMIPS column for to -e/-p output
Karel Zak [Tue, 3 Nov 2020 08:46:45 +0000 (09:46 +0100)]
lscpu: improve topology calculation
Let's make it more robust and readable. The sysinfo file on s390 may
contain zeros, so we need to check the values and fallback to data
from shared maps if necessary.
Karel Zak [Mon, 2 Nov 2020 09:11:46 +0000 (10:11 +0100)]
lscpu: generate cache ID if not available
The file /sys/devices/system/cpu/cpu*/cache/index*/id is not available
in old kernels. This patch add code to generate IDs according to cache
type and level.
Karel Zak [Fri, 4 Sep 2020 09:27:33 +0000 (11:27 +0200)]
lscpu: keep static/dynamic MHz in cputype struct
The Dynamic and Static MHz are /proc/cpuinfo s390 per-CPU fields, but
we display it as a single value according the first parsed CPU. For
this purpose we store the values from the first CPU in lscpu_cputype.
For -p and -e outputs we will print per CPU values.
Karel Zak [Thu, 20 Aug 2020 10:28:52 +0000 (12:28 +0200)]
lscpu: use cache ID, keep caches independent on CPU type
The cache is identified by Type, Level and ID, the ID is unique cache
instance identifier (of the type).
This changes forces lscpu allocate more lscpu_cache instances (than
old version), but now we're ready for arbitrary scenario where
different CPU types share caches and the same cache type uses
different size in different instances, etc.