summaryrefslogtreecommitdiff
path: root/src/basic
Commit message (Collapse)AuthorAge
* util-lib,tests: rework unbase64 so that we skip over whitespace ↵Lennart Poettering2017-12-03
| | | | | | | | | | automatically (#7522) Let's optimize things a bit, and instead of having to strip whitespace first before decoding base64, let's do that implicitly while doing so. Given that base64 was designed the way it was designed specifically to be tolerant to whitespace changes, it's a good idea to do this automatically and implicitly.
* fs-util: remove comment about non-existing functionYu Watanabe2017-12-01
|
* fs-util: chase_symlinks(): remove unnecessary slash at the headYu Watanabe2017-12-01
| | | | | Before this, chase_symlinks("/../../foo/bar",...) returns //foo/bar. This removes the unnecessary slash at the head.
* *: fix some inconsistent control statement styleVito Caputo2017-12-01
|
* Add elogind-growfs toolZbigniew Jędrzejewski-Szmek2017-10-23
|
* fileio: document why fileio-label.c and fileio.c are two different modulesLennart Poettering2017-11-27
|
* string-util: update strreplace() a bit, use GREEDY_REALLOC()Lennart Poettering2017-11-21
|
* Add set/hashmap helpers for non-trivial freeing and use where straighforwardZbigniew Jędrzejewski-Szmek2017-11-28
| | | | | | A macro is needed because otherwise we couldn't ensure type safety. Some simple tests are included. No functional change intended.
* cap-list: check range of numeric valueYu Watanabe2017-11-28
|
* alloc-util: coding style fixYu Watanabe2017-11-28
|
* sd-resolve: propagate timeouts in sd_resolve_wait() the same way as in ↵Lennart Poettering2017-11-27
| | | | | | | sd_bus_wait(): ETIMEDOUT Thankfully this is an internal API still, so we can mkae changes like this.
* exec-util: initialize `new` before using it (#7471)Evgeny Vereshchagin2017-11-26
| | | | CID #1383004
* fileio: include sys/mman.hYu Watanabe2017-11-26
|
* Replace use of snprintf with xsprintfDaniel Lockyer2017-11-24
|
* Replace free and return NULL with return mfreeDaniel Lockyer2017-11-24
|
* Replace free and nullify by mfreeDaniel Lockyer2017-11-24
|
* __attribute__((fallthrough)) only when -Wimplicit-fallthrough (#7448)Shawn Landden2017-11-24
| | | | | | | | | | | | | That is version 7 or greater https://developers.redhat.com/blog/2017/03/10/wimplicit-fallthrough-in-gcc-7/ Fix regression of https://github.com/elogind/elogind/pull/7389 82a27ba8217d09e4fef4c9550f8b733d174c5705 on older gccs bumping to re-run CI upstream FAIL timed out boot-smoke FAIL non-zero exit status 1
* mount-util: fix error propagation in fd_fdinfo_mnt_id()Lennart Poettering2017-11-23
|
* udevd: use list.h instead of udev_list_nodeSimon Peeters2016-11-06
|
* networkd: introduce vxcan netdev. (#7150)Susant Sahani2017-11-22
| | | | | | | | Similar to the virtual ethernet driver veth, vxcan implements a local CAN traffic tunnel between two virtual CAN network devices. When creating a vxcan, two vxcan devices are created as pair When one end receives the packet it appears on its pair and vice versa. The vxcan can be used for cross namespace communication.
* cgroup: properly determine cgroups zombie processes belong toLennart Poettering2017-11-17
| | | | | | When a process becomes a zombie its cgroup might be deleted. Let's add some minimal code to detect cases like this, so that we can still attribute this back to the original cgroup.
* tree-wide: adjust fall through comments so that gcc is happyShawn Landden2017-11-19
| | | | | | | | Distcc removes comments, making the comment silencing not work. I know there was a decision against a macro in commit ec251fe7d5bc24b5d38b0853bc5969f3a0ba06e2
* signal-util: use a slightly less likely to conflict variable name instead of 't'Lennart Poettering2017-11-14
|
* proc-cmdline: minor runlevel_to_target() coding style fixesLennart Poettering2017-10-27
| | | | | Let's not mix function calls and variable declarations, as well as assignments and comparison in one expression.
* hexdcoct: dump to stdout if FILE* is specified as NULLLennart Poettering2017-10-27
| | | | | We do a logic like that at various other places, let's do it here too, to make this as little surprising as possible.
* hexdecoct: slightly extend the unbase64mem() API and relatedLennart Poettering2017-10-27
| | | | | | | | | If the string length is specified as (size_t) -1, let's use that as indicator for determining the length on our own. This makes it slightlier shorter to invoke these APIs for a very common case. Also, do some minor other coding style updates, and add assert()s here and there.
* core: implement /run/elogind/units/-based path for passing unit info from ↵Lennart Poettering2017-11-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PID 1 to journald And let's make use of it to implement two new unit settings with it: 1. LogLevelMax= is a new per-unit setting that may be used to configure log priority filtering: set it to LogLevelMax=notice and only messages of level "notice" and lower (i.e. more important) will be processed, all others are dropped. 2. LogExtraFields= is a new per-unit setting for configuring per-unit journal fields, that are implicitly included in every log record generated by the unit's processes. It takes field/value pairs in the form of FOO=BAR. Also, related to this, one exisiting unit setting is ported to this new facility: 3. The invocation ID is now pulled from /run/elogind/units/ instead of cgroupfs xattrs. This substantially relaxes requirements of elogind on the kernel version and the privileges it runs with (specifically, cgroupfs xattrs are not available in containers, since they are stored in kernel memory, and hence are unsafe to permit to lesser privileged code). /run/elogind/units/ is a new directory, which contains a number of files and symlinks encoding the above information. PID 1 creates and manages these files, and journald reads them from there. Note that this is supposed to be a direct path between PID 1 and the journal only, due to the special runtime environment the journal runs in. Normally, today we shouldn't introduce new interfaces that (mis-)use a file system as IPC framework, and instead just an IPC system, but this is very hard to do between the journal and PID 1, as long as the IPC system is a subject PID 1 manages, and itself a client to the journal. This patch cleans up a couple of types used in journal code: specifically we switch to size_t for a couple of memory-sizing values, as size_t is the right choice for everything that is memory. Fixes: #4089 Fixes: #3041 Fixes: #4441
* basic: remove redundant check (#7320)Topi Miettinen2017-11-13
| | | | | The check is redundant as the whole block is only evaluated if __IGNORE_pkey_mprotect is not defined. Change to #else.
* cgroup-util: add brief comments clarifying which controllers are v2-only and ↵Lennart Poettering2017-11-08
| | | | which v1-only
* basic/missing: add numbers for pkey_mprotectZbigniew Jędrzejewski-Szmek2017-11-13
| | | | Follow-up for b835eeb4ec1dd122b6feff2b70881265c529fcdd.
* string-util: when ellipsizing to a length if (size_t) -1, become a NOPLennart Poettering2017-11-10
| | | | | | | | | | Let's say that (size_t) -1 (i.e. SIZE_T_MAX) is equivalent to "unbounded" ellipsation, i.e. ellipsation as NOP. In which case the relevant functions become little more than strdup()/strndup(). This is useful to simplify caller code in case we want to turn off ellipsation in certain code paths with minimal caller-side handling for this.
* virt: trivial whitespace fixesLennart Poettering2017-10-24
|
* basic/hashmap: add cleanup of memory pools (#7164)Zbigniew Jędrzejewski-Szmek2017-11-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It was dropped in 89439d4fc0d29f04ac68432fd06ab84bc4e36e20. As a result, every process that uses a hashmap allocates and then leaks the hashmap mempools. The mempools are only allocated in the main thread, but we don't know where the memory is used. So let's check if we are the last thread and free the mempools then. This is fairly heavy, because /proc/self/status has to be opened and parsed, but we do it only when compiled for valgrind, i.e. not by default, and compared to running under valgrind or asan, the extra cost is acceptable. The big advantage is that we don't have to think or filter out this false positive. As a micro-opt, cleanup is attempted only in the main thread. We could allow any thread to check if it is the last one and perform cleanup, but that'd mean that we'd have to _do_ the check in every thread. We don't use threads like that, our non-main threads are always short-lived, so let's just accept the possibility that we'll leak memory if a thread survives. The check is also non-atomic, but it's called in a destructor of the main thread _and_ we do cleanup only when there are no other threads, so the risk of some library suddenly spawning another thread is very low. All in all, this is not perfect, but should work in 999‰ of cases. Fixes the following valgrind warning: ==22564== HEAP SUMMARY: ==22564== in use at exit: 8,192 bytes in 2 blocks ==22564== total heap usage: 243 allocs, 241 frees, 151,905 bytes allocated ==22564== ==22564== 4,096 bytes in 1 blocks are still reachable in loss record 1 of 2 ==22564== at 0x4C2FB6B: malloc (vg_replace_malloc.c:299) ==22564== by 0x4F08A8C: mempool_alloc_tile (mempool.c:62) ==22564== by 0x4F08B16: mempool_alloc0_tile (mempool.c:81) ==22564== by 0x4EF8DE0: hashmap_base_new (hashmap.c:748) ==22564== by 0x4EF8ED9: internal_hashmap_new (hashmap.c:782) ==22564== by 0x11045D: test_hashmap_copy (test-hashmap-plain.c:87) ==22564== by 0x115722: test_hashmap_funcs (test-hashmap-plain.c:914) ==22564== by 0x10FC9D: main (test-hashmap.c:60) ==22564== ==22564== 4,096 bytes in 1 blocks are still reachable in loss record 2 of 2 ==22564== at 0x4C2FB6B: malloc (vg_replace_malloc.c:299) ==22564== by 0x4F08A8C: mempool_alloc_tile (mempool.c:62) ==22564== by 0x4F08B16: mempool_alloc0_tile (mempool.c:81) ==22564== by 0x4EF8DE0: hashmap_base_new (hashmap.c:748) ==22564== by 0x4EF8EF8: internal_ordered_hashmap_new (hashmap.c:786) ==22564== by 0x10A2A0: test_ordered_hashmap_copy (test-hashmap-ordered.c:89) ==22564== by 0x10F70F: test_ordered_hashmap_funcs (test-hashmap-ordered.c:916) ==22564== by 0x10FCA2: main (test-hashmap.c:61) ==22564== ==22564== LEAK SUMMARY: ==22564== definitely lost: 0 bytes in 0 blocks ==22564== indirectly lost: 0 bytes in 0 blocks ==22564== possibly lost: 0 bytes in 0 blocks ==22564== still reachable: 8,192 bytes in 2 blocks ==22564== suppressed: 0 bytes in 0 blocks v2: - check if we are the main thread v3: - check if there are no other threads
* elogind-firstboot: add vconsole keymap support (#7035)tblume2017-11-10
| | | | | | | | Enable elogind-firstboot to set the keymap. RFE: https://github.com/elogind/elogind/issues/6346
* util-lib: mark variable with _unused_ to silence clang warningZbigniew Jędrzejewski-Szmek2017-11-01
| | | | | | _unused_ means "the variable is meant to be possible unused and gcc will not generate a warning about it", which is exactly what we need here, since we're only declaring it for the side effect of _cleanup_.
* Remove a bunch of unused variablesZbigniew Jędrzejewski-Szmek2017-11-01
| | | | | gcc does not warn about those, because of the _cleanup_ usage. clang is smarter here.
* fs-util: small tweak in chase_symlinks()Lennart Poettering2017-10-04
| | | | | | | | If we follow an absolute symlink there's no need to prefix the path with a "/", since by definition it already has one. This helps suppressing double "/" in resolved paths containing absolute symlinks.
* elogind-detect-virt: refine hypervisor detection (#7171)Razvan Cojocaru2017-10-26
| | | | | | Continue to try to get more details about the actual underlying hypervisor with successive tests until none are available. This fixes issue #7165.
* util-lib: simplify kexec_loaded()Zbigniew Jędrzejewski-Szmek2017-10-15
|
* basic/env-util: don't relax unesaping of serialized environment stringsLubomir Rintel2017-10-11
| | | | We wrote them ourselves -- they shouldn't contain invalid sequences.
* basic/env-util: drop the validation when deserializing environmentLubomir Rintel2017-10-11
| | | | | | | | | | | | | The environment variables we've serialized can quite possibly contain characters outside the set allowed by env_assignment_is_valid(). In fact, my environment seems to contain a couple of these: * TERMCAP set by screen contains a '\x7f' character * BASH_FUNC_module%% variable has a '%' character in name Strict check of environment variables name and value certainly makes sense for unit files, but not so much for deserialization of values we already had in our environment.
* Some minor cleanupsSven Eden2018-03-07
|
* Meson build system: Add missing '#' in masked blocksSven Eden2018-03-07
|
* Introduce elogind-uaccess-command to replace uaccess builtin.Arthur Taylor2018-03-07
| | | | | | | | | | | | | The uaccess udev builtin command is only used by logind and contains functionality only implemented in logind. As such, while we cannot write udev-builtin commands in elogind (not being udev), we can write standalone binaries and rewrite our udev rules to use them instead. This fixes the feature of granting users access to devices using a user ACL which is toggled only when the user is associated with an active session. Currently this functionality is half broken, as while the ACL is granted and revoked while VT-switching, it is not granted to new devices as they are plugged in. This issue is fixed by this commit.
* work-around usage of glibc-specific __register_atfork for musl systemsmaxice82018-01-24
| | | | | | | __register_atfork is glibc-specific but is roughly equivalent to pthread_atfork, add a definition of it on musl_missing.h and guard against the definition of __register_atfork on src/basic/process-util.c using #ifdef __GLIBC__
* Prep v235.3 : Fix cgroup hierarchy detection codeSven Eden2018-01-18
| | | | | | | There is no sub-grouping with elogind, so /sys/fs/cgroup/elogind is not needed to be mounted as cgroup fs in legacy mode. Fixes Bug https://bugs.gentoo.org/644834
* If elogind is just started, /sys/fs/cgroup/elogind might not exist, yet on ↵Sven Eden2018-01-15
| | | | legacy and hybrid systems.
* Prep 235: Make cgroups2 available, hybrid mode already works.Sven Eden2018-01-10
|
* Prep 235: Enabled sd_bus_creds_get_slice(), sd_bus_creds_get_user_slice(), ↵Sven Eden2018-01-09
| | | | sd_peer_get_user_slice() and sd_pid_get_user_slice() to try to work with eloginds session id to user mapping.
* Prep 235: Enabled sd_peer_get_slice() and sd_pid_get_slice() to at least try ↵Sven Eden2018-01-09
| | | | to work. This is considered experimental.