summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2017-02-01nspawn: Print attempted execv() path on failure (#5199)Philip Withnall
The failure message is typically currently: execv() failed: No such file or directory which is not very useful because it doesn’t tell you which file or directory it was trying to exec.
2017-02-01Merge pull request #5166 from keszybz/gcc7Evgeny Vereshchagin
Fixes for gcc 7 and new µhttpd & glibc warnings
2017-01-31Merge pull request #5146 from ssahani/ifname-aliasZbigniew Jędrzejewski-Szmek
networkd: Allow ':' in label This reverts a341dfe563 and takes a slightly different approach: anything is allowed in network interface labels, but network interface names are verified as before (i.e. amongst other things, no colons are allowed there).
2017-01-31nss-util: silence warning about deprecated RES_USE_INET6Zbigniew Jędrzejewski-Szmek
src/nss-resolve/nss-resolve.c: In function ‘_nss_resolve_gethostbyname_r’: src/nss-resolve/nss-resolve.c:680:13: warning: RES_USE_INET6 is deprecated NSS_GETHOSTBYNAME_FALLBACKS(resolve); ^~~~~~~~~~~~~~~~~~~~~~~~~ In glibc bz #19582, RES_USE_INET6 was deprecated. This might make sense for clients, but they didn't take into account nss module implementations which *must* continue to support the option. glibc internally defines DEPRECATED_RES_USE_INET6 which can be used without emitting a warning, but it's not exported publicly. Let's do the same, and just copy the definition to our header.
2017-01-31MurmurHash: all /* fall through */ commentsZbigniew Jędrzejewski-Szmek
2017-01-31journal/lookup3: silence gcc 7 implicit-fallthrough warningZbigniew Jędrzejewski-Szmek
This file doesn't include any of our headers, so just use the pragma without defining it in macros.h
2017-01-31tree-wide: adjust fall through comments so that gcc is happyZbigniew Jędrzejewski-Szmek
gcc 7 adds -Wimplicit-fallthrough=3 to -Wextra. There are a few ways we could deal with that. After we take into account the need to stay compatible with older versions of the compiler (and other compilers), I don't think adding __attribute__((fallthrough)), even as a macro, is worth the trouble. It sticks out too much, a comment is just as good. But gcc has some very specific requiremnts how the comment should look. Adjust it the specific form that it likes. I don't think the extra stuff we had in those comments was adding much value. (Note: the documentation seems to be wrong, and seems to describe a different pattern from the one that is actually used. I guess either the docs or the code will have to change before gcc 7 is finalized.)
2017-01-31nspawn: fix clobbering of selinux context argZbigniew Jędrzejewski-Szmek
First bug fixed by gcc 7. Yikes.
2017-01-31pid1: remove duplicate const attributeZbigniew Jędrzejewski-Szmek
gcc 7 started warning about this.
2017-01-31microhttpd-util: silence warnings about deprecated optionsZbigniew Jędrzejewski-Szmek
2017-01-31core: fix copy paste error (s/source/destination/) (#5197)Evgeny Vereshchagin
``` -bash-4.3# systemd-run --property BindPaths=/etc:tmp/hey sh -c 'ls /tmp/hey' ``` prints `Destination path tmp/hey is not absolute.` instead of `Destination path /etc is not absolute.` CID #1368239
2017-01-31coredump: really extract container cmdline (#5167)Evgeny Vereshchagin
Fixes: ``` root# systemd-nspawn -D ./cont/ --register=no /bin/sh -c '/bin/sh -c "kill -ABRT \$\$"' ... Container cont failed with error code 134. root# journalctl MESSAGE_ID=fc2e22bc6ee647b6b90729ab34a250b1 -o verbose | grep -i container_cmdline ...prints nothing... ...should be COREDUMP_CONTAINER_CMDLINE=systemd-nspawn -D ./cont/ --register=no /bin/sh -c /bin/sh -c "kill -ABRT \$\$" ``` Also, fixes CID #1368263 ``` ==352== 130 bytes in 1 blocks are definitely lost in loss record 1 of 2 ==352== at 0x4C2ED5F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==352== by 0x4ED8581: greedy_realloc (alloc-util.c:57) ==352== by 0x4ECAAD5: get_process_cmdline (process-util.c:147) ==352== by 0x10E385: get_process_container_parent_cmdline (coredump.c:645) ==352== by 0x112949: process_kernel (coredump.c:1240) ==352== by 0x113003: main (coredump.c:1297) ==352== ```
2017-01-31Merge pull request #5168 from ddstreet/apply_format_helperZbigniew Jędrzejewski-Szmek
simplify udev_event_apply_format().
2017-01-31Merge pull request #5192 from keszybz/systemctl-ignore-sigtermZbigniew Jędrzejewski-Szmek
Fix for initrd-switch-root failing and causing emergency.target to be started.
2017-01-31util-lib: Fix chase_symlinks() with absolute symlinks (#5185)3chas3
If chase_symlinks() encouters an absolute symlink, it resets the todo buffer to just the newly discovered symlink and discards any of the remaining previous symlink path. Regardless of whether or not the symlink is absolute or relative, we need to preserve the remainder of the path that has not yet been resolved.
2017-01-31basic: check strdup result in khash_dup (#5176)Evgeny Vereshchagin
Fixes CID #1368249
2017-01-31Merge pull request #5175 from keszybz/hostname-fallbackMartin Pitt
Allow distributions to override the "localhost" fallback
2017-01-31systemctl: ignore SIGTERM after switch rootZbigniew Jędrzejewski-Szmek
https://bugzilla.redhat.com/show_bug.cgi?id=1414904#c14 and #c15.
2017-01-31systemctl: always avoid being killed when doing switch-rootZbigniew Jędrzejewski-Szmek
The same logic as described in acc28e2e3037d689d6481e applies to any time we are switching root, to just set the flag unconditionally.
2017-01-30journal-gatewayd: return -EINVAL if ARG_TRUST and HAVE_GNUTLS (#5181)Yi EungJun
This bug was introduced by 1aa1e59.
2017-01-29journal-gatewayd: actually recognize -D as a synonym for --directory (#5180)Ivan Shapovalov
2017-01-27build-sys,hostnamed: allow distributions to override the "localhost" fallbackZbigniew Jędrzejewski-Szmek
A configure param is added to make this easy to change if distributions want to differentiate on that. The default remains unchanged. https://bugzilla.redhat.com/show_bug.cgi?id=1392925#c10
2017-01-27udev-event: use in-place whitespace replacementDan Streetman
Instead of using a temp buffer to replace whitespace in variable substitutions, just allow util_replace_whitespace to replace in-place. Add a comment to util_replace_whitespace indicating it is used to replace in-place, to prevent accidental future breakage.
2017-01-27udev-event: refactor udev_event_apply_formatDan Streetman
Move the large case statement into its own function
2017-01-24resolve: fix strv memleakZbigniew Jędrzejewski-Szmek
sd_bus_message_read_strv() returns a normal strv...
2017-01-24core/execute: fix strv memleakZbigniew Jędrzejewski-Szmek
compile_read_write_paths() returns a normal strv from strv_copy(), and setup_namespace() uses it read-only, so we should use strv_free to deallocate.
2017-01-24core/dbus: fix two strv memleaksZbigniew Jędrzejewski-Szmek
job_dbus_path and unit_dbus_path both allocate new strings, so we should use strv_free.
2017-01-24core: fix memleak in bus_exec_context_set_transient_property (#5143)Evgeny Vereshchagin
Fixes: ```sh systemd-run --property EnvironmentFile=/some/environment/file /bin/sleep 30 ``` ``` 23 bytes in 1 blocks are definitely lost in loss record 1 of 7 at 0x4C2DB9D: malloc (vg_replace_malloc.c:299) by 0x4E85488: malloc_multiply (alloc-util.h:70) by 0x4E85F19: strjoin_real (string-util.c:252) by 0x1AF741: bus_exec_context_set_transient_property (dbus-execute.c:1418) by 0x1A907C: bus_service_set_property (dbus-service.c:330) by 0x1A66DD: bus_unit_set_properties (dbus-unit.c:1456) by 0x19CF93: transient_unit_from_message (dbus-manager.c:892) by 0x19D388: method_start_transient_unit (dbus-manager.c:980) by 0x4F60544: method_callbacks_run (bus-objects.c:418) by 0x4F62D9D: object_find_and_run (bus-objects.c:1255) by 0x4F633CE: bus_process_object (bus-objects.c:1371) by 0x4F2CE1D: process_message (sd-bus.c:2563) ``` Closes: #5142
2017-01-24tree-wide: remove consecutive duplicate words in comments (#5148)Stefan Schweter
2017-01-24virt: update url to hypervisor top-level functional specification (#5149)Stefan Schweter
2017-01-25networkd: Allow ':' in labelSusant Sahani
IFA_LABEL does not need much of a validation except the length that is IFNAMSIZ as seen from kernel code.
2017-01-24socket-utils: revert f1811313f42dc7ddaed3c47edc834c2bfd1309b2Susant Sahani
':' in not a a valid interface name.
2017-01-24core: don't load dropin data multiple times for the same unit (#5139)Franck Bui
When an alias is loaded, we resolve this alias to its final unit first to load the dropin data. However if the final unit was already loaded, there's no point in reloading the dropin data a second time. This patch optimizes this case. Also this allows the dropin loading code to assume that only units not yet loaded are passed down. This assumption is not yet used but might be in the future. [zj: invert the condition in the if]
2017-01-23network: accept colons in network interface names, normally used for alias ↵peoronoob
interfaces (#5117)
2017-01-23core: improve error message when RefuseManualStart(Stop) is hit (#5132)Jan Synacek
2017-01-23load-fragment: fix comment to reflect changes made in 43eb109 (#5138)Michal Sekletar
2017-01-23sd-network: fix memleak in dhcp6_lease_set_domains (#5113)Evgeny Vereshchagin
The simplest way to reproduce: ```diff diff --git a/src/libsystemd-network/test-dhcp6-client.c b/src/libsystemd-network/test-dhcp6-client.c index bd289fa..4e14d8f 100644 --- a/src/libsystemd-network/test-dhcp6-client.c +++ b/src/libsystemd-network/test-dhcp6-client.c @@ -286,6 +286,8 @@ static int test_advertise_option(sd_event *e) { assert_se(optlen == 11); assert_se(dhcp6_lease_set_domains(lease, optval, optlen) >= 0); + assert_se(dhcp6_lease_set_domains(lease, optval, + optlen) >= 0); break; case SD_DHCP6_OPTION_SNTP_SERVERS: ``` Fixes: ``` ==27369==ERROR: LeakSanitizer: detected memory leaks Direct leak of 10 byte(s) in 1 object(s) allocated from: #0 0x7f90e7d21160 in strdup (/lib64/libasan.so.3+0x5a160) #1 0x7f90e7467f69 in strv_extend src/basic/strv.c:552 #2 0x5612fcc19379 in dhcp6_option_parse_domainname src/libsystemd-network/dhcp6-option.c:399 #3 0x5612fcc1acdf in dhcp6_lease_set_domains src/libsystemd-network/sd-dhcp6-lease.c:225 #4 0x5612fcc06b95 in test_advertise_option src/libsystemd-network/test-dhcp6-client.c:287 #5 0x5612fcc0a987 in main src/libsystemd-network/test-dhcp6-client.c:761 #6 0x7f90e6d46400 in __libc_start_main (/lib64/libc.so.6+0x20400) SUMMARY: AddressSanitizer: 10 byte(s) leaked in 1 allocation(s). ```
2017-01-23sd-network: fix memleak in dhcp6_option_parse_domainname (#5114)Evgeny Vereshchagin
The simplest way to reproduce: ```diff diff --git a/src/libsystemd-network/test-dhcp6-client.c b/src/libsystemd-network/test-dhcp6-client.c index bd289fa..7b0a5ef 100644 --- a/src/libsystemd-network/test-dhcp6-client.c +++ b/src/libsystemd-network/test-dhcp6-client.c @@ -168,7 +168,7 @@ static uint8_t msg_advertise[198] = { 0x00, 0x17, 0x00, 0x10, 0x20, 0x01, 0x0d, 0xb8, 0xde, 0xad, 0xbe, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x18, 0x00, 0x0b, - 0x03, 0x6c, 0x61, 0x62, 0x05, 0x69, 0x6e, 0x74, + 0x01, 0x6c, 0x01, 0x62, 0x00, 0x0a, 0x6e, 0x74, 0x72, 0x61, 0x00, 0x00, 0x1f, 0x00, 0x10, 0x20, 0x01, 0x0d, 0xb8, 0xde, 0xad, 0xbe, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, @@ -338,9 +338,7 @@ static int test_advertise_option(sd_event *e) { assert_se(!memcmp(addrs, &msg_advertise[124], r * 16)); r = sd_dhcp6_lease_get_domains(lease, &domains); - assert_se(r == 1); - assert_se(!strcmp("lab.intra", domains[0])); - assert_se(domains[1] == NULL); + assert_se(r == -ENOENT); r = sd_dhcp6_lease_get_ntp_addrs(lease, &addrs); assert_se(r == 1); ``` Fixes: ``` ================================================================= ==15043==ERROR: LeakSanitizer: detected memory leaks Direct leak of 4 byte(s) in 1 object(s) allocated from: #0 0x7f13c8564160 in strdup (/lib64/libasan.so.3+0x5a160) #1 0x7f13c7caaf69 in strv_extend src/basic/strv.c:552 #2 0x55f775787230 in dhcp6_option_parse_domainname src/libsystemd-network/dhcp6-option.c:399 #3 0x55f775788b96 in dhcp6_lease_set_domains src/libsystemd-network/sd-dhcp6-lease.c:225 #4 0x55f775774b95 in test_advertise_option src/libsystemd-network/test-dhcp6-client.c:287 #5 0x55f77577883e in main src/libsystemd-network/test-dhcp6-client.c:759 #6 0x7f13c7589400 in __libc_start_main (/lib64/libc.so.6+0x20400) Direct leak of 4 byte(s) in 1 object(s) allocated from: #0 0x7f13c8564160 in strdup (/lib64/libasan.so.3+0x5a160) #1 0x7f13c7caaf69 in strv_extend src/basic/strv.c:552 #2 0x55f775787230 in dhcp6_option_parse_domainname src/libsystemd-network/dhcp6-option.c:399 #3 0x55f775788b96 in dhcp6_lease_set_domains src/libsystemd-network/sd-dhcp6-lease.c:225 #4 0x55f775781348 in client_parse_message src/libsystemd-network/sd-dhcp6-client.c:807 #5 0x55f775781ba2 in client_receive_advertise src/libsystemd-network/sd-dhcp6-client.c:895 #6 0x55f775782453 in client_receive_message src/libsystemd-network/sd-dhcp6-client.c:994 #7 0x7f13c7e447f4 in source_dispatch src/libsystemd/sd-event/sd-event.c:2268 #8 0x7f13c7e471b0 in sd_event_dispatch src/libsystemd/sd-event/sd-event.c:2627 #9 0x7f13c7e47ab3 in sd_event_run src/libsystemd/sd-event/sd-event.c:2686 #10 0x7f13c7e47c21 in sd_event_loop src/libsystemd/sd-event/sd-event.c:2706 #11 0x55f77577863c in test_client_solicit src/libsystemd-network/test-dhcp6-client.c:737 #12 0x55f77577884b in main src/libsystemd-network/test-dhcp6-client.c:760 #13 0x7f13c7589400 in __libc_start_main (/lib64/libc.so.6+0x20400) SUMMARY: AddressSanitizer: 8 byte(s) leaked in 2 allocation(s). ```
2017-01-23core: add missing unit_add_to_load_queue() to mount_setup_new_unit()Yu Watanabe
unit_add_to_load_queue was present in the code before 03b8cfede9ff3441b1ec8ff5cdf6876294846aa4, and was inadvertently dropped. Fixes #5105
2017-01-23core: minor error handling fix in mount_setup_new_unit()Yu Watanabe
The function mount_setup_new_unit() should return -ENOMEM if at least one of `strdup` calls are failed.
2017-01-18Merge pull request #5098 from evverx/fix-nspawn-notificationsDjalal Harouni
nspawn: change owner/group of /run/systemd/nspawn/notify to userns-root
2017-01-17Merge pull request #4991 from poettering/seccomp-fixZbigniew Jędrzejewski-Szmek
2017-01-17pid1: provide a more detailed error message when execution fails (#5074)Zbigniew Jędrzejewski-Szmek
Fixes #5000.
2017-01-17seccomp: minor simplifications for is_seccomp_available()Lennart Poettering
2017-01-17seccomp: rework seccomp code, to improve compat with some archsLennart Poettering
This substantially reworks the seccomp code, to ensure better compatibility with some architectures, including i386. So far we relied on libseccomp's internal handling of the multiple syscall ABIs supported on Linux. This is problematic however, as it does not define clear semantics if an ABI is not able to support specific seccomp rules we install. This rework hence changes a couple of things: - We no longer use seccomp_rule_add(), but only seccomp_rule_add_exact(), and fail the installation of a filter if the architecture doesn't support it. - We no longer rely on adding multiple syscall architectures to a single filter, but instead install a separate filter for each syscall architecture supported. This way, we can install a strict filter for x86-64, while permitting a less strict filter for i386. - All high-level filter additions are now moved from execute.c to seccomp-util.c, so that we can test them independently of the service execution logic. - Tests have been added for all types of our seccomp filters. - SystemCallFilters= and SystemCallArchitectures= are now implemented in independent filters and installation logic, as they semantically are very much independent of each other. Fixes: #4575
2017-01-17nspawn: change owner/group of /run/systemd/nspawn/notify to userns-rootEvgeny Vereshchagin
Fixes #4944
2017-01-16core: make sure to init mount params before calling mount_is_extrinsic() (#5087)Franck Bui
When a new entry appears in /proc/self/mountinfo, mount_setup_unit() allocated a new mount unit for it and starts initializing it. mount_setup_unit() is also used to update a mount unit when a change happens in /proc/self/mountinfo, for example a mountpoint can be remounted with additional mount options. This patch introduces 2 separate functions to deal with those 2 cases instead of mount_setup_unit() dealing with both of them. The common code is small and doing the split makes the code easier to read and less error prone if extended later. It also makes sure to initialize in both functions the mount parameters of the mount unit before calling mount_is_extrinsic() since this function relies on them. Fixes: #4902
2017-01-16ndisc: honor IPv6AcceptRA.UseDNS when parsing RA options (#5071)Cédric Schieli
RDNSS and DNSLL options received in RA are always used, possibly breaking the resolution of private domains hosted on a local DNS server. When setting UseDNS=no in a [IPv6AcceptRA] section of a .network file, both RDNSS and DNSLL options in received RA should be ignored. Fixes: #5040
2017-01-15nspawn: fix memleakZbigniew Jędrzejewski-Szmek
CID #1368262: fn is allocated with new, so it should be freed.
2017-01-15shared/install-printf: fix memleakZbigniew Jędrzejewski-Szmek
instance might be "", and that string would be leaked. CID #1368264.