summaryrefslogtreecommitdiff
path: root/src/basic
AgeCommit message (Collapse)Author
2017-04-27tmpfiles: use safe_glob()Zbigniew Jędrzejewski-Szmek
This filters out "." and ".." from glob results. Fixes #5655 and #5644. Any judgements on whether the path is "safe" are removed. We will not remove "/" under any name (including "/../" and such), but we will remove stuff that is specified using paths that include "//", "/./" and "/../". Such paths can be created when joining strings automatically, or for other reasons, and people generally know what ".." and "." is. Tests are added to make sure that the helper functions behave as expected.
2017-04-27basic: add readdir_no_dot and safe_glob functionsZbigniew Jędrzejewski-Szmek
safe_glob filters out "." and "..". This converts all users of glob_extend() and glob_exists() to safe_glob.
2017-04-25Merge pull request #5704 from keszybz/mesonEvgeny Vereshchagin
meson: build systemd using meson
2017-04-25meson: also indent scripts with 8 spacesZbigniew Jędrzejewski-Szmek
2017-04-25Add Geneve netlink properties to missing.hSusant Sahani
2017-04-23meson: use "sh -eu" and make .sh +x, .py -xZbigniew Jędrzejewski-Szmek
Shell scripts should be executable so that meson reports their invocation succinctly (does not print 'sh' '-e'). Python scripts should not be executable so that meson does the detection of the right python binary itself. Add -u everywhere to catch potential errors.
2017-04-23meson: reindent all files with 8 spacesZbigniew Jędrzejewski-Szmek
The indentation for emacs'es meson-mode is added .dir-locals. All files are reindented automatically, using the lasest meson-mode from git. Indentation should now be fairly consistent.
2017-04-23meson: make cpp invocations cross-compilation friendlyZbigniew Jędrzejewski-Szmek
This implementation assumes that the arguments in compiler.cmd_array() don't contain any spaces. Since we are only interested in compilation on Linux, I think this is a safe assumption. Solution suggested by Nirbheek Chauhan.
2017-04-23meson: build systemd using mesonZbigniew Jędrzejewski-Szmek
It's crucial that we can build systemd using VS2010! ... er, wait, no, that's not the official reason. We need to shed old systems by requring python 3! Oh, no, it's something else. Maybe we need to throw out 345 years of knowlege accumulated in autotools? Whatever, this new thing is cool and shiny, let's use it. This is not complete, I'm throwing it out here for your amusement and critique. - rules for sd-boot are missing. Those might be quite complicated. - rules for tests are missing too. Those are probably quite simple and repetitive, but there's lots of them. - it's likely that I didn't get all the conditions right, I only tested "full" compilation where most deps are provided and nothing is disabled. - busname.target and all .busname units are skipped on purpose. Otherwise, installation into $DESTDIR has the same list of files and the autoconf install, except for .la files. It'd be great if people had a careful look at all the library linking options. I added stuff until things compiled, and in the end there's much less linking then in the old system. But it seems that there's still a lot of unnecessary deps. meson has a `shared_module` statement, which sounds like something appropriate for our nss and pam modules. Unfortunately, I couldn't get it to work. For the nss modules, we need an .so version of '2', but `shared_module` disallows the version argument. For the pam module, it also didn't work, I forgot the reason. The handling of .m4 and .in and .m4.in files is rather awkward. It's likely that this could be simplified. If make support is ever dropped, I think it'd make sense to switch to a different templating system so that two different languages and not required, which would make everything simpler yet. v2: - use get_pkgconfig_variable - use sh not bash - use add_project_arguments v3: - drop required:true and fix progs/prog typo v4: - use find_library('bz2') - add TTY_GID definition - define __SANE_USERSPACE_TYPES__ - use join_paths(prefix, ...) is used on all paths to make them all absolute v5: - replace all declare_dependency's with [] - add more conf.get guards around optional components v6: - drop -pipe, -Wall which are the default in meson - use compiler.has_function() and compiler.has_header_symbol instead of the hand-rolled checks. - fix duplication in 'liblibsystemd' library name - use the right .sym file for pam_systemd - rename 'compiler' to 'cc': shorter, and more idiomatic. v7: - use ENABLE_ENVIRONMENT_D not HAVE_ENVIRONMENT_D - rename prefix to prefixdir, rootprefix to rootprefixdir ("prefix" is too common of a name and too easy to overwrite by mistake) - wrap more stuff with conf.get('ENABLE...') == 1 - use rootprefix=='/' and rootbindir as install_dir, to fix paths under split-usr==true. v8: - use .split() also for src/coredump. Now everything is consistent ;) - add rootlibdir option and use it on the libraries that require it v9: - indentation v10: - fix check for qrencode and libaudit v11: - unify handling of executable paths, provide options for all progs This makes the meson build behave slightly differently than the autoconf-based one, because we always first try to find the executable in the filesystem, and fall back to the default. I think different handling of loadkeys, setfont, and telinit was just a historical accident. In addition to checking in $PATH, also check /usr/sbin/, /sbin for programs. In Fedora $PATH includes /usr/sbin, (and /sbin is is a symlink to /usr/sbin), but in Debian, those directories are not included in the path. C.f. https://github.com/mesonbuild/meson/issues/1576. - call all the options 'xxx-path' for clarity. - sort man/rules/meson.build properly so it's stable
2017-04-23Merge pull request #5774 from keszybz/printf-annotationsDjalal Harouni
Printf annotation improvements
2017-04-21basic/log: expose log_dispatchZbigniew Jędrzejewski-Szmek
This is useful when we want to avoid printf formatting on the message. It's nicer than using log_struct with "%s" as the format, because printf is slow and with a large message (like from a backtrace) this would require extra unnecessary memory. I'm not exposing all the fields in the wrapper: only level and errno. Those are the most likely to be useful.
2017-04-21tree-wide: mark log_struct with _printf_ and fix falloutZbigniew Jędrzejewski-Szmek
log_struct takes multiple format strings, each one followed by arguments. The _printf_ annotation is not sufficiently flexible to express this, but we can still annotate the first format string, though not its arguments (because their number is unknown). With the annotation, the places which specified the message id or similar as the first pattern cause a warning from -Wformat-nonliteral. This can be trivially fixed by putting the MESSAGE= first. This change will help find issues where a non-literal is erroneously used as the pattern.
2017-04-21basic/random-util: add new header for getrandom()Zbigniew Jędrzejewski-Szmek
There's some confusion: older man pages specify that linux/random.h contains getrandom, but newer glibc has it in sys/random.h. Detect if the newer header is available and include it. We still need the older header for the flags.
2017-04-21basic/missing.h: drop inclusion of macro.hZbigniew Jędrzejewski-Szmek
It's not necessary for anything.
2017-04-20basic/log: fix _printf_ annotation on log_object_internalvZbigniew Jędrzejewski-Szmek
Fixup for 4b58153dd22172d817055d2a09a0cdf3f4bd9db3. I saw this because of a clang warning. With gcc the -Wformat-nonliteral warning doesn't seem to work as expected. In two places, a string constructed with strjoina is used as the pattern. This is safe, because we're taking a pattern which was already marked with _printf_ and prepending a known value to it. Those places are marked with #pragma to silence the warning.
2017-04-19basic/def.h: drop TTY_GID definitionZbigniew Jędrzejewski-Szmek
We already provide a definition through the configuration system, this one is duplicate.
2017-04-17Merge pull request #5708 from vcatechnology/arm-cross-compileLennart Poettering
ARM32 cross-compile fixes
2017-04-06build-sys: correct blkid.h includesMatt Clarkson
When using pkg-config to determine the include flags for blkid the flags are returned as: $ pkg-config blkid --cflags -I/usr/include/blkid -I/usr/include/uuid We use the <blkid/blkid.h> include which would be correct when using the default compiler /usr/include header search path. However, when cross-compiling the blkid.h will not be installed at /usr/include and highly likely in a temporary system root. It is futher compounded if the cross-compile packages are split up and the blkid package is not available in the same sysroot as the compiler. Regardless of the compilation setup, the correct include path should be <blkid.h> if using the pkg-config returned CFLAGS.
2017-03-31Merge pull request #5534 from ssahani/vxlan-labelLennart Poettering
networkd: vxlan support setting IPv6 flow label
2017-03-29basic: forbid rm_rf() to remove paths ending with ".." (#5653)Jan Synacek
Fixes: #5644
2017-03-21basic/journal-importer: Fix unaligned access in get_data_size() (#5622)John Paul Adrian Glaubitz
2017-03-15fix includesMatija Skala
linux/sockios.h is needed for the SIOCGSTAMPNS macro xlocale.h is included indirectly in glibc and doesn't even exist in other libcs
2017-03-14missing.h: add vxlan netlink propertiesSusant Sahani
2017-03-05coredump: fix handling of premature-eof data for --backtraceZbigniew Jędrzejewski-Szmek
We'd fail with an assert in journal_importer_process_data(), because that function requires the caller to handle EOF themselves.
2017-03-02basic/architecture: Add sub-architecture types for SuperHJohn Paul Adrian Glaubitz
On SuperH, there are multiple sub-architectures defined with different values for LIB_ARCH_TUPLE. The different sub- architectures can be detected by checking whether __SH1__, __SH2__, __SH3__, __SH4__, and so on are defined.
2017-03-02basic/architecture: Properly set LIB_ARCH_TUPLE for powerpcspeJohn Paul Adrian Glaubitz
On powerpc, there are two possible ABIs and hence values for LIB_ARCH_TUPLE. The convential type with an FPU and the embedded variant, called powerpcspe, which does not have a convential FPU but a special Signal Processing Engine (SPE). The latter can be detected by checking whether __NO_FPRS__ is defined.
2017-03-02basic/architecture: Properly set LIB_ARCH_TUPLE for x32John Paul Adrian Glaubitz
On x86_64, there are two possible ABIs and hence values for LIB_ARCH_TUPLE. The convential 64-bit type and the 32-bit variant, called x32. The latter can be detected by checking whether __ILP32__ is defined.
2017-03-01Revert "util: Fine tune running_in_chroot() a bit" (#5506)Lennart Poettering
This reverts commit 295ee9845c801300298d01256eb5a9e3ff117ae0. Let'd revert this for now, see #5446 for discussions. We want systemd-detect-virt --chroot to return true for all chroot-like stuff, for example mock environments which have use a mount namespace. The downside of this revert that systemctl will not work from our own namespaced services, anything with RootDirectory=/RootImage= set.
2017-03-01mount-util: accept that name_to_handle_at() might fail with EPERM (#5499)Lennart Poettering
Container managers frequently block name_to_handle_at(), returning EACCES or EPERM when this is issued. Accept that, and simply fall back to to fdinfo-based checks. Note that we accept either EACCES or EPERM here, as container managers can choose the error code and aren't very good on agreeing on just one. (note that this is a non-issue with nspawn, as we permit name_to_handle_at() there, only block open_by_handle_at(), which should be sufficiently safe).
2017-02-28Merge pull request #5464 from ssahani/labelLennart Poettering
socket-util: introduce address_label_valid
2017-02-28Merge pull request #5438 from ssahani/vxlan-addressLennart Poettering
networkd: add symlinks for Makefile (netdev and wait-online) , vxlan enhancements.
2017-02-28socket-util: introduce address_label_validSusant Sahani
2017-02-28Fix MIPS N64 and N32 LIB_ARCH_TUPLE (#5469)YunQiang Su
* Fix MIPS N64 and N32 LIB_ARCH_TUPLE For mips, we have 3 major ABIs, they are N64, N32 and O32. Both N32 and N64 defined __mips64__, and only N64 defined __LP64__.
2017-02-27build-sys: add LIB_ARCH_TUPLE for tilegx-linux-gnu (#5474)Martin Pitt
Fix build failure on the tilegx architecture. https://bugs.debian.org/856306
2017-02-24Merge pull request #5444 from poettering/cgroups-revert-no-errorZbigniew Jędrzejewski-Szmek
Revert "core: simplify cg_[all_]unified()" and more.
2017-02-24Fix missing space in comments (#5439)AsciiWolf
2017-02-24cgroup: rework cg_all_unified()Lennart Poettering
Let's just check the unified level, directly. There's really no value in wrapping cg_unified_controllers() with this, i.e. potentially do string comparison when there's no reason to. Also, this makes the clal more alike cg_hybrid_unified().
2017-02-24cgroup: rename cg_update_unified() → cg_unified_update()Lennart Poettering
We usually put the noun first, the verb (i.e. method) secont, for example in cg_unified_flush(), let's follow the logic here...
2017-02-24cgroup: rename cg_unified() → cg_unified_controller()Lennart Poettering
cg_unified() is a bit generic a name, let's make clear that it checks whether a specified controller is in unified mode.
2017-02-24cgroup: change cg_unified() to possibly return errors againLennart Poettering
We use our cgroup APIs in various contexts, including from our libraries sd-login, sd-bus. As we don#t control those environments we can't rely that the unified cgroup setup logic succeeds, and hence really shouldn't assert on it. This more or less reverts 415fc41ceaeada2e32639f24f134b1c248b9e43f.
2017-02-24cgroup-util: check unified_cache before invoking streq()Lennart Poettering
Just a minor optimization.
2017-02-24socket-util: introduce in_addr_is_multicastSusant Sahani
This patch add support to test whether a internet address is multicast or not.
2017-02-23Merge pull request #4670 from htejun/systemd-controller-on-unified-v2Lennart Poettering
Systemd controller on unified v2
2017-02-22cgroup-util: fix the case of default=unified, unified-cgroup-hierarchy=0Zbigniew Jędrzejewski-Szmek
We should mount the hybrid hierarchy if the user disabled the unified hierarchy on the kernel command line.
2017-02-22cgroup-util: cache all cg_is_*_wanted answers, disable ↵Zbigniew Jędrzejewski-Szmek
/sys/fs/cgroups/unified on unified If we encounter an error in proc cmdline parsing, just treat that as permanent, i.e. the same as if the option was not specified. Realistically, it is better to use the same condition for all related mounts, then to have e.g. /sys/fs/cgroup mounted and /sys/fs/cgroup/unified not. If we find something is mounted and base our answer on that, cache that result too. Fix the conditions so that if "unified" is used, make sure any "hybrid" mounts are not mounted.
2017-02-22core/mount-setup: if unified hierarchy is not supported, fall back to legacyZbigniew Jędrzejewski-Szmek
We need this to gracefully support older or strangely configured kernels. v2: - do not install a callback handler, just embed the right conditions into cg_is_*_wanted() v3: - fix bug in cg_is_legacy_wanted()
2017-02-22Rename cg_is_unified_systemd_controller_wanted to cg_is_hybrid_wantedZbigniew Jędrzejewski-Szmek
Less typing and doesn't make the table so incredibly wide.
2017-02-22Merge pull request #5409 from keszybz/test-env-util-memleakEvgeny Vereshchagin
test-env-util: fix typo leading to memleak
2017-02-21Revert "basic/strv: allow NULLs to be inserted into strv"Lennart Poettering
This reverts commit 18f71a3c8174774c5386c4aba94d54f3b5c36a84. According to @keszybz we don't need this anymore, hence drop it: https://github.com/systemd/systemd/pull/5131/commits/18f71a3c8174774c5386c4aba94d54f3b5c36a84#r102232368
2017-02-21log: never log into foreign fd #2 in PID 1 or its pre-execve() childrenLennart Poettering
Fixes: #5401