diff options
-rw-r--r-- | Makefile.am | 1353 | ||||
-rw-r--r-- | README | 4 | ||||
-rw-r--r-- | README.md | 3 | ||||
-rw-r--r-- | configure.ac | 10 | ||||
-rw-r--r-- | hwdb/60-keyboard.hwdb | 2 | ||||
-rw-r--r-- | hwdb/70-mouse.hwdb | 9 | ||||
-rw-r--r-- | man/systemd-cgtop.xml | 23 | ||||
-rw-r--r-- | man/systemd-udevd.service.xml | 2 | ||||
-rw-r--r-- | man/systemd.link.xml | 4 | ||||
-rw-r--r-- | man/systemd.network.xml | 7 | ||||
-rw-r--r-- | man/udev.xml | 3 | ||||
-rw-r--r-- | rules/60-block.rules | 2 | ||||
-rw-r--r-- | rules/60-persistent-storage.rules | 2 | ||||
-rw-r--r-- | src/activate/activate.c | 5 | ||||
-rw-r--r-- | src/basic/.gitignore (renamed from src/shared/.gitignore) | 0 | ||||
l--------- | src/basic/Makefile (renamed from src/shared/Makefile) | 0 | ||||
-rw-r--r-- | src/basic/MurmurHash2.c (renamed from src/shared/MurmurHash2.c) | 0 | ||||
-rw-r--r-- | src/basic/MurmurHash2.h (renamed from src/shared/MurmurHash2.h) | 0 | ||||
-rw-r--r-- | src/basic/af-list.c (renamed from src/shared/af-list.c) | 0 | ||||
-rw-r--r-- | src/basic/af-list.h (renamed from src/shared/af-list.h) | 0 | ||||
-rw-r--r-- | src/basic/arphrd-list.c (renamed from src/shared/arphrd-list.c) | 0 | ||||
-rw-r--r-- | src/basic/arphrd-list.h (renamed from src/shared/arphrd-list.h) | 0 | ||||
-rw-r--r-- | src/basic/async.c (renamed from src/shared/async.c) | 0 | ||||
-rw-r--r-- | src/basic/async.h (renamed from src/shared/async.h) | 0 | ||||
-rw-r--r-- | src/basic/audit.c (renamed from src/shared/audit.c) | 0 | ||||
-rw-r--r-- | src/basic/audit.h (renamed from src/shared/audit.h) | 0 | ||||
-rw-r--r-- | src/basic/barrier.c (renamed from src/shared/barrier.c) | 0 | ||||
-rw-r--r-- | src/basic/barrier.h (renamed from src/shared/barrier.h) | 0 | ||||
-rw-r--r-- | src/basic/blkid-util.h (renamed from src/shared/blkid-util.h) | 0 | ||||
-rw-r--r-- | src/basic/btrfs-ctree.h (renamed from src/shared/btrfs-ctree.h) | 0 | ||||
-rw-r--r-- | src/basic/btrfs-util.c (renamed from src/shared/btrfs-util.c) | 0 | ||||
-rw-r--r-- | src/basic/btrfs-util.h (renamed from src/shared/btrfs-util.h) | 0 | ||||
-rw-r--r-- | src/basic/build.h (renamed from src/shared/build.h) | 0 | ||||
-rw-r--r-- | src/basic/bus-label.c (renamed from src/shared/bus-label.c) | 0 | ||||
-rw-r--r-- | src/basic/bus-label.h (renamed from src/shared/bus-label.h) | 0 | ||||
-rw-r--r-- | src/basic/calendarspec.c (renamed from src/shared/calendarspec.c) | 0 | ||||
-rw-r--r-- | src/basic/calendarspec.h (renamed from src/shared/calendarspec.h) | 0 | ||||
-rw-r--r-- | src/basic/cap-list.c (renamed from src/shared/cap-list.c) | 0 | ||||
-rw-r--r-- | src/basic/cap-list.h (renamed from src/shared/cap-list.h) | 0 | ||||
-rw-r--r-- | src/basic/capability.c (renamed from src/shared/capability.c) | 0 | ||||
-rw-r--r-- | src/basic/capability.h (renamed from src/shared/capability.h) | 0 | ||||
-rw-r--r-- | src/basic/cgroup-util.c (renamed from src/shared/cgroup-util.c) | 26 | ||||
-rw-r--r-- | src/basic/cgroup-util.h (renamed from src/shared/cgroup-util.h) | 2 | ||||
-rw-r--r-- | src/basic/clock-util.c (renamed from src/shared/clock-util.c) | 0 | ||||
-rw-r--r-- | src/basic/clock-util.h (renamed from src/shared/clock-util.h) | 0 | ||||
-rw-r--r-- | src/basic/conf-files.c (renamed from src/shared/conf-files.c) | 0 | ||||
-rw-r--r-- | src/basic/conf-files.h (renamed from src/shared/conf-files.h) | 0 | ||||
-rw-r--r-- | src/basic/copy.c (renamed from src/shared/copy.c) | 0 | ||||
-rw-r--r-- | src/basic/copy.h (renamed from src/shared/copy.h) | 0 | ||||
-rw-r--r-- | src/basic/def.h (renamed from src/shared/def.h) | 2 | ||||
-rw-r--r-- | src/basic/device-nodes.c (renamed from src/shared/device-nodes.c) | 0 | ||||
-rw-r--r-- | src/basic/device-nodes.h (renamed from src/shared/device-nodes.h) | 0 | ||||
-rw-r--r-- | src/basic/env-util.c (renamed from src/shared/env-util.c) | 0 | ||||
-rw-r--r-- | src/basic/env-util.h (renamed from src/shared/env-util.h) | 0 | ||||
-rw-r--r-- | src/basic/errno-list.c (renamed from src/shared/errno-list.c) | 0 | ||||
-rw-r--r-- | src/basic/errno-list.h (renamed from src/shared/errno-list.h) | 0 | ||||
-rw-r--r-- | src/basic/ether-addr-util.h (renamed from src/shared/ether-addr-util.h) | 0 | ||||
-rw-r--r-- | src/basic/exit-status.c (renamed from src/shared/exit-status.c) | 0 | ||||
-rw-r--r-- | src/basic/exit-status.h (renamed from src/shared/exit-status.h) | 0 | ||||
-rw-r--r-- | src/basic/fdset.c (renamed from src/shared/fdset.c) | 0 | ||||
-rw-r--r-- | src/basic/fdset.h (renamed from src/shared/fdset.h) | 0 | ||||
-rw-r--r-- | src/basic/fileio-label.c (renamed from src/shared/fileio-label.c) | 0 | ||||
-rw-r--r-- | src/basic/fileio-label.h (renamed from src/shared/fileio-label.h) | 0 | ||||
-rw-r--r-- | src/basic/fileio.c (renamed from src/shared/fileio.c) | 0 | ||||
-rw-r--r-- | src/basic/fileio.h (renamed from src/shared/fileio.h) | 0 | ||||
-rw-r--r-- | src/basic/gunicode.c (renamed from src/shared/gunicode.c) | 0 | ||||
-rw-r--r-- | src/basic/gunicode.h (renamed from src/shared/gunicode.h) | 0 | ||||
-rw-r--r-- | src/basic/hashmap.c (renamed from src/shared/hashmap.c) | 0 | ||||
-rw-r--r-- | src/basic/hashmap.h (renamed from src/shared/hashmap.h) | 0 | ||||
-rw-r--r-- | src/basic/hostname-util.c (renamed from src/shared/hostname-util.c) | 0 | ||||
-rw-r--r-- | src/basic/hostname-util.h (renamed from src/shared/hostname-util.h) | 0 | ||||
-rw-r--r-- | src/basic/in-addr-util.c (renamed from src/shared/in-addr-util.c) | 0 | ||||
-rw-r--r-- | src/basic/in-addr-util.h (renamed from src/shared/in-addr-util.h) | 0 | ||||
-rw-r--r-- | src/basic/ioprio.h (renamed from src/shared/ioprio.h) | 0 | ||||
-rw-r--r-- | src/basic/json.c (renamed from src/shared/json.c) | 0 | ||||
-rw-r--r-- | src/basic/json.h (renamed from src/shared/json.h) | 0 | ||||
-rw-r--r-- | src/basic/label.c (renamed from src/shared/label.c) | 0 | ||||
-rw-r--r-- | src/basic/label.h (renamed from src/shared/label.h) | 0 | ||||
l--------- | src/basic/linux/Makefile (renamed from src/shared/linux/Makefile) | 0 | ||||
-rw-r--r-- | src/basic/list.h (renamed from src/shared/list.h) | 0 | ||||
-rw-r--r-- | src/basic/locale-util.c (renamed from src/shared/locale-util.c) | 0 | ||||
-rw-r--r-- | src/basic/locale-util.h (renamed from src/shared/locale-util.h) | 0 | ||||
-rw-r--r-- | src/basic/lockfile-util.c (renamed from src/shared/lockfile-util.c) | 0 | ||||
-rw-r--r-- | src/basic/lockfile-util.h (renamed from src/shared/lockfile-util.h) | 0 | ||||
-rw-r--r-- | src/basic/log.c (renamed from src/shared/log.c) | 0 | ||||
-rw-r--r-- | src/basic/log.h (renamed from src/shared/log.h) | 0 | ||||
-rw-r--r-- | src/basic/login-util.c (renamed from src/shared/login-shared.c) | 2 | ||||
-rw-r--r-- | src/basic/login-util.h (renamed from src/shared/login-shared.h) | 0 | ||||
-rw-r--r-- | src/basic/macro.h (renamed from src/shared/macro.h) | 3 | ||||
-rw-r--r-- | src/basic/memfd-util.c (renamed from src/shared/memfd-util.c) | 0 | ||||
-rw-r--r-- | src/basic/memfd-util.h (renamed from src/shared/memfd-util.h) | 0 | ||||
-rw-r--r-- | src/basic/mempool.c (renamed from src/shared/mempool.c) | 0 | ||||
-rw-r--r-- | src/basic/mempool.h (renamed from src/shared/mempool.h) | 0 | ||||
-rw-r--r-- | src/basic/missing.h (renamed from src/shared/missing.h) | 0 | ||||
-rw-r--r-- | src/basic/mkdir-label.c (renamed from src/shared/mkdir-label.c) | 0 | ||||
-rw-r--r-- | src/basic/mkdir.c (renamed from src/shared/mkdir.c) | 0 | ||||
-rw-r--r-- | src/basic/mkdir.h (renamed from src/shared/mkdir.h) | 0 | ||||
-rw-r--r-- | src/basic/ordered-set.h (renamed from src/shared/ordered-set.h) | 0 | ||||
-rw-r--r-- | src/basic/path-util.c (renamed from src/shared/path-util.c) | 16 | ||||
-rw-r--r-- | src/basic/path-util.h (renamed from src/shared/path-util.h) | 0 | ||||
-rw-r--r-- | src/basic/prioq.c (renamed from src/shared/prioq.c) | 0 | ||||
-rw-r--r-- | src/basic/prioq.h (renamed from src/shared/prioq.h) | 0 | ||||
-rw-r--r-- | src/basic/process-util.c (renamed from src/shared/process-util.c) | 0 | ||||
-rw-r--r-- | src/basic/process-util.h (renamed from src/shared/process-util.h) | 0 | ||||
-rw-r--r-- | src/basic/random-util.c (renamed from src/shared/random-util.c) | 0 | ||||
-rw-r--r-- | src/basic/random-util.h (renamed from src/shared/random-util.h) | 0 | ||||
-rw-r--r-- | src/basic/ratelimit.c (renamed from src/shared/ratelimit.c) | 0 | ||||
-rw-r--r-- | src/basic/ratelimit.h (renamed from src/shared/ratelimit.h) | 0 | ||||
-rw-r--r-- | src/basic/refcnt.h (renamed from src/shared/refcnt.h) | 0 | ||||
-rw-r--r-- | src/basic/replace-var.c (renamed from src/shared/replace-var.c) | 0 | ||||
-rw-r--r-- | src/basic/replace-var.h (renamed from src/shared/replace-var.h) | 0 | ||||
-rw-r--r-- | src/basic/ring.c (renamed from src/shared/ring.c) | 0 | ||||
-rw-r--r-- | src/basic/ring.h (renamed from src/shared/ring.h) | 0 | ||||
-rw-r--r-- | src/basic/rm-rf.c (renamed from src/shared/rm-rf.c) | 0 | ||||
-rw-r--r-- | src/basic/rm-rf.h (renamed from src/shared/rm-rf.h) | 0 | ||||
-rw-r--r-- | src/basic/securebits.h (renamed from src/shared/securebits.h) | 0 | ||||
-rw-r--r-- | src/basic/selinux-util.c (renamed from src/shared/selinux-util.c) | 0 | ||||
-rw-r--r-- | src/basic/selinux-util.h (renamed from src/shared/selinux-util.h) | 0 | ||||
-rw-r--r-- | src/basic/set.h (renamed from src/shared/set.h) | 0 | ||||
-rw-r--r-- | src/basic/sigbus.c (renamed from src/shared/sigbus.c) | 0 | ||||
-rw-r--r-- | src/basic/sigbus.h (renamed from src/shared/sigbus.h) | 0 | ||||
-rw-r--r-- | src/basic/signal-util.c (renamed from src/shared/signal-util.c) | 104 | ||||
-rw-r--r-- | src/basic/signal-util.h (renamed from src/shared/signal-util.h) | 2 | ||||
-rw-r--r-- | src/basic/siphash24.c (renamed from src/shared/siphash24.c) | 0 | ||||
-rw-r--r-- | src/basic/siphash24.h (renamed from src/shared/siphash24.h) | 0 | ||||
-rw-r--r-- | src/basic/smack-util.c (renamed from src/shared/smack-util.c) | 0 | ||||
-rw-r--r-- | src/basic/smack-util.h (renamed from src/shared/smack-util.h) | 0 | ||||
-rw-r--r-- | src/basic/socket-label.c (renamed from src/shared/socket-label.c) | 0 | ||||
-rw-r--r-- | src/basic/socket-util.c (renamed from src/shared/socket-util.c) | 0 | ||||
-rw-r--r-- | src/basic/socket-util.h (renamed from src/shared/socket-util.h) | 0 | ||||
-rw-r--r-- | src/basic/sparse-endian.h (renamed from src/shared/sparse-endian.h) | 0 | ||||
-rw-r--r-- | src/basic/special.h (renamed from src/shared/special.h) | 0 | ||||
-rw-r--r-- | src/basic/strbuf.c (renamed from src/shared/strbuf.c) | 0 | ||||
-rw-r--r-- | src/basic/strbuf.h (renamed from src/shared/strbuf.h) | 0 | ||||
-rw-r--r-- | src/basic/strv.c (renamed from src/shared/strv.c) | 0 | ||||
-rw-r--r-- | src/basic/strv.h (renamed from src/shared/strv.h) | 0 | ||||
-rw-r--r-- | src/basic/strxcpyx.c (renamed from src/shared/strxcpyx.c) | 0 | ||||
-rw-r--r-- | src/basic/strxcpyx.h (renamed from src/shared/strxcpyx.h) | 0 | ||||
-rw-r--r-- | src/basic/terminal-util.c (renamed from src/shared/terminal-util.c) | 0 | ||||
-rw-r--r-- | src/basic/terminal-util.h (renamed from src/shared/terminal-util.h) | 0 | ||||
-rw-r--r-- | src/basic/time-util.c (renamed from src/shared/time-util.c) | 0 | ||||
-rw-r--r-- | src/basic/time-util.h (renamed from src/shared/time-util.h) | 0 | ||||
-rw-r--r-- | src/basic/unaligned.h (renamed from src/shared/unaligned.h) | 0 | ||||
-rw-r--r-- | src/basic/unit-name.c (renamed from src/shared/unit-name.c) | 0 | ||||
-rw-r--r-- | src/basic/unit-name.h (renamed from src/shared/unit-name.h) | 0 | ||||
-rw-r--r-- | src/basic/utf8.c (renamed from src/shared/utf8.c) | 0 | ||||
-rw-r--r-- | src/basic/utf8.h (renamed from src/shared/utf8.h) | 0 | ||||
-rw-r--r-- | src/basic/util.c (renamed from src/shared/util.c) | 14 | ||||
-rw-r--r-- | src/basic/util.h (renamed from src/shared/util.h) | 0 | ||||
-rw-r--r-- | src/basic/verbs.c (renamed from src/shared/verbs.c) | 0 | ||||
-rw-r--r-- | src/basic/verbs.h (renamed from src/shared/verbs.h) | 0 | ||||
-rw-r--r-- | src/basic/virt.c (renamed from src/shared/virt.c) | 0 | ||||
-rw-r--r-- | src/basic/virt.h (renamed from src/shared/virt.h) | 0 | ||||
-rw-r--r-- | src/basic/xml.c (renamed from src/shared/xml.c) | 0 | ||||
-rw-r--r-- | src/basic/xml.h (renamed from src/shared/xml.h) | 0 | ||||
-rw-r--r-- | src/cgtop/cgtop.c | 53 | ||||
-rw-r--r-- | src/core/busname.c | 6 | ||||
-rw-r--r-- | src/core/execute.c | 9 | ||||
-rw-r--r-- | src/core/killall.c | 8 | ||||
-rw-r--r-- | src/core/kmod-setup.c | 21 | ||||
-rw-r--r-- | src/core/main.c | 9 | ||||
-rw-r--r-- | src/core/manager.c | 4 | ||||
-rw-r--r-- | src/core/namespace.c | 3 | ||||
-rw-r--r-- | src/core/selinux-access.c | 2 | ||||
-rw-r--r-- | src/core/service.c | 9 | ||||
-rw-r--r-- | src/core/socket.c | 8 | ||||
-rw-r--r-- | src/core/unit.c | 11 | ||||
-rw-r--r-- | src/cryptsetup/cryptsetup.c | 90 | ||||
-rw-r--r-- | src/delta/delta.c | 9 | ||||
-rw-r--r-- | src/fsck/fsck.c | 4 | ||||
-rw-r--r-- | src/import/export.c | 2 | ||||
-rw-r--r-- | src/import/import-common.c | 8 | ||||
-rw-r--r-- | src/import/import.c | 2 | ||||
-rw-r--r-- | src/import/importd.c | 6 | ||||
-rw-r--r-- | src/import/pull-common.c | 4 | ||||
-rw-r--r-- | src/import/pull.c | 2 | ||||
-rw-r--r-- | src/journal-remote/journal-remote.c | 4 | ||||
-rw-r--r-- | src/journal/coredumpctl.c | 3 | ||||
-rw-r--r-- | src/journal/journald-server.c | 204 | ||||
-rw-r--r-- | src/journal/journald-stream.c | 32 | ||||
-rw-r--r-- | src/libsystemd-network/lldp-tlv.c | 2 | ||||
-rw-r--r-- | src/libsystemd-network/sd-dhcp-client.c | 2 | ||||
-rw-r--r-- | src/libsystemd-network/sd-dhcp-lease.c | 12 | ||||
-rw-r--r-- | src/libsystemd-network/sd-dhcp-server.c | 2 | ||||
-rw-r--r-- | src/libsystemd-terminal/grdev-drm.c | 2 | ||||
-rw-r--r-- | src/libsystemd-terminal/grdev.c | 2 | ||||
-rw-r--r-- | src/libsystemd-terminal/idev.c | 2 | ||||
-rw-r--r-- | src/libsystemd/libsystemd.sym.m4 | 1 | ||||
-rw-r--r-- | src/libsystemd/sd-bus/bus-bloom.c | 10 | ||||
-rw-r--r-- | src/libsystemd/sd-bus/bus-container.c | 2 | ||||
-rw-r--r-- | src/libsystemd/sd-bus/bus-control.c | 29 | ||||
-rw-r--r-- | src/libsystemd/sd-bus/bus-convenience.c | 37 | ||||
-rw-r--r-- | src/libsystemd/sd-bus/bus-creds.c | 13 | ||||
-rw-r--r-- | src/libsystemd/sd-bus/bus-internal.c | 56 | ||||
-rw-r--r-- | src/libsystemd/sd-bus/bus-internal.h | 4 | ||||
-rw-r--r-- | src/libsystemd/sd-bus/bus-kernel.c | 1 | ||||
-rw-r--r-- | src/libsystemd/sd-bus/bus-message.c | 21 | ||||
-rw-r--r-- | src/libsystemd/sd-bus/bus-message.h | 2 | ||||
-rw-r--r-- | src/libsystemd/sd-bus/bus-socket.c | 91 | ||||
-rw-r--r-- | src/libsystemd/sd-bus/sd-bus.c | 28 | ||||
-rw-r--r-- | src/libsystemd/sd-bus/test-bus-gvariant.c | 2 | ||||
-rw-r--r-- | src/libsystemd/sd-bus/test-bus-kernel-bloom.c | 25 | ||||
-rw-r--r-- | src/libsystemd/sd-bus/test-bus-marshal.c | 2 | ||||
-rw-r--r-- | src/libsystemd/sd-bus/test-bus-signature.c | 13 | ||||
-rw-r--r-- | src/libsystemd/sd-event/sd-event.c | 1 | ||||
-rw-r--r-- | src/libsystemd/sd-login/sd-login.c | 2 | ||||
-rw-r--r-- | src/libsystemd/sd-network/sd-network.c | 75 | ||||
-rw-r--r-- | src/libsystemd/sd-rtnl/rtnl-message.c | 2 | ||||
-rw-r--r-- | src/login/inhibit.c | 4 | ||||
-rw-r--r-- | src/login/logind-session.h | 2 | ||||
-rw-r--r-- | src/login/logind-user.c | 6 | ||||
-rw-r--r-- | src/login/test-login-shared.c | 2 | ||||
-rw-r--r-- | src/network/networkctl.c | 2 | ||||
-rw-r--r-- | src/network/networkd-dhcp4.c | 2 | ||||
-rw-r--r-- | src/network/networkd-ipv4ll.c | 4 | ||||
-rw-r--r-- | src/network/networkd-link.c | 38 | ||||
-rw-r--r-- | src/network/networkd-manager.c | 4 | ||||
-rw-r--r-- | src/network/networkd-netdev-bond.c | 173 | ||||
-rw-r--r-- | src/network/networkd-netdev-ipvlan.c | 10 | ||||
-rw-r--r-- | src/network/networkd-netdev-macvlan.c | 10 | ||||
-rw-r--r-- | src/network/networkd-netdev-veth.c | 24 | ||||
-rw-r--r-- | src/network/networkd-netdev-vxlan.c | 112 | ||||
-rw-r--r-- | src/network/networkd-network.c | 16 | ||||
-rw-r--r-- | src/network/networkd.h | 1 | ||||
-rw-r--r-- | src/nspawn/nspawn.c | 7 | ||||
-rw-r--r-- | src/nss-resolve/nss-resolve.c | 14 | ||||
-rw-r--r-- | src/quotacheck/quotacheck.c | 8 | ||||
-rw-r--r-- | src/remount-fs/remount-fs.c | 3 | ||||
-rw-r--r-- | src/resolve/resolved-bus.c | 2 | ||||
-rw-r--r-- | src/resolve/resolved-dns-answer.c | 2 | ||||
-rw-r--r-- | src/resolve/resolved-dns-packet.c | 2 | ||||
-rw-r--r-- | src/resolve/resolved-dns-question.c | 2 | ||||
-rw-r--r-- | src/resolve/resolved-dns-rr.c | 2 | ||||
-rw-r--r-- | src/resolve/resolved-dns-scope.c | 2 | ||||
-rw-r--r-- | src/resolve/resolved-dns-stream.c | 3 | ||||
-rw-r--r-- | src/resolve/resolved-dns-zone.c | 2 | ||||
-rw-r--r-- | src/resolve/resolved-manager.c | 4 | ||||
-rw-r--r-- | src/run/run.c | 2 | ||||
-rw-r--r-- | src/shared/bus-util.c (renamed from src/libsystemd/sd-bus/bus-util.c) | 25 | ||||
-rw-r--r-- | src/shared/bus-util.h (renamed from src/libsystemd/sd-bus/bus-util.h) | 2 | ||||
-rw-r--r-- | src/shared/dns-domain.c (renamed from src/resolve/resolved-dns-domain.c) | 2 | ||||
-rw-r--r-- | src/shared/dns-domain.h (renamed from src/resolve/resolved-dns-domain.h) | 9 | ||||
-rw-r--r-- | src/shared/efivars.c | 2 | ||||
-rw-r--r-- | src/shared/machine-pool.c | 4 | ||||
-rw-r--r-- | src/shared/pager.c | 8 | ||||
-rw-r--r-- | src/shared/pty.c | 2 | ||||
-rw-r--r-- | src/systemctl/systemctl.c | 6 | ||||
-rw-r--r-- | src/systemd/sd-bus.h | 1 | ||||
-rw-r--r-- | src/test/test-cgroup-util.c | 20 | ||||
-rw-r--r-- | src/test/test-copy.c | 35 | ||||
-rw-r--r-- | src/test/test-dns-domain.c (renamed from src/resolve/test-dns-domain.c) | 2 | ||||
-rw-r--r-- | src/test/test-path-util.c | 81 | ||||
-rw-r--r-- | src/timesync/timesyncd-manager.c | 2 | ||||
-rw-r--r-- | src/udev/udev-event.c | 6 | ||||
-rw-r--r-- | src/udev/udev-rules.c | 2 | ||||
-rw-r--r-- | src/udev/udevd.c | 4 | ||||
-rw-r--r-- | src/vconsole/vconsole-setup.c | 9 |
257 files changed, 1630 insertions, 1611 deletions
diff --git a/Makefile.am b/Makefile.am index 7603b2c0e1..9c52dcb3e3 100644 --- a/Makefile.am +++ b/Makefile.am @@ -211,8 +211,10 @@ AM_CPPFLAGS = \ -DROOTLIBEXECDIR=\"$(rootlibexecdir)\" \ -DTEST_DIR=\"$(abs_top_srcdir)/test\" \ -I $(top_srcdir)/src \ - -I $(top_builddir)/src/shared \ + -I $(top_builddir)/src/basic \ + -I $(top_srcdir)/src/basic \ -I $(top_srcdir)/src/shared \ + -I $(top_builddir)/src/shared \ -I $(top_srcdir)/src/network \ -I $(top_srcdir)/src/login \ -I $(top_srcdir)/src/journal \ @@ -230,6 +232,7 @@ AM_CPPFLAGS = \ -I $(top_builddir)/src/udev \ -I $(top_srcdir)/src/libsystemd/sd-bus \ -I $(top_srcdir)/src/libsystemd/sd-event \ + -I $(top_srcdir)/src/libsystemd/sd-login \ -I $(top_srcdir)/src/libsystemd/sd-rtnl \ -I $(top_srcdir)/src/libsystemd/sd-network \ -I $(top_srcdir)/src/libsystemd/sd-hwdb \ @@ -714,9 +717,9 @@ man/systemd.index.xml: $(top_srcdir)/tools/make-man-index.py $(NON_INDEX_XML_FIL $(AM_V_at)$(MKDIR_P) $(dir $@) $(AM_V_GEN)$(PYTHON) $< $@ $(filter-out $<,$^) -man/systemd.directives.xml: $(top_srcdir)/tools/make-directive-index.py $(SOURCE_XML_FILES) +man/systemd.directives.xml: $(top_srcdir)/tools/make-directive-index.py man/custom-entities.ent $(SOURCE_XML_FILES) $(AM_V_at)$(MKDIR_P) $(dir $@) - $(AM_V_GEN)$(PYTHON) $< $@ $(filter-out $<,$^) + $(AM_V_GEN)$(PYTHON) $< $@ $(SOURCE_XML_FILES) CLEANFILES += \ man/systemd.index.xml \ @@ -742,30 +745,180 @@ EXTRA_DIST += \ # ------------------------------------------------------------------------------ noinst_LTLIBRARIES += \ - libsystemd-shared.la + libbasic.la + +libbasic_la_SOURCES = \ + src/basic/missing.h \ + src/basic/capability.c \ + src/basic/capability.h \ + src/basic/conf-files.c \ + src/basic/conf-files.h \ + src/basic/hostname-util.h \ + src/basic/hostname-util.c \ + src/basic/unit-name.c \ + src/basic/unit-name.h \ + src/basic/ioprio.h \ + src/basic/securebits.h \ + src/basic/special.h \ + src/basic/list.h \ + src/basic/unaligned.h \ + src/basic/macro.h \ + src/basic/def.h \ + src/basic/sparse-endian.h \ + src/basic/refcnt.h \ + src/basic/util.c \ + src/basic/util.h \ + src/basic/lockfile-util.c \ + src/basic/lockfile-util.h \ + src/basic/path-util.c \ + src/basic/path-util.h \ + src/basic/time-util.c \ + src/basic/time-util.h \ + src/basic/locale-util.c \ + src/basic/locale-util.h \ + src/basic/signal-util.c \ + src/basic/signal-util.h \ + src/basic/mempool.c \ + src/basic/mempool.h \ + src/basic/hashmap.c \ + src/basic/hashmap.h \ + src/basic/siphash24.c \ + src/basic/siphash24.h \ + src/basic/set.h \ + src/basic/ordered-set.h \ + src/basic/fdset.c \ + src/basic/fdset.h \ + src/basic/prioq.c \ + src/basic/prioq.h \ + src/basic/strv.c \ + src/basic/strv.h \ + src/basic/env-util.c \ + src/basic/env-util.h \ + src/basic/strbuf.c \ + src/basic/strbuf.h \ + src/basic/strxcpyx.c \ + src/basic/strxcpyx.h \ + src/basic/log.c \ + src/basic/log.h \ + src/basic/bus-label.c \ + src/basic/bus-label.h \ + src/basic/ratelimit.h \ + src/basic/ratelimit.c \ + src/basic/exit-status.c \ + src/basic/exit-status.h \ + src/basic/virt.c \ + src/basic/virt.h \ + src/basic/smack-util.c \ + src/basic/smack-util.h \ + src/basic/device-nodes.c \ + src/basic/device-nodes.h \ + src/basic/utf8.c \ + src/basic/utf8.h \ + src/basic/gunicode.c \ + src/basic/gunicode.h \ + src/basic/socket-util.c \ + src/basic/socket-util.h \ + src/basic/in-addr-util.c \ + src/basic/in-addr-util.h \ + src/basic/ether-addr-util.h \ + src/basic/replace-var.c \ + src/basic/replace-var.h \ + src/basic/clock-util.c \ + src/basic/clock-util.h \ + src/basic/calendarspec.c \ + src/basic/calendarspec.h \ + src/basic/fileio.c \ + src/basic/fileio.h \ + src/basic/MurmurHash2.c \ + src/basic/MurmurHash2.h \ + src/basic/mkdir.c \ + src/basic/mkdir.h \ + src/basic/cgroup-util.c \ + src/basic/cgroup-util.h \ + src/basic/errno-list.c \ + src/basic/errno-list.h \ + src/basic/af-list.c \ + src/basic/af-list.h \ + src/basic/arphrd-list.c \ + src/basic/arphrd-list.h \ + src/basic/terminal-util.c \ + src/basic/terminal-util.h \ + src/basic/login-util.h \ + src/basic/login-util.c \ + src/basic/cap-list.c \ + src/basic/cap-list.h \ + src/basic/audit.c \ + src/basic/audit.h \ + src/basic/xml.c \ + src/basic/xml.h \ + src/basic/json.c \ + src/basic/json.h \ + src/basic/ring.c \ + src/basic/ring.h \ + src/basic/barrier.c \ + src/basic/barrier.h \ + src/basic/async.c \ + src/basic/async.h \ + src/basic/memfd-util.c \ + src/basic/memfd-util.h \ + src/basic/process-util.c \ + src/basic/process-util.h \ + src/basic/random-util.c \ + src/basic/random-util.h \ + src/basic/verbs.c \ + src/basic/verbs.h \ + src/basic/sigbus.c \ + src/basic/sigbus.h \ + src/basic/build.h \ + src/basic/socket-label.c \ + src/basic/label.c \ + src/basic/label.h \ + src/basic/btrfs-util.c \ + src/basic/btrfs-util.h \ + src/basic/btrfs-ctree.h \ + src/basic/selinux-util.c \ + src/basic/selinux-util.h \ + src/basic/mkdir-label.c \ + src/basic/fileio-label.c \ + src/basic/fileio-label.h \ + src/basic/rm-rf.c \ + src/basic/rm-rf.h \ + src/basic/copy.c \ + src/basic/copy.h + +nodist_libbasic_la_SOURCES = \ + src/basic/errno-from-name.h \ + src/basic/errno-to-name.h \ + src/basic/af-from-name.h \ + src/basic/af-to-name.h \ + src/basic/arphrd-from-name.h \ + src/basic/arphrd-to-name.h \ + src/basic/cap-from-name.h \ + src/basic/cap-to-name.h + +libbasic_la_CFLAGS = \ + $(AM_CFLAGS) \ + $(SELINUX_CFLAGS) \ + $(CAP_CFLAGS) \ + -pthread + +libbasic_la_LIBADD = \ + $(SELINUX_LIBS) \ + $(CAP_LIBS) \ + -lm + +# ----------------------------------------------------------------------------- +noinst_LTLIBRARIES += \ + libshared.la -libsystemd_shared_la_SOURCES = \ - src/shared/capability.c \ - src/shared/capability.h \ +libshared_la_SOURCES = \ + src/shared/output-mode.h \ + src/shared/gpt.h \ + src/shared/udev-util.h \ src/shared/linux/auto_dev-ioctl.h \ - src/shared/ioprio.h \ - src/shared/missing.h \ src/shared/initreq.h \ - src/shared/securebits.h \ - src/shared/special.h \ - src/shared/list.h \ - src/shared/unaligned.h \ - src/shared/macro.h \ - src/shared/def.h \ - src/shared/sparse-endian.h \ - src/shared/refcnt.h \ - src/shared/udev-util.h \ - src/shared/device-nodes.c \ - src/shared/device-nodes.h \ - src/shared/util.c \ - src/shared/util.h \ - src/shared/virt.c \ - src/shared/virt.h \ + src/shared/dns-domain.c \ + src/shared/dns-domain.h \ src/shared/architecture.c \ src/shared/architecture.h \ src/shared/efivars.c \ @@ -773,237 +926,122 @@ libsystemd_shared_la_SOURCES = \ src/shared/formats-util.h \ src/shared/fstab-util.c \ src/shared/fstab-util.h \ - src/shared/lockfile-util.c \ - src/shared/lockfile-util.h \ - src/shared/path-util.c \ - src/shared/path-util.h \ - src/shared/time-util.c \ - src/shared/time-util.h \ - src/shared/locale-util.c \ - src/shared/locale-util.h \ - src/shared/signal-util.c \ - src/shared/signal-util.h \ - src/shared/mempool.c \ - src/shared/mempool.h \ - src/shared/hashmap.c \ - src/shared/hashmap.h \ - src/shared/siphash24.c \ - src/shared/siphash24.h \ - src/shared/set.h \ - src/shared/ordered-set.h \ - src/shared/fdset.c \ - src/shared/fdset.h \ - src/shared/prioq.c \ - src/shared/prioq.h \ src/shared/sleep-config.c \ src/shared/sleep-config.h \ - src/shared/strv.c \ - src/shared/strv.h \ - src/shared/env-util.c \ - src/shared/env-util.h \ - src/shared/strbuf.c \ - src/shared/strbuf.h \ - src/shared/strxcpyx.c \ - src/shared/strxcpyx.h \ src/shared/conf-parser.c \ src/shared/conf-parser.h \ - src/shared/log.c \ - src/shared/log.h \ - src/shared/ratelimit.h \ - src/shared/ratelimit.c \ - src/shared/exit-status.c \ - src/shared/exit-status.h \ - src/shared/utf8.c \ - src/shared/utf8.h \ - src/shared/gunicode.c \ - src/shared/gunicode.h \ src/shared/pager.c \ src/shared/pager.h \ - src/shared/socket-util.c \ - src/shared/socket-util.h \ - src/shared/in-addr-util.c \ - src/shared/in-addr-util.h \ - src/shared/ether-addr-util.h \ - src/shared/conf-files.c \ - src/shared/conf-files.h \ - src/shared/cgroup-util.c \ - src/shared/cgroup-util.h \ - src/shared/cgroup-show.c \ - src/shared/cgroup-show.h \ - src/shared/unit-name.c \ - src/shared/unit-name.h \ - src/shared/utmp-wtmp.h \ - src/shared/watchdog.c \ - src/shared/watchdog.h \ - src/shared/spawn-ask-password-agent.c \ - src/shared/spawn-ask-password-agent.h \ - src/shared/replace-var.c \ - src/shared/replace-var.h \ src/shared/spawn-polkit-agent.c \ src/shared/spawn-polkit-agent.h \ - src/shared/clock-util.c \ - src/shared/clock-util.h \ - src/shared/calendarspec.c \ - src/shared/calendarspec.h \ - src/shared/fileio.c \ - src/shared/fileio.h \ - src/shared/output-mode.h \ - src/shared/MurmurHash2.c \ - src/shared/MurmurHash2.h \ - src/shared/acpi-fpdt.h \ - src/shared/acpi-fpdt.c \ - src/shared/boot-timestamps.h \ - src/shared/boot-timestamps.c \ - src/shared/mkdir.c \ - src/shared/mkdir.h \ - src/shared/smack-util.c \ - src/shared/smack-util.h \ src/shared/apparmor-util.c \ src/shared/apparmor-util.h \ src/shared/ima-util.c \ src/shared/ima-util.h \ src/shared/ptyfwd.c \ src/shared/ptyfwd.h \ - src/shared/errno-list.c \ - src/shared/errno-list.h \ - src/shared/af-list.c \ - src/shared/af-list.h \ - src/shared/arphrd-list.c \ - src/shared/arphrd-list.h \ - src/shared/cap-list.c \ - src/shared/cap-list.h \ - src/shared/audit.c \ - src/shared/audit.h \ - src/shared/xml.c \ - src/shared/xml.h \ - src/shared/json.c \ - src/shared/json.h \ - src/shared/bus-label.c \ - src/shared/bus-label.h \ - src/shared/gpt.h \ - src/shared/clean-ipc.h \ - src/shared/clean-ipc.c \ - src/shared/login-shared.c \ - src/shared/login-shared.h \ - src/shared/ring.c \ - src/shared/ring.h \ - src/shared/barrier.c \ - src/shared/barrier.h \ src/shared/pty.c \ src/shared/pty.h \ - src/shared/async.c \ - src/shared/async.h \ src/shared/base-filesystem.c \ src/shared/base-filesystem.h \ - src/shared/memfd-util.c \ - src/shared/memfd-util.h \ - src/shared/process-util.c \ - src/shared/process-util.h \ - src/shared/random-util.c \ - src/shared/random-util.h \ - src/shared/terminal-util.c \ - src/shared/terminal-util.h \ src/shared/uid-range.c \ src/shared/uid-range.h \ src/shared/nss-util.h \ - src/shared/verbs.c \ - src/shared/verbs.h \ - src/shared/sigbus.c \ - src/shared/sigbus.h \ - src/shared/build.h \ - src/shared/import-util.c \ - src/shared/import-util.h \ - src/shared/sysctl-util.c \ - src/shared/sysctl-util.h \ - src/shared/hostname-util.h \ - src/shared/hostname-util.c \ - src/shared/socket-label.c \ - src/shared/label.c \ - src/shared/label.h \ - src/shared/selinux-util.c \ - src/shared/selinux-util.h \ - src/shared/mkdir-label.c \ - src/shared/ask-password-api.c \ - src/shared/ask-password-api.h \ - src/shared/switch-root.h \ - src/shared/switch-root.c \ - src/shared/fileio-label.c \ - src/shared/fileio-label.h \ + src/shared/install.c \ + src/shared/install.h \ + src/shared/install-printf.c \ + src/shared/install-printf.h \ + src/shared/path-lookup.c \ + src/shared/path-lookup.h \ + src/shared/specifier.c \ + src/shared/specifier.h \ src/shared/dev-setup.c \ src/shared/dev-setup.h \ src/shared/dropin.c \ src/shared/dropin.h \ src/shared/condition.c \ src/shared/condition.h \ + src/shared/clean-ipc.c \ + src/shared/clean-ipc.h \ src/shared/generator.h \ src/shared/generator.c \ - src/shared/btrfs-util.c \ - src/shared/btrfs-util.h \ - src/shared/btrfs-ctree.h \ - src/shared/rm-rf.c \ - src/shared/rm-rf.h \ - src/shared/copy.c \ - src/shared/copy.h \ - src/shared/install.c \ - src/shared/install.h \ - src/shared/install-printf.c \ - src/shared/install-printf.h \ - src/shared/path-lookup.c \ - src/shared/path-lookup.h \ - src/shared/specifier.c \ - src/shared/specifier.h + src/shared/acpi-fpdt.h \ + src/shared/acpi-fpdt.c \ + src/shared/boot-timestamps.h \ + src/shared/boot-timestamps.c \ + src/shared/cgroup-show.c \ + src/shared/cgroup-show.h \ + src/shared/utmp-wtmp.h \ + src/shared/watchdog.c \ + src/shared/watchdog.h \ + src/shared/spawn-ask-password-agent.c \ + src/shared/spawn-ask-password-agent.h \ + src/shared/ask-password-api.c \ + src/shared/ask-password-api.h \ + src/shared/switch-root.h \ + src/shared/switch-root.c \ + src/shared/import-util.c \ + src/shared/import-util.h \ + src/shared/sysctl-util.c \ + src/shared/sysctl-util.h \ + src/shared/bus-util.c \ + src/shared/bus-util.h \ + src/shared/logs-show.c \ + src/shared/logs-show.h \ + src/shared/machine-image.c \ + src/shared/machine-image.h \ + src/shared/machine-pool.c \ + src/shared/machine-pool.h if HAVE_UTMP -libsystemd_shared_la_SOURCES += \ +libshared_la_SOURCES += \ src/shared/utmp-wtmp.c endif -nodist_libsystemd_shared_la_SOURCES = \ - src/shared/errno-from-name.h \ - src/shared/errno-to-name.h \ - src/shared/af-from-name.h \ - src/shared/af-to-name.h \ - src/shared/arphrd-from-name.h \ - src/shared/arphrd-to-name.h \ - src/shared/cap-from-name.h \ - src/shared/cap-to-name.h - -libsystemd_shared_la_CFLAGS = \ +if HAVE_SECCOMP +libshared_la_SOURCES += \ + src/shared/seccomp-util.h \ + src/shared/seccomp-util.c +endif + +if HAVE_ACL +libshared_la_SOURCES += \ + src/shared/acl-util.c \ + src/shared/acl-util.h +endif + +libshared_la_CFLAGS = \ $(AM_CFLAGS) \ $(SELINUX_CFLAGS) \ $(CAP_CFLAGS) \ + $(ACL_CFLAGS) \ $(SECCOMP_CFLAGS) \ -pthread -libsystemd_shared_la_LIBADD = \ +libshared_la_LIBADD = \ + libsystemd-internal.la \ + libsystemd-journal-internal.la \ $(SELINUX_LIBS) \ $(CAP_LIBS) \ + $(ACL_LIBS) \ + $(LIBIDN_LIBS) \ + $(SECCOMP_LIBS) \ -lm # ----------------------------------------------------------------------------- -noinst_LTLIBRARIES += \ - libsystemd-machine.la - -libsystemd_machine_la_SOURCES = \ - src/shared/machine-image.c \ - src/shared/machine-image.h \ - src/shared/machine-pool.c \ - src/shared/machine-pool.h - -# ----------------------------------------------------------------------------- if HAVE_LIBIPTC noinst_LTLIBRARIES += \ - libsystemd-fw.la + libfirewall.la -libsystemd_fw_la_SOURCES = \ +libfirewall_la_SOURCES = \ src/shared/fw-util.h \ src/shared/fw-util.c -libsystemd_fw_la_CFLAGS = \ +libfirewall_la_CFLAGS = \ $(AM_CFLAGS) \ $(LIBIPTC_CFLAGS) -libsystemd_fw_la_LIBADD = \ +libfirewall_la_LIBADD = \ $(LIBIPTC_LIBS) endif @@ -1017,53 +1055,10 @@ SYSINIT_TARGET_WANTS += \ endif # ------------------------------------------------------------------------------ - -if HAVE_SECCOMP noinst_LTLIBRARIES += \ - libsystemd-seccomp.la - -libsystemd_seccomp_la_SOURCES = \ - src/shared/seccomp-util.h \ - src/shared/seccomp-util.c + libcore.la -libsystemd_seccomp_la_CFLAGS = \ - $(AM_CFLAGS) \ - $(SECCOMP_CFLAGS) - -libsystemd_seccomp_la_LIBADD = \ - $(SECCOMP_LIBS) -endif - -# ------------------------------------------------------------------------------ -noinst_LTLIBRARIES += \ - libsystemd-logs.la - -libsystemd_logs_la_SOURCES = \ - src/shared/logs-show.c \ - src/shared/logs-show.h - -# ------------------------------------------------------------------------------ -if HAVE_ACL -noinst_LTLIBRARIES += \ - libsystemd-acl.la - -libsystemd_acl_la_SOURCES = \ - src/shared/acl-util.c \ - src/shared/acl-util.h - -libsystemd_acl_la_CFLAGS = \ - $(AM_CFLAGS) \ - $(ACL_CFLAGS) - -libsystemd_acl_la_LIBADD = \ - $(ACL_LIBS) -endif - -# ------------------------------------------------------------------------------ -noinst_LTLIBRARIES += \ - libsystemd-core.la - -libsystemd_core_la_SOURCES = \ +libcore_la_SOURCES = \ src/core/unit.c \ src/core/unit.h \ src/core/unit-printf.c \ @@ -1185,36 +1180,28 @@ libsystemd_core_la_SOURCES = \ src/core/failure-action.c \ src/core/failure-action.h -nodist_libsystemd_core_la_SOURCES = \ +nodist_libcore_la_SOURCES = \ src/core/load-fragment-gperf.c \ src/core/load-fragment-gperf-nulstr.c -libsystemd_core_la_CFLAGS = \ +libcore_la_CFLAGS = \ $(AM_CFLAGS) \ $(PAM_CFLAGS) \ $(AUDIT_CFLAGS) \ $(KMOD_CFLAGS) \ $(APPARMOR_CFLAGS) \ - $(SECCOMP_CFLAGS) \ $(MOUNT_CFLAGS) \ -pthread -libsystemd_core_la_LIBADD = \ +libcore_la_LIBADD = \ libudev-internal.la \ - libsystemd-shared.la \ - libsystemd-internal.la \ + libshared.la \ $(PAM_LIBS) \ $(AUDIT_LIBS) \ $(KMOD_LIBS) \ $(APPARMOR_LIBS) \ - $(SECCOMP_LIBS) \ $(MOUNT_LIBS) -if HAVE_SECCOMP -libsystemd_core_la_LIBADD += \ - libsystemd-seccomp.la -endif - src/core/load-fragment-gperf-nulstr.c: src/core/load-fragment-gperf.gperf $(AM_V_at)$(MKDIR_P) $(dir $@) $(AM_V_GEN)$(AWK) 'BEGIN{ keywords=0 ; FS="," ; print "extern const char load_fragment_gperf_nulstr[];" ; print "const char load_fragment_gperf_nulstr[] ="} ; keyword==1 { print "\"" $$1 "\\0\"" } ; /%%/ { keyword=1} ; END { print ";" }' < $< > $@ @@ -1223,10 +1210,10 @@ gperf_gperf_m4_sources = \ src/core/load-fragment-gperf.gperf.m4 gperf_txt_sources = \ - src/shared/errno-list.txt \ - src/shared/af-list.txt \ - src/shared/arphrd-list.txt \ - src/shared/cap-list.txt + src/basic/errno-list.txt \ + src/basic/af-list.txt \ + src/basic/arphrd-list.txt \ + src/basic/cap-list.txt BUILT_SOURCES += \ $(gperf_gperf_m4_sources:-gperf.gperf.m4=-gperf.c) \ @@ -1256,50 +1243,50 @@ CLEANFILES += \ $(AM_V_GPERF)$(GPERF) -L ANSI-C -t --ignore-case -N lookup_$(notdir $*) -H hash_$(notdir $*)_name -p -C <$< >$@ -src/shared/errno-list.txt: +src/basic/errno-list.txt: $(AM_V_at)$(MKDIR_P) $(dir $@) $(AM_V_GEN)$(CPP) $(CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) -dM -include errno.h - </dev/null | $(AWK) '/^#define[ \t]+E[^ _]+[ \t]+/ { print $$2; }' >$@ -src/shared/errno-to-name.h: src/shared/errno-list.txt +src/basic/errno-to-name.h: src/basic/errno-list.txt $(AM_V_at)$(MKDIR_P) $(dir $@) $(AM_V_GEN)$(AWK) 'BEGIN{ print "static const char* const errno_names[] = { "} !/EDEADLOCK/ && !/EWOULDBLOCK/ && !/ENOTSUP/ { printf "[%s] = \"%s\",\n", $$1, $$1 } END{print "};"}' <$< >$@ -src/shared/af-list.txt: +src/basic/af-list.txt: $(AM_V_at)$(MKDIR_P) $(dir $@) $(AM_V_GEN)$(CPP) $(CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) -dM -include sys/socket.h - </dev/null | grep -v AF_UNSPEC | grep -v AF_MAX | $(AWK) '/^#define[ \t]+AF_[^ \t]+[ \t]+PF_[^ \t]/ { print $$2; }' >$@ -src/shared/af-to-name.h: src/shared/af-list.txt +src/basic/af-to-name.h: src/basic/af-list.txt $(AM_V_at)$(MKDIR_P) $(dir $@) $(AM_V_GEN)$(AWK) 'BEGIN{ print "static const char* const af_names[] = { "} !/AF_FILE/ && !/AF_ROUTE/ && !/AF_LOCAL/ { printf "[%s] = \"%s\",\n", $$1, $$1 } END{print "};"}' <$< >$@ -src/shared/arphrd-list.txt: +src/basic/arphrd-list.txt: $(AM_V_at)$(MKDIR_P) $(dir $@) $(AM_V_GEN)$(CPP) $(CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) -dM -include net/if_arp.h - </dev/null | $(AWK) '/^#define[ \t]+ARPHRD_[^ \t]+[ \t]+[^ \t]/ { print $$2; }' | sed -e 's/ARPHRD_//' >$@ -src/shared/arphrd-to-name.h: src/shared/arphrd-list.txt +src/basic/arphrd-to-name.h: src/basic/arphrd-list.txt $(AM_V_at)$(MKDIR_P) $(dir $@) $(AM_V_GEN)$(AWK) 'BEGIN{ print "static const char* const arphrd_names[] = { "} !/CISCO/ { printf "[ARPHRD_%s] = \"%s\",\n", $$1, $$1 } END{print "};"}' <$< >$@ -src/shared/arphrd-from-name.gperf: src/shared/arphrd-list.txt +src/basic/arphrd-from-name.gperf: src/basic/arphrd-list.txt $(AM_V_at)$(MKDIR_P) $(dir $@) $(AM_V_GEN)$(AWK) 'BEGIN{ print "struct arphrd_name { const char* name; int id; };"; print "%null-strings"; print "%%";} { printf "%s, ARPHRD_%s\n", $$1, $$1 }' <$< >$@ -src/shared/cap-list.txt: +src/basic/cap-list.txt: $(AM_V_at)$(MKDIR_P) $(dir $@) $(AM_V_GEN)$(CPP) $(CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) -dM -include linux/capability.h -include missing.h - </dev/null | $(AWK) '/^#define[ \t]+CAP_[A-Z_]+[ \t]+/ { print $$2; }' | grep -v CAP_LAST_CAP >$@ -src/shared/cap-to-name.h: src/shared/cap-list.txt +src/basic/cap-to-name.h: src/basic/cap-list.txt $(AM_V_at)$(MKDIR_P) $(dir $@) $(AM_V_GEN)$(AWK) 'BEGIN{ print "static const char* const capability_names[] = { "} { printf "[%s] = \"%s\",\n", $$1, tolower($$1) } END{print "};"}' <$< >$@ -src/shared/cap-from-name.gperf: src/shared/cap-list.txt +src/basic/cap-from-name.gperf: src/basic/cap-list.txt $(AM_V_at)$(MKDIR_P) $(dir $@) $(AM_V_GEN)$(AWK) 'BEGIN{ print "struct capability_name { const char* name; int id; };"; print "%null-strings"; print "%%";} { printf "%s, %s\n", $$1, $$1 }' <$< >$@ -src/shared/cap-from-name.h: src/shared/cap-from-name.gperf +src/basic/cap-from-name.h: src/basic/cap-from-name.gperf $(AM_V_at)$(MKDIR_P) $(dir $@) $(AM_V_GPERF)$(GPERF) -L ANSI-C -t --ignore-case -N lookup_capability -H hash_capability_name -p -C <$< >$@ @@ -1333,12 +1320,8 @@ src/resolve/dns_type-from-name.gperf: src/resolve/dns_type-list.txt systemd_SOURCES = \ src/core/main.c -systemd_CFLAGS = \ - $(AM_CFLAGS) \ - $(SECCOMP_CFLAGS) - systemd_LDADD = \ - libsystemd-core.la \ + libcore.la \ $(RT_LIBS) dist_pkgsysconf_DATA += \ @@ -1446,7 +1429,8 @@ tests += \ test-copy \ test-cap-list \ test-sigbus \ - test-verbs + test-verbs \ + test-dns-domain EXTRA_DIST += \ test/a.service \ @@ -1531,7 +1515,7 @@ test_device_nodes_SOURCES = \ src/test/test-device-nodes.c test_device_nodes_LDADD = \ - libsystemd-shared.la + libshared.la test_engine_SOURCES = \ src/test/test-engine.c @@ -1541,7 +1525,7 @@ test_engine_CFLAGS = \ $(SECCOMP_CFLAGS) test_engine_LDADD = \ - libsystemd-core.la \ + libcore.la \ $(RT_LIBS) test_job_type_SOURCES = \ @@ -1552,7 +1536,7 @@ test_job_type_CFLAGS = \ $(SECCOMP_CFLAGS) test_job_type_LDADD = \ - libsystemd-core.la \ + libcore.la \ $(RT_LIBS) test_ns_SOURCES = \ @@ -1563,19 +1547,27 @@ test_ns_CFLAGS = \ $(SECCOMP_CFLAGS) test_ns_LDADD = \ - libsystemd-core.la + libcore.la test_loopback_SOURCES = \ src/test/test-loopback.c test_loopback_LDADD = \ - libsystemd-core.la + libcore.la test_hostname_SOURCES = \ src/test/test-hostname.c test_hostname_LDADD = \ - libsystemd-core.la + libcore.la + +test_dns_domain_SOURCES = \ + src/test/test-dns-domain.c + +test_dns_domain_LDADD = \ + libsystemd-network.la \ + libshared.la \ + $(LIBIDN_LIBS) if ENABLE_EFI manual_tests += \ @@ -1585,7 +1577,7 @@ test_boot_timestamp_SOURCES = \ src/test/test-boot-timestamps.c test_boot_timestamp_LDADD = \ - libsystemd-shared.la + libshared.la endif test_unit_name_SOURCES = \ @@ -1596,7 +1588,7 @@ test_unit_name_CFLAGS = \ $(SECCOMP_CFLAGS) test_unit_name_LDADD = \ - libsystemd-core.la \ + libcore.la \ $(RT_LIBS) test_unit_file_SOURCES = \ @@ -1607,137 +1599,135 @@ test_unit_file_CFLAGS = \ $(SECCOMP_CFLAGS) test_unit_file_LDADD = \ - libsystemd-core.la \ + libcore.la \ $(RT_LIBS) test_utf8_SOURCES = \ src/test/test-utf8.c test_utf8_LDADD = \ - libsystemd-shared.la + libshared.la test_capability_SOURCES = \ src/test/test-capability.c test_capability_LDADD = \ - libsystemd-shared.la + libshared.la test_async_SOURCES = \ src/test/test-async.c test_async_LDADD = \ - libsystemd-shared.la + libshared.la test_locale_util_SOURCES = \ src/test/test-locale-util.c test_locale_util_LDADD = \ - libsystemd-shared.la + libshared.la test_copy_SOURCES = \ src/test/test-copy.c test_copy_LDADD = \ - libsystemd-shared.la + libshared.la test_sigbus_SOURCES = \ src/test/test-sigbus.c test_sigbus_LDADD = \ - libsystemd-shared.la + libshared.la test_condition_SOURCES = \ src/test/test-condition.c test_condition_LDADD = \ - libsystemd-shared.la \ - libsystemd-internal.la + libshared.la test_fdset_SOURCES = \ src/test/test-fdset.c test_fdset_LDADD = \ - libsystemd-shared.la \ - libsystemd-internal.la + libshared.la test_fstab_util_SOURCES = \ src/test/test-fstab-util.c test_fstab_util_LDADD = \ - libsystemd-shared.la + libshared.la test_ratelimit_SOURCES = \ src/test/test-ratelimit.c test_ratelimit_LDADD = \ - libsystemd-shared.la + libshared.la test_util_SOURCES = \ src/test/test-util.c test_util_LDADD = \ - libsystemd-shared.la + libshared.la test_process_util_SOURCES = \ src/test/test-process-util.c test_process_util_LDADD = \ - libsystemd-shared.la + libshared.la test_terminal_util_SOURCES = \ src/test/test-terminal-util.c test_terminal_util_LDADD = \ - libsystemd-shared.la + libshared.la test_path_lookup_SOURCES = \ src/test/test-path-lookup.c test_path_lookup_LDADD = \ -lm \ - libsystemd-shared.la + libshared.la test_uid_range_SOURCES = \ src/test/test-uid-range.c test_uid_range_LDADD = \ - libsystemd-shared.la + libshared.la test_cap_list_SOURCES = \ src/test/test-cap-list.c test_cap_list_LDADD = \ - libsystemd-shared.la + libshared.la test_socket_util_SOURCES = \ src/test/test-socket-util.c test_socket_util_LDADD = \ - libsystemd-shared.la + libshared.la test_ring_SOURCES = \ src/test/test-ring.c test_ring_LDADD = \ - libsystemd-shared.la + libshared.la test_barrier_SOURCES = \ src/test/test-barrier.c test_barrier_LDADD = \ - libsystemd-shared.la + libshared.la test_pty_SOURCES = \ src/test/test-pty.c test_pty_LDADD = \ - libsystemd-core.la + libcore.la test_tmpfiles_SOURCES = \ src/test/test-tmpfiles.c test_tmpfiles_LDADD = \ - libsystemd-shared.la + libshared.la test_namespace_SOURCES = \ src/test/test-namespace.c @@ -1746,10 +1736,10 @@ test_verbs_SOURCES = \ src/test/test-verbs.c test_verbs_LDADD = \ - libsystemd-shared.la + libshared.la test_namespace_LDADD = \ - libsystemd-core.la + libcore.la BUILT_SOURCES += \ src/test/test-hashmap-ordered.c @@ -1771,34 +1761,34 @@ test_hashmap_SOURCES = \ src/test/test-hashmap-plain.c test_hashmap_LDADD = \ - libsystemd-shared.la + libshared.la test_set_SOURCES = \ src/test/test-set.c test_set_LDADD = \ - libsystemd-shared.la + libshared.la test_xml_SOURCES = \ src/test/test-xml.c test_xml_LDADD = \ - libsystemd-shared.la + libshared.la test_json_SOURCES = \ src/test/test-json.c test_json_LDADD = \ - libsystemd-shared.la + libshared.la test_list_SOURCES = \ src/test/test-list.c test_list_LDADD = \ - libsystemd-shared.la + libshared.la test_unaligned_LDADD = \ - libsystemd-shared.la + libshared.la test_unaligned_SOURCES = \ src/test/test-unaligned.c @@ -1820,10 +1810,9 @@ test_tables_CFLAGS = \ $(SECCOMP_CFLAGS) test_tables_LDADD = \ - libsystemd-logs.la \ libsystemd-journal-internal.la \ - libsystemd-journal-core.la \ - libsystemd-core.la \ + libjournal-core.la \ + libcore.la \ libudev-core.la \ $(RT_LIBS) @@ -1831,44 +1820,44 @@ test_prioq_SOURCES = \ src/test/test-prioq.c test_prioq_LDADD = \ - libsystemd-shared.la + libshared.la test_fileio_SOURCES = \ src/test/test-fileio.c test_fileio_LDADD = \ - libsystemd-shared.la + libshared.la test_time_SOURCES = \ src/test/test-time.c test_time_LDADD = \ - libsystemd-shared.la + libshared.la test_architecture_SOURCES = \ src/test/test-architecture.c test_architecture_LDADD = \ - libsystemd-shared.la + libshared.la test_log_SOURCES = \ src/test/test-log.c test_log_LDADD = \ - libsystemd-shared.la + libshared.la test_ipcrm_SOURCES = \ src/test/test-ipcrm.c test_ipcrm_LDADD = \ - libsystemd-shared.la \ + libshared.la \ -lrt test_btrfs_SOURCES = \ src/test/test-btrfs.c test_btrfs_LDADD = \ - libsystemd-shared.la + libshared.la if HAVE_LIBIPTC test_fw_util_SOURCES = \ @@ -1879,8 +1868,8 @@ test_fw_util_CFLAGS = \ $(LIBIPTC_CFLAGS) test_fw_util_LDADD = \ - libsystemd-fw.la \ - libsystemd-shared.la \ + libfirewall.la \ + libshared.la \ $(LIBIPTC_LIBS) endif @@ -1892,59 +1881,56 @@ test_rtnl_manual_CFLAGS = \ $(KMOD_CFLAGS) test_rtnl_manual_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la \ + libshared.la \ $(KMOD_LIBS) test_ellipsize_SOURCES = \ src/test/test-ellipsize.c test_ellipsize_LDADD = \ - libsystemd-shared.la + libshared.la test_date_SOURCES = \ src/test/test-date.c test_date_LDADD = \ - libsystemd-shared.la + libshared.la test_sleep_SOURCES = \ src/test/test-sleep.c test_sleep_LDADD = \ - libsystemd-core.la + libcore.la test_replace_var_SOURCES = \ src/test/test-replace-var.c test_replace_var_LDADD = \ - libsystemd-shared.la + libshared.la test_calendarspec_SOURCES = \ src/test/test-calendarspec.c test_calendarspec_LDADD = \ - libsystemd-shared.la + libshared.la test_strip_tab_ansi_SOURCES = \ src/test/test-strip-tab-ansi.c test_strip_tab_ansi_LDADD = \ - libsystemd-shared.la + libshared.la test_daemon_SOURCES = \ src/test/test-daemon.c test_daemon_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la test_cgroup_SOURCES = \ src/test/test-cgroup.c test_cgroup_LDADD = \ - libsystemd-shared.la \ - libsystemd-internal.la + libshared.la test_cgroup_mask_SOURCES = \ src/test/test-cgroup-mask.c @@ -1957,40 +1943,38 @@ test_cgroup_mask_CFLAGS = \ $(SECCOMP_CFLAGS) test_cgroup_mask_LDADD = \ - libsystemd-core.la \ + libcore.la \ $(RT_LIBS) test_cgroup_util_SOURCES = \ src/test/test-cgroup-util.c test_cgroup_util_LDADD = \ - libsystemd-shared.la \ - libsystemd-internal.la + libshared.la test_env_replace_SOURCES = \ src/test/test-env-replace.c test_env_replace_LDADD = \ - libsystemd-shared.la + libshared.la test_strbuf_SOURCES = \ src/test/test-strbuf.c test_strbuf_LDADD = \ - libsystemd-shared.la + libshared.la test_strv_SOURCES = \ src/test/test-strv.c test_strv_LDADD = \ - libsystemd-shared.la \ - libsystemd-internal.la + libshared.la test_path_util_SOURCES = \ src/test/test-path-util.c test_path_util_LDADD = \ - libsystemd-shared.la + libshared.la test_path_SOURCES = \ src/test/test-path.c @@ -1999,7 +1983,7 @@ test_path_CFLAGS = \ $(AM_CFLAGS) test_path_LDADD = \ - libsystemd-core.la + libcore.la test_execute_SOURCES = \ src/test/test-execute.c @@ -2008,26 +1992,25 @@ test_execute_CFLAGS = \ $(AM_CFLAGS) test_execute_LDADD = \ - libsystemd-core.la + libcore.la test_strxcpyx_SOURCES = \ src/test/test-strxcpyx.c test_strxcpyx_LDADD = \ - libsystemd-shared.la + libshared.la test_install_SOURCES = \ src/test/test-install.c test_install_LDADD = \ - libsystemd-shared.la \ - libsystemd-internal.la + libshared.la test_watchdog_SOURCES = \ src/test/test-watchdog.c test_watchdog_LDADD = \ - libsystemd-shared.la + libshared.la test_sched_prio_SOURCES = \ src/test/test-sched-prio.c @@ -2040,28 +2023,27 @@ test_sched_prio_CFLAGS = \ $(SECCOMP_CFLAGS) test_sched_prio_LDADD = \ - libsystemd-core.la \ + libcore.la \ $(RT_LIBS) test_conf_files_SOURCES = \ src/test/test-conf-files.c test_conf_files_LDADD = \ - libsystemd-shared.la + libshared.la test_conf_parser_SOURCES = \ src/test/test-conf-parser.c test_conf_parser_LDADD = \ - libsystemd-shared.la + libshared.la test_bus_policy_SOURCES = \ src/bus-proxyd/test-bus-xml-policy.c test_bus_policy_LDADD = \ - libsystemd-proxy.la \ - libsystemd-shared.la \ - libsystemd-internal.la + libbus-proxy-core.la \ + libshared.la # ------------------------------------------------------------------------------ ## .PHONY so it always rebuilds it @@ -2113,9 +2095,7 @@ systemd_analyze_CFLAGS = \ $(SECCOMP_CFLAGS) systemd_analyze_LDADD = \ - libsystemd-core.la \ - libsystemd-shared.la \ - libsystemd-internal.la \ + libcore.la \ $(RT_LIBS) # ------------------------------------------------------------------------------ @@ -2123,8 +2103,7 @@ systemd_initctl_SOURCES = \ src/initctl/initctl.c systemd_initctl_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la # ------------------------------------------------------------------------------ systemd_update_utmp_SOURCES = \ @@ -2135,8 +2114,7 @@ systemd_update_utmp_CFLAGS = \ $(AUDIT_CFLAGS) systemd_update_utmp_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la \ + libshared.la \ $(AUDIT_LIBS) # ------------------------------------------------------------------------------ @@ -2144,8 +2122,7 @@ systemd_update_done_SOURCES = \ src/update-done/update-done.c systemd_update_done_LDADD = \ - libsystemd-shared.la \ - libsystemd-internal.la + libshared.la # ------------------------------------------------------------------------------ systemd_shutdown_SOURCES = \ @@ -2159,8 +2136,7 @@ systemd_shutdown_SOURCES = \ systemd_shutdown_LDADD = \ libudev-internal.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la # ------------------------------------------------------------------------------ if HAVE_KMOD @@ -2172,7 +2148,7 @@ systemd_modules_load_CFLAGS = \ $(KMOD_CFLAGS) systemd_modules_load_LDADD = \ - libsystemd-shared.la \ + libshared.la \ $(KMOD_LIBS) rootlibexec_PROGRAMS += \ @@ -2203,13 +2179,7 @@ systemd_tmpfiles_SOURCES = \ src/tmpfiles/tmpfiles.c systemd_tmpfiles_LDADD = \ - libsystemd-shared.la \ - libsystemd-internal.la - -if HAVE_ACL -systemd_tmpfiles_LDADD += \ - libsystemd-acl.la -endif + libshared.la rootbin_PROGRAMS += \ systemd-tmpfiles @@ -2266,8 +2236,7 @@ systemd_sysusers_SOURCES = \ src/sysusers/sysusers.c systemd_sysusers_LDADD = \ - libsystemd-shared.la \ - libsystemd-internal.la + libshared.la rootbin_PROGRAMS += \ systemd-sysusers @@ -2307,8 +2276,7 @@ systemd_firstboot_SOURCES = \ src/firstboot/firstboot.c systemd_firstboot_LDADD = \ - libsystemd-shared.la \ - libsystemd-internal.la \ + libshared.la \ -lcrypt rootbin_PROGRAMS += \ @@ -2331,22 +2299,21 @@ systemd_machine_id_setup_SOURCES = \ src/core/machine-id-setup.h systemd_machine_id_setup_LDADD = \ - libsystemd-shared.la \ - libsystemd-internal.la + libshared.la # ------------------------------------------------------------------------------ systemd_sysctl_SOURCES = \ src/sysctl/sysctl.c systemd_sysctl_LDADD = \ - libsystemd-shared.la + libshared.la # ------------------------------------------------------------------------------ systemd_sleep_SOURCES = \ src/sleep/sleep.c systemd_sleep_LDADD = \ - libsystemd-shared.la + libshared.la # ------------------------------------------------------------------------------ systemd_fsck_SOURCES = \ @@ -2354,8 +2321,7 @@ systemd_fsck_SOURCES = \ systemd_fsck_LDADD = \ libudev-internal.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la # ------------------------------------------------------------------------------ systemd_machine_id_commit_SOURCES = \ @@ -2364,8 +2330,7 @@ systemd_machine_id_commit_SOURCES = \ src/core/machine-id-setup.h systemd_machine_id_commit_LDADD = \ - libsystemd-shared.la \ - libsystemd-internal.la + libshared.la SYSINIT_TARGET_WANTS += \ systemd-machine-id-commit.service @@ -2376,15 +2341,14 @@ systemd_ac_power_SOURCES = \ systemd_ac_power_LDADD = \ libudev-internal.la \ - libsystemd-shared.la \ - libsystemd-internal.la + libshared.la # ------------------------------------------------------------------------------ systemd_detect_virt_SOURCES = \ src/detect-virt/detect-virt.c systemd_detect_virt_LDADD = \ - libsystemd-shared.la + libshared.la INSTALL_EXEC_HOOKS += \ systemd-detect-virt-install-hook @@ -2394,21 +2358,21 @@ systemd_delta_SOURCES = \ src/delta/delta.c systemd_delta_LDADD = \ - libsystemd-shared.la + libshared.la # ------------------------------------------------------------------------------ systemd_getty_generator_SOURCES = \ src/getty-generator/getty-generator.c systemd_getty_generator_LDADD = \ - libsystemd-shared.la + libshared.la # ------------------------------------------------------------------------------ systemd_debug_generator_SOURCES = \ src/debug-generator/debug-generator.c systemd_debug_generator_LDADD = \ - libsystemd-shared.la + libshared.la # ------------------------------------------------------------------------------ systemd_fstab_generator_SOURCES = \ @@ -2416,14 +2380,14 @@ systemd_fstab_generator_SOURCES = \ src/core/mount-setup.c systemd_fstab_generator_LDADD = \ - libsystemd-shared.la + libshared.la # ------------------------------------------------------------------------------ systemd_system_update_generator_SOURCES = \ src/system-update-generator/system-update-generator.c systemd_system_update_generator_LDADD = \ - libsystemd-shared.la + libshared.la # ------------------------------------------------------------------------------ if ENABLE_HIBERNATE @@ -2437,14 +2401,13 @@ systemd_hibernate_resume_SOURCES = \ src/hibernate-resume/hibernate-resume.c systemd_hibernate_resume_LDADD = \ - libsystemd-shared.la \ - libsystemd-internal.la + libshared.la systemd_hibernate_resume_generator_SOURCES = \ src/hibernate-resume/hibernate-resume-generator.c systemd_hibernate_resume_generator_LDADD = \ - libsystemd-shared.la + libshared.la dist_systemunit_DATA += \ units/hibernate.target \ @@ -2470,7 +2433,7 @@ systemd_efi_boot_generator_SOURCES = \ src/efi-boot-generator/efi-boot-generator.c systemd_efi_boot_generator_LDADD = \ - libsystemd-shared.la + libshared.la # ------------------------------------------------------------------------------ if HAVE_BLKID @@ -2487,8 +2450,7 @@ bootctl_CFLAGS = \ $(BLKID_CFLAGS) bootctl_LDADD = \ - libsystemd-shared.la \ - libsystemd-internal.la \ + libshared.la \ $(BLKID_LIBS) bin_PROGRAMS += \ @@ -2662,12 +2624,11 @@ systemgenerator_PROGRAMS += \ systemd_gpt_auto_generator_SOURCES = \ src/gpt-auto-generator/gpt-auto-generator.c \ - src/shared/blkid-util.h + src/basic/blkid-util.h systemd_gpt_auto_generator_LDADD = \ libudev-internal.la \ - libsystemd-internal.la \ - libsystemd-shared.la \ + libshared.la \ $(BLKID_LIBS) systemd_gpt_auto_generator_CFLAGS = \ @@ -2684,8 +2645,7 @@ systemd_dbus1_generator_SOURCES = \ src/dbus1-generator/dbus1-generator.c systemd_dbus1_generator_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la dbus1-generator-install-hook: $(AM_V_at)$(MKDIR_P) $(DESTDIR)$(usergeneratordir) @@ -2707,15 +2667,14 @@ systemd_sysv_generator_SOURCES = \ src/sysv-generator/sysv-generator.c systemd_sysv_generator_LDADD = \ - libsystemd-core.la \ - libsystemd-shared.la + libcore.la # ------------------------------------------------------------------------------ systemd_rc_local_generator_SOURCES = \ src/rc-local-generator/rc-local-generator.c systemd_rc_local_generator_LDADD = \ - libsystemd-shared.la + libshared.la # ------------------------------------------------------------------------------ systemd_remount_fs_SOURCES = \ @@ -2724,77 +2683,71 @@ systemd_remount_fs_SOURCES = \ src/core/mount-setup.h systemd_remount_fs_LDADD = \ - libsystemd-shared.la + libshared.la # ------------------------------------------------------------------------------ systemd_cgroups_agent_SOURCES = \ src/cgroups-agent/cgroups-agent.c systemd_cgroups_agent_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la # ------------------------------------------------------------------------------ systemd_escape_SOURCES = \ src/escape/escape.c systemd_escape_LDADD = \ - libsystemd-shared.la + libshared.la # ----------------------------------------------------------------------------- systemctl_SOURCES = \ src/systemctl/systemctl.c systemctl_LDADD = \ - libsystemd-logs.la \ libsystemd-journal-internal.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la # ------------------------------------------------------------------------------ systemd_notify_SOURCES = \ src/notify/notify.c systemd_notify_LDADD = \ - libsystemd-shared.la \ - libsystemd-internal.la + libshared.la # ------------------------------------------------------------------------------ systemd_path_SOURCES = \ src/path/path.c systemd_path_LDADD = \ - libsystemd-shared.la \ - libsystemd-internal.la + libshared.la # ------------------------------------------------------------------------------ systemd_ask_password_SOURCES = \ src/ask-password/ask-password.c systemd_ask_password_LDADD = \ - libsystemd-shared.la + libshared.la # ------------------------------------------------------------------------------ systemd_reply_password_SOURCES = \ src/reply-password/reply-password.c systemd_reply_password_LDADD = \ - libsystemd-shared.la + libshared.la # ------------------------------------------------------------------------------ systemd_cgls_SOURCES = \ src/cgls/cgls.c systemd_cgls_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la # ------------------------------------------------------------------------------ systemd_cgtop_SOURCES = \ src/cgtop/cgtop.c systemd_cgtop_LDADD = \ - libsystemd-shared.la + libshared.la # ------------------------------------------------------------------------------ systemd_nspawn_SOURCES = \ @@ -2806,25 +2759,16 @@ systemd_nspawn_SOURCES = \ systemd_nspawn_CFLAGS = \ $(AM_CFLAGS) \ - $(SECCOMP_CFLAGS) \ $(BLKID_CFLAGS) systemd_nspawn_LDADD = \ libudev-internal.la \ - libsystemd-internal.la \ - libsystemd-machine.la \ - libsystemd-shared.la \ + libshared.la \ $(BLKID_LIBS) -if HAVE_SECCOMP -systemd_nspawn_LDADD += \ - libsystemd-seccomp.la \ - $(SECCOMP_LIBS) -endif - if HAVE_LIBIPTC systemd_nspawn_LDADD += \ - libsystemd-fw.la + libfirewall.la endif # ------------------------------------------------------------------------------ @@ -2832,14 +2776,13 @@ systemd_run_SOURCES = \ src/run/run.c systemd_run_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la # ------------------------------------------------------------------------------ noinst_LTLIBRARIES += \ - libsystemd-proxy.la + libbus-proxy-core.la -libsystemd_proxy_la_SOURCES = \ +libbus_proxy_core_la_SOURCES = \ src/bus-proxyd/bus-xml-policy.c \ src/bus-proxyd/bus-xml-policy.h \ src/bus-proxyd/driver.c \ @@ -2849,13 +2792,12 @@ libsystemd_proxy_la_SOURCES = \ src/bus-proxyd/synthesize.c \ src/bus-proxyd/synthesize.h -libsystemd_proxy_la_CFLAGS = \ +libbus_proxy_core_la_CFLAGS = \ $(AM_CFLAGS) \ -pthread -libsystemd_proxy_la_LIBADD = \ - libsystemd-internal.la \ - libsystemd-shared.la +libbus_proxy_core_la_LIBADD = \ + libshared.la systemd_bus_proxyd_SOURCES = \ src/bus-proxyd/bus-proxyd.c @@ -2865,17 +2807,15 @@ systemd_bus_proxyd_CFLAGS = \ -pthread systemd_bus_proxyd_LDADD = \ - libsystemd-proxy.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libbus-proxy-core.la \ + libshared.la systemd_stdio_bridge_SOURCES = \ src/bus-proxyd/stdio-bridge.c systemd_stdio_bridge_LDADD = \ - libsystemd-proxy.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libbus-proxy-core.la \ + libshared.la if ENABLE_KDBUS nodist_systemunit_DATA += \ @@ -2907,7 +2847,7 @@ systemd_tty_ask_password_agent_SOURCES = \ src/tty-ask-password-agent/tty-ask-password-agent.c systemd_tty_ask_password_agent_LDADD = \ - libsystemd-shared.la + libshared.la # ------------------------------------------------------------------------------ libsystemd_internal_la_SOURCES = \ @@ -2961,12 +2901,12 @@ libsystemd_internal_la_SOURCES = \ src/libsystemd/sd-bus/bus-convenience.c \ src/libsystemd/sd-bus/bus-track.c \ src/libsystemd/sd-bus/bus-track.h \ - src/libsystemd/sd-bus/bus-util.c \ - src/libsystemd/sd-bus/bus-util.h \ src/libsystemd/sd-bus/bus-slot.c \ src/libsystemd/sd-bus/bus-slot.h \ src/libsystemd/sd-bus/bus-protocol.h \ src/libsystemd/sd-bus/kdbus.h \ + src/libsystemd/sd-bus/bus-dump.c \ + src/libsystemd/sd-bus/bus-dump.h \ src/libsystemd/sd-utf8/sd-utf8.c \ src/libsystemd/sd-event/sd-event.c \ src/libsystemd/sd-event/event-util.h \ @@ -3005,6 +2945,7 @@ libsystemd_internal_la_CFLAGS = \ -pthread libsystemd_internal_la_LIBADD = \ + libbasic.la \ $(RT_LIBS) libsystemd_resolve_la_SOURCES = \ @@ -3022,13 +2963,6 @@ noinst_LTLIBRARIES += \ libsystemd-internal.la \ libsystemd-resolve.la -libsystemd_dump_la_SOURCES = \ - src/libsystemd/sd-bus/bus-dump.c \ - src/libsystemd/sd-bus/bus-dump.h - -noinst_LTLIBRARIES += \ - libsystemd-dump.la - EXTRA_DIST += \ src/libsystemd/libsystemd.sym.m4 \ src/libsystemd/libsystemd.pc.in \ @@ -3057,7 +2991,6 @@ libsystemd_la_LDFLAGS = \ -Wl,--version-script=$(top_builddir)/src/libsystemd/libsystemd.sym libsystemd_la_LIBADD = \ - libsystemd-shared.la \ $(libsystemd_internal_la_LIBADD) \ $(libsystemd_journal_internal_la_LIBADD) \ $(libsystemd_resolve_la_LIBADD) @@ -3122,9 +3055,7 @@ test_bus_marshal_SOURCES = \ src/libsystemd/sd-bus/test-bus-marshal.c test_bus_marshal_LDADD = \ - libsystemd-dump.la \ - libsystemd-internal.la \ - libsystemd-shared.la \ + libshared.la \ $(GLIB_LIBS) \ $(DBUS_LIBS) @@ -3137,8 +3068,7 @@ test_bus_signature_SOURCES = \ src/libsystemd/sd-bus/test-bus-signature.c test_bus_signature_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la test_bus_chat_SOURCES = \ src/libsystemd/sd-bus/test-bus-chat.c @@ -3148,8 +3078,7 @@ test_bus_chat_CFLAGS = \ -pthread test_bus_chat_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la test_bus_cleanup_SOURCES = \ src/libsystemd/sd-bus/test-bus-cleanup.c @@ -3159,8 +3088,7 @@ test_bus_cleanup_CFLAGS = \ $(SECCOMP_CFLAGS) test_bus_cleanup_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la test_bus_server_SOURCES = \ src/libsystemd/sd-bus/test-bus-server.c @@ -3170,8 +3098,7 @@ test_bus_server_CFLAGS = \ -pthread test_bus_server_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la test_bus_objects_SOURCES = \ src/libsystemd/sd-bus/test-bus-objects.c @@ -3181,24 +3108,19 @@ test_bus_objects_CFLAGS = \ -pthread test_bus_objects_LDADD = \ - libsystemd-dump.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la test_bus_error_SOURCES = \ src/libsystemd/sd-bus/test-bus-error.c test_bus_error_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la test_bus_gvariant_SOURCES = \ src/libsystemd/sd-bus/test-bus-gvariant.c test_bus_gvariant_LDADD = \ - libsystemd-dump.la \ - libsystemd-internal.la \ - libsystemd-shared.la \ + libshared.la \ $(GLIB_LIBS) test_bus_gvariant_CFLAGS = \ @@ -3209,82 +3131,68 @@ test_bus_creds_SOURCES = \ src/libsystemd/sd-bus/test-bus-creds.c test_bus_creds_LDADD = \ - libsystemd-dump.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la test_bus_match_SOURCES = \ src/libsystemd/sd-bus/test-bus-match.c test_bus_match_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la test_bus_kernel_SOURCES = \ src/libsystemd/sd-bus/test-bus-kernel.c test_bus_kernel_LDADD = \ - libsystemd-dump.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la test_bus_kernel_bloom_SOURCES = \ src/libsystemd/sd-bus/test-bus-kernel-bloom.c test_bus_kernel_bloom_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la test_bus_benchmark_SOURCES = \ src/libsystemd/sd-bus/test-bus-benchmark.c test_bus_benchmark_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la test_bus_zero_copy_SOURCES = \ src/libsystemd/sd-bus/test-bus-zero-copy.c test_bus_zero_copy_LDADD = \ - libsystemd-dump.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la test_bus_introspect_SOURCES = \ src/libsystemd/sd-bus/test-bus-introspect.c test_bus_introspect_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la test_event_SOURCES = \ src/libsystemd/sd-event/test-event.c test_event_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la test_rtnl_SOURCES = \ src/libsystemd/sd-rtnl/test-rtnl.c test_rtnl_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la test_local_addresses_SOURCES = \ src/libsystemd/sd-rtnl/test-local-addresses.c test_local_addresses_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la test_resolve_SOURCES = \ src/libsystemd/sd-resolve/test-resolve.c test_resolve_LDADD = \ libsystemd-resolve.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la test_resolve_CFLAGS = \ $(AM_CFLAGS) \ @@ -3296,9 +3204,7 @@ busctl_SOURCES = \ src/libsystemd/sd-bus/busctl-introspect.h busctl_LDADD = \ - libsystemd-dump.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la # ------------------------------------------------------------------------------ noinst_LTLIBRARIES += \ @@ -3358,9 +3264,6 @@ libsystemd_network_la_SOURCES = \ src/libsystemd-network/sd-lldp.c libsystemd_network_la_LIBADD = \ - libudev-internal.la \ - libsystemd-internal.la \ - libsystemd-shared.la \ $(KMOD_LIBS) test_dhcp_option_SOURCES = \ @@ -3370,8 +3273,7 @@ test_dhcp_option_SOURCES = \ test_dhcp_option_LDADD = \ libsystemd-network.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la test_dhcp_client_SOURCES = \ src/systemd/sd-dhcp-client.h \ @@ -3381,16 +3283,16 @@ test_dhcp_client_SOURCES = \ test_dhcp_client_LDADD = \ libsystemd-network.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libudev-internal.la \ + libshared.la \ + $(LIBIDN_LIBS) test_dhcp_server_SOURCES = \ src/libsystemd-network/test-dhcp-server.c test_dhcp_server_LDADD = \ libsystemd-network.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la test_ipv4ll_SOURCES = \ src/systemd/sd-ipv4ll.h \ @@ -3399,8 +3301,7 @@ test_ipv4ll_SOURCES = \ test_ipv4ll_LDADD = \ libsystemd-network.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la test_pppoe_SOURCES = \ src/systemd/sd-pppoe.h \ @@ -3408,7 +3309,7 @@ test_pppoe_SOURCES = \ test_pppoe_LDADD = \ libsystemd-network.la \ - libsystemd-shared.la + libshared.la test_icmp6_rs_SOURCES = \ src/systemd/sd-dhcp6-client.h \ @@ -3420,8 +3321,8 @@ test_icmp6_rs_SOURCES = \ test_icmp6_rs_LDADD = \ libsystemd-network.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libudev.la \ + libshared.la test_dhcp6_client_SOURCES = \ src/systemd/sd-dhcp6-client.h \ @@ -3432,19 +3333,18 @@ test_dhcp6_client_SOURCES = \ test_dhcp6_client_LDADD = \ libsystemd-network.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libudev.la \ + libshared.la test_lldp_SOURCES = \ - src/libsystemd-network/lldp.h \ - src/libsystemd-network/lldp-tlv.h \ - src/libsystemd-network/lldp-tlv.c \ - src/libsystemd-network/test-lldp.c + src/libsystemd-network/lldp.h \ + src/libsystemd-network/lldp-tlv.h \ + src/libsystemd-network/lldp-tlv.c \ + src/libsystemd-network/test-lldp.c test_lldp_LDADD = \ libsystemd-network.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la tests += \ test-dhcp-option \ @@ -3519,8 +3419,7 @@ libsystemd_terminal_la_SOURCES = \ libsystemd_terminal_la_LIBADD = \ libudev-internal.la \ - libsystemd-internal.la \ - libsystemd-shared.la \ + libshared.la \ $(TERMINAL_LIBS) systemd_consoled_CFLAGS = \ @@ -3538,8 +3437,7 @@ systemd_consoled_SOURCES = \ systemd_consoled_LDADD = \ libsystemd-terminal.la \ - libsystemd-internal.la \ - libsystemd-shared.la \ + libshared.la \ $(TERMINAL_LIBS) systemd_evcat_CFLAGS = \ @@ -3551,8 +3449,7 @@ systemd_evcat_SOURCES = \ systemd_evcat_LDADD = \ libsystemd-terminal.la \ - libsystemd-internal.la \ - libsystemd-shared.la \ + libshared.la \ $(TERMINAL_LIBS) systemd_modeset_CFLAGS = \ @@ -3564,8 +3461,7 @@ systemd_modeset_SOURCES = \ systemd_modeset_LDADD = \ libsystemd-terminal.la \ - libsystemd-internal.la \ - libsystemd-shared.la \ + libshared.la \ $(TERMINAL_LIBS) systemd_subterm_SOURCES = \ @@ -3573,36 +3469,35 @@ systemd_subterm_SOURCES = \ systemd_subterm_LDADD = \ libsystemd-terminal.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la test_term_page_SOURCES = \ src/libsystemd-terminal/test-term-page.c test_term_page_LDADD = \ libsystemd-terminal.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la test_term_parser_SOURCES = \ src/libsystemd-terminal/test-term-parser.c test_term_parser_LDADD = \ libsystemd-terminal.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la test_unifont_SOURCES = \ src/libsystemd-terminal/test-unifont.c test_unifont_LDADD = \ libsystemd-terminal.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la src/libsystemd-terminal/unifont-glyph-array.bin: tools/compile-unifont.py $(UNIFONT) $(AM_V_GEN)$(PYTHON) $< <$(UNIFONT) >$@ +EXTRA_DIST += \ + tools/compile-unifont.py + # ------------------------------------------------------------------------------ include_HEADERS += \ src/libudev/libudev.h @@ -3634,8 +3529,7 @@ libudev_la_LDFLAGS = \ -Wl,--version-script=$(top_srcdir)/src/libudev/libudev.sym libudev_la_LIBADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libsystemd-internal.la pkgconfiglib_DATA += \ src/libudev/libudev.pc @@ -3779,9 +3673,8 @@ libudev_core_la_CFLAGS = \ libudev_core_la_LIBADD = \ libudev-internal.la \ - libsystemd-internal.la \ libsystemd-network.la \ - libsystemd-shared.la \ + libshared.la \ $(BLKID_LIBS) \ $(KMOD_LIBS) @@ -3804,9 +3697,6 @@ libudev_core_la_SOURCES += \ src/login/logind-acl.c \ src/libsystemd/sd-login/sd-login.c \ src/systemd/sd-login.h - -libudev_core_la_LIBADD += \ - libsystemd-acl.la endif systemd_udevd_SOURCES = \ @@ -3842,8 +3732,7 @@ systemd_hwdb_SOURCES = \ systemd_hwdb_LDADD = \ libudev-internal.la \ - libsystemd-shared.la \ - libsystemd-internal.la + libshared.la rootbin_PROGRAMS += \ systemd-hwdb @@ -3911,8 +3800,8 @@ test_libudev_SOURCES = \ test_libudev_LDADD = \ libudev-internal.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la \ + $(ACL_LIBS) test_udev_SOURCES = \ src/test/test-udev.c @@ -3921,12 +3810,8 @@ test_udev_LDADD = \ libudev-core.la \ $(BLKID_LIBS) \ $(KMOD_LIBS) \ - $(SELINUX_LIBS) - -if HAVE_ACL -test_udev_LDADD += \ - libsystemd-acl.la -endif + $(SELINUX_LIBS) \ + $(ACL_LIBS) check_DATA += \ test/sys @@ -3955,8 +3840,7 @@ ata_id_SOURCES = \ ata_id_LDADD = \ libudev-internal.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la udevlibexec_PROGRAMS += \ ata_id @@ -3967,8 +3851,7 @@ cdrom_id_SOURCES = \ cdrom_id_LDADD = \ libudev-internal.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la udevlibexec_PROGRAMS += \ cdrom_id @@ -3982,8 +3865,7 @@ collect_SOURCES = \ collect_LDADD = \ libudev-internal.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la udevlibexec_PROGRAMS += \ collect @@ -3997,8 +3879,7 @@ scsi_id_SOURCES =\ scsi_id_LDADD = \ libudev-internal.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la udevlibexec_PROGRAMS += \ scsi_id @@ -4012,8 +3893,7 @@ v4l_id_SOURCES = \ v4l_id_LDADD = \ libudev-internal.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la udevlibexec_PROGRAMS += \ v4l_id @@ -4027,8 +3907,7 @@ accelerometer_SOURCES = \ accelerometer_LDADD = \ libudev-internal.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la udevlibexec_PROGRAMS += \ accelerometer @@ -4053,8 +3932,7 @@ test_id128_SOURCES = \ src/test/test-id128.c test_id128_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la tests += \ test-id128 @@ -4068,8 +3946,7 @@ systemd_activate_SOURCES = \ src/activate/activate.c systemd_activate_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la # ------------------------------------------------------------------------------ systemd_journald_SOURCES = \ @@ -4077,15 +3954,14 @@ systemd_journald_SOURCES = \ src/journal/journald-server.h systemd_journald_LDADD = \ - libsystemd-journal-core.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libjournal-core.la \ + libshared.la systemd_cat_SOURCES = \ src/journal/cat.c systemd_cat_LDADD = \ - libsystemd-journal-core.la + libjournal-core.la if HAVE_MICROHTTPD rootlibexec_PROGRAMS += \ @@ -4100,8 +3976,7 @@ systemd_journal_remote_SOURCES = \ src/journal-remote/journal-remote.c systemd_journal_remote_LDADD = \ - libsystemd-internal.la \ - libsystemd-journal-core.la + libjournal-core.la systemd_journal_remote_SOURCES += \ src/journal-remote/microhttpd-util.h \ @@ -4167,9 +4042,8 @@ systemd_journal_upload_CFLAGS = \ $(LIBCURL_CFLAGS) systemd_journal_upload_LDADD = \ - libsystemd-internal.la \ libsystemd-journal-internal.la \ - libsystemd-shared.la \ + libshared.la \ $(LIBCURL_LIBS) nodist_systemunit_DATA += \ @@ -4193,14 +4067,7 @@ journalctl_SOURCES = \ journalctl_LDADD = \ libsystemd-journal-internal.la \ - libsystemd-internal.la \ - libsystemd-logs.la \ - libsystemd-shared.la - -if HAVE_ACL -journalctl_LDADD += \ - libsystemd-acl.la -endif + libshared.la if HAVE_QRENCODE journalctl_SOURCES += \ @@ -4218,67 +4085,67 @@ test_journal_SOURCES = \ src/journal/test-journal.c test_journal_LDADD = \ - libsystemd-journal-core.la + libjournal-core.la test_journal_send_SOURCES = \ src/journal/test-journal-send.c test_journal_send_LDADD = \ - libsystemd-journal-core.la + libjournal-core.la test_journal_syslog_SOURCES = \ src/journal/test-journal-syslog.c test_journal_syslog_LDADD = \ - libsystemd-journal-core.la + libjournal-core.la test_journal_match_SOURCES = \ src/journal/test-journal-match.c test_journal_match_LDADD = \ - libsystemd-journal-core.la + libjournal-core.la test_journal_enum_SOURCES = \ src/journal/test-journal-enum.c test_journal_enum_LDADD = \ - libsystemd-journal-core.la + libjournal-core.la test_journal_stream_SOURCES = \ src/journal/test-journal-stream.c test_journal_stream_LDADD = \ - libsystemd-journal-core.la + libjournal-core.la test_journal_flush_SOURCES = \ src/journal/test-journal-flush.c test_journal_flush_LDADD = \ - libsystemd-journal-core.la + libjournal-core.la test_journal_init_SOURCES = \ src/journal/test-journal-init.c test_journal_init_LDADD = \ - libsystemd-journal-core.la + libjournal-core.la test_journal_verify_SOURCES = \ src/journal/test-journal-verify.c test_journal_verify_LDADD = \ - libsystemd-journal-core.la + libjournal-core.la test_journal_interleaving_SOURCES = \ src/journal/test-journal-interleaving.c test_journal_interleaving_LDADD = \ - libsystemd-journal-core.la + libjournal-core.la test_mmap_cache_SOURCES = \ src/journal/test-mmap-cache.c test_mmap_cache_LDADD = \ - libsystemd-journal-core.la + libjournal-core.la test_catalog_SOURCES = \ src/journal/test-catalog.c @@ -4288,29 +4155,29 @@ test_catalog_CPPFLAGS = \ -DCATALOG_DIR=\"$(abs_top_srcdir)/catalog\" test_catalog_LDADD = \ - libsystemd-journal-core.la + libjournal-core.la test_compress_SOURCES = \ src/journal/test-compress.c test_compress_LDADD = \ libsystemd-journal-internal.la \ - libsystemd-shared.la + libshared.la test_compress_benchmark_SOURCES = \ src/journal/test-compress-benchmark.c test_compress_benchmark_LDADD = \ libsystemd-journal-internal.la \ - libsystemd-shared.la + libshared.la test_audit_type_SOURCES = \ src/journal/test-audit-type.c test_audit_type_LDADD = \ - libsystemd-journal-core.la + libjournal-core.la -libsystemd_journal_core_la_SOURCES = \ +libjournal_core_la_SOURCES = \ src/journal/journald-kmsg.c \ src/journal/journald-kmsg.h \ src/journal/journald-syslog.c \ @@ -4331,22 +4198,16 @@ libsystemd_journal_core_la_SOURCES = \ src/journal/journald-rate-limit.h \ src/journal/journal-internal.h -nodist_libsystemd_journal_core_la_SOURCES = \ +nodist_libjournal_core_la_SOURCES = \ src/journal/journald-gperf.c -libsystemd_journal_core_la_LIBADD = \ +libjournal_core_la_LIBADD = \ libsystemd-journal-internal.la \ libudev-internal.la \ - libsystemd-internal.la \ - libsystemd-shared.la - -if HAVE_ACL -libsystemd_journal_core_la_LIBADD += \ - libsystemd-acl.la -endif + libshared.la noinst_LTLIBRARIES += \ - libsystemd-journal-core.la + libjournal-core.la journal-install-hook: -$(MKDIR_P) $(DESTDIR)/var/log/journal @@ -4533,10 +4394,8 @@ systemd_journal_gatewayd_SOURCES = \ src/journal-remote/microhttpd-util.c systemd_journal_gatewayd_LDADD = \ - libsystemd-logs.la \ libsystemd-journal-internal.la \ - libsystemd-internal.la \ - libsystemd-shared.la \ + libshared.la \ $(MICROHTTPD_LIBS) if HAVE_GNUTLS @@ -4572,10 +4431,8 @@ systemd_socket_proxyd_SOURCES = \ src/socket-proxy/socket-proxyd.c systemd_socket_proxyd_LDADD = \ - libsystemd-logs.la \ - libsystemd-internal.la \ libsystemd-journal-internal.la \ - libsystemd-shared.la \ + libshared.la \ libsystemd-resolve.la # ------------------------------------------------------------------------------ @@ -4587,8 +4444,7 @@ systemd_coredump_SOURCES = \ systemd_coredump_LDADD = \ libsystemd-journal-internal.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la if HAVE_ELFUTILS systemd_coredump_SOURCES += \ @@ -4605,18 +4461,12 @@ rootlibexec_PROGRAMS += \ dist_pkgsysconf_DATA += \ src/journal/coredump.conf -if HAVE_ACL -systemd_coredump_LDADD += \ - libsystemd-acl.la -endif - coredumpctl_SOURCES = \ src/journal/coredumpctl.c coredumpctl_LDADD = \ libsystemd-journal-internal.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la bin_PROGRAMS += \ coredumpctl @@ -4630,8 +4480,7 @@ test_coredump_vacuum_SOURCES = \ src/journal/coredump-vacuum.h test_coredump_vacuum_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la dist_bashcompletion_DATA += \ shell-completion/bash/coredumpctl @@ -4655,7 +4504,7 @@ systemd_binfmt_SOURCES = \ src/binfmt/binfmt.c systemd_binfmt_LDADD = \ - libsystemd-shared.la + libshared.la rootlibexec_PROGRAMS += \ systemd-binfmt @@ -4686,7 +4535,7 @@ systemd_vconsole_setup_SOURCES = \ src/vconsole/vconsole-setup.c systemd_vconsole_setup_LDADD = \ - libsystemd-shared.la + libshared.la rootlibexec_PROGRAMS += \ systemd-vconsole-setup @@ -4717,7 +4566,7 @@ systemd_bootchart_SOURCES = \ systemd_bootchart_LDADD = \ libsystemd-journal-internal.la \ - libsystemd-shared.la + libshared.la rootlibexec_PROGRAMS += \ systemd-bootchart @@ -4744,7 +4593,7 @@ systemd_quotacheck_SOURCES = \ src/quotacheck/quotacheck.c systemd_quotacheck_LDADD = \ - libsystemd-shared.la + libshared.la endif EXTRA_DIST += \ @@ -4765,7 +4614,7 @@ systemd_random_seed_SOURCES = \ src/random-seed/random-seed.c systemd_random_seed_LDADD = \ - libsystemd-shared.la + libshared.la SYSINIT_TARGET_WANTS += \ systemd-random-seed.service @@ -4788,8 +4637,7 @@ systemd_backlight_SOURCES = \ systemd_backlight_LDADD = \ libudev-internal.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la endif EXTRA_DIST += \ @@ -4808,8 +4656,7 @@ systemd_rfkill_SOURCES = \ systemd_rfkill_LDADD = \ libudev-internal.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la endif EXTRA_DIST += \ @@ -4836,15 +4683,14 @@ systemd_cryptsetup_CFLAGS = \ systemd_cryptsetup_LDADD = \ libudev-internal.la \ - libsystemd-internal.la \ - libsystemd-shared.la \ + libshared.la \ $(LIBCRYPTSETUP_LIBS) systemd_cryptsetup_generator_SOURCES = \ src/cryptsetup/cryptsetup-generator.c systemd_cryptsetup_generator_LDADD = \ - libsystemd-shared.la + libshared.la SYSINIT_TARGET_WANTS += \ cryptsetup.target @@ -4857,8 +4703,7 @@ systemd_hostnamed_SOURCES = \ src/hostname/hostnamed.c systemd_hostnamed_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la rootlibexec_PROGRAMS += \ systemd-hostnamed @@ -4888,8 +4733,7 @@ hostnamectl_SOURCES = \ src/hostname/hostnamectl.c hostnamectl_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la bin_PROGRAMS += \ hostnamectl @@ -4921,8 +4765,7 @@ systemd_localed_SOURCES = \ src/locale/localed.c systemd_localed_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la \ + libshared.la \ $(XKBCOMMON_LIBS) systemd_localed_CFLAGS = \ @@ -4961,8 +4804,7 @@ localectl_SOURCES = \ src/locale/localectl.c localectl_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la bin_PROGRAMS += \ localectl @@ -4989,8 +4831,7 @@ systemd_timedated_SOURCES = \ src/timedate/timedated.c systemd_timedated_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la rootlibexec_PROGRAMS += \ systemd-timedated @@ -5020,8 +4861,7 @@ timedatectl_SOURCES = \ src/timedate/timedatectl.c timedatectl_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la bin_PROGRAMS += \ timedatectl @@ -5059,8 +4899,7 @@ gperf_gperf_sources += \ systemd_timesyncd_LDADD = \ libsystemd-resolve.la \ libsystemd-network.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la rootlibexec_PROGRAMS += \ systemd-timesyncd @@ -5097,8 +4936,8 @@ libnss_myhostname_la_LDFLAGS = \ -Wl,--version-script=$(top_srcdir)/src/nss-myhostname/nss-myhostname.sym libnss_myhostname_la_LIBADD = \ - libsystemd-shared.la \ - libsystemd-internal.la + libshared.la +#libsystemd-network.la lib_LTLIBRARIES += \ libnss_myhostname.la @@ -5111,12 +4950,12 @@ systemd_machined_SOURCES = \ src/machine/machined.h systemd_machined_LDADD = \ - libsystemd-machine-core.la + libmachine-core.la rootlibexec_PROGRAMS += \ systemd-machined -libsystemd_machine_core_la_SOURCES = \ +libmachine_core_la_SOURCES = \ src/machine/machine.c \ src/machine/machine.h \ src/machine/machined-dbus.c \ @@ -5125,23 +4964,19 @@ libsystemd_machine_core_la_SOURCES = \ src/machine/image-dbus.c \ src/machine/image-dbus.h -libsystemd_machine_core_la_LIBADD = \ +libmachine_core_la_LIBADD = \ libudev-internal.la \ - libsystemd-internal.la \ - libsystemd-machine.la \ - libsystemd-shared.la + libshared.la noinst_LTLIBRARIES += \ - libsystemd-machine-core.la + libmachine-core.la machinectl_SOURCES = \ src/machine/machinectl.c machinectl_LDADD = \ - libsystemd-internal.la \ - libsystemd-logs.la \ libsystemd-journal-internal.la \ - libsystemd-shared.la + libshared.la rootbin_PROGRAMS += \ machinectl @@ -5153,7 +4988,7 @@ test_machine_tables_SOURCES = \ src/machine/test-machine-tables.c test_machine_tables_LDADD = \ - libsystemd-machine-core.la + libmachine-core.la tests += \ test-machine-tables @@ -5176,9 +5011,6 @@ dist_dbuspolicy_DATA += \ polkitpolicy_files += \ src/machine/org.freedesktop.machine1.policy -polkitpolicy_in_files += \ - src/machine/org.freedesktop.machine1.policy.in - dist_zshcompletion_DATA += \ shell-completion/zsh/_machinectl \ shell-completion/zsh/_sd_machines @@ -5203,14 +5035,16 @@ libnss_mymachines_la_LDFLAGS = \ -Wl,--version-script=$(top_srcdir)/src/nss-mymachines/nss-mymachines.sym libnss_mymachines_la_LIBADD = \ - libsystemd-shared.la \ - libsystemd-internal.la + libshared.la lib_LTLIBRARIES += \ libnss_mymachines.la endif +polkitpolicy_in_files += \ + src/machine/org.freedesktop.machine1.policy.in + EXTRA_DIST += \ units/systemd-machined.service.in @@ -5239,9 +5073,7 @@ systemd_importd_CFLAGS = \ -D SYSTEMD_EXPORT_PATH=\"$(rootlibexecdir)/systemd-export\" systemd_importd_LDADD = \ - libsystemd-machine.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la systemd_pull_SOURCES = \ src/import/pull.c \ @@ -5276,9 +5108,7 @@ systemd_pull_CFLAGS = \ -D USER_KEYRING_PATH=\"$(pkgsysconfdir)/import-pubring.gpg\" systemd_pull_LDADD = \ - libsystemd-machine.la \ - libsystemd-internal.la \ - libsystemd-shared.la \ + libshared.la \ $(LIBCURL_LIBS) \ $(XZ_LIBS) \ $(ZLIB_LIBS) \ @@ -5304,9 +5134,7 @@ systemd_import_CFLAGS = \ $(ZLIB_CFLAGS) systemd_import_LDADD = \ - libsystemd-machine.la \ - libsystemd-internal.la \ - libsystemd-shared.la \ + libshared.la \ $(XZ_LIBS) \ $(ZLIB_LIBS) \ -lbz2 @@ -5328,9 +5156,7 @@ systemd_export_CFLAGS = \ $(ZLIB_CFLAGS) systemd_export_LDADD = \ - libsystemd-machine.la \ - libsystemd-internal.la \ - libsystemd-shared.la \ + libshared.la \ $(XZ_LIBS) \ $(ZLIB_LIBS) \ -lbz2 @@ -5359,9 +5185,6 @@ dist_dbuspolicy_DATA += \ polkitpolicy_files += \ src/import/org.freedesktop.import1.policy -polkitpolicy_in_files += \ - src/import/org.freedesktop.import1.policy.in - manual_tests += \ test-qcow2 @@ -5375,8 +5198,7 @@ test_qcow2_CFLAGS = \ $(ZLIB_CFLAGS) test_qcow2_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la \ + libshared.la \ $(ZLIB_LIBS) endif @@ -5387,6 +5209,9 @@ endif endif +polkitpolicy_in_files += \ + src/import/org.freedesktop.import1.policy.in + EXTRA_DIST += \ units/systemd-importd.service.in \ src/resolve/resolved.conf.in @@ -5405,8 +5230,6 @@ systemd_resolved_SOURCES = \ src/resolve/resolved-link.h \ src/resolve/resolved-link.c \ src/resolve/resolved-def.h \ - src/resolve/resolved-dns-domain.h \ - src/resolve/resolved-dns-domain.c \ src/resolve/resolved-dns-rr.h \ src/resolve/resolved-dns-rr.c \ src/resolve/resolved-dns-question.h \ @@ -5445,8 +5268,7 @@ gperf_txt_sources += \ systemd_resolved_LDADD = \ libsystemd-network.la \ - libsystemd-internal.la \ - libsystemd-shared.la \ + libshared.la \ $(LIBIDN_LIBS) rootlibexec_PROGRAMS += \ @@ -5479,17 +5301,6 @@ nodist_pkgsysconf_DATA += \ tests += \ test-dns-domain -test_dns_domain_SOURCES = \ - src/resolve/resolved-dns-domain.h \ - src/resolve/resolved-dns-domain.c \ - src/resolve/test-dns-domain.c - -test_dns_domain_LDADD = \ - libsystemd-network.la \ - libsystemd-internal.la \ - libsystemd-shared.la \ - $(LIBIDN_LIBS) - libnss_resolve_la_SOURCES = \ src/nss-resolve/nss-resolve.sym \ src/nss-resolve/nss-resolve.c @@ -5504,8 +5315,7 @@ libnss_resolve_la_LDFLAGS = \ -Wl,--version-script=$(top_srcdir)/src/nss-resolve/nss-resolve.sym libnss_resolve_la_LIBADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la lib_LTLIBRARIES += \ libnss_resolve.la @@ -5520,8 +5330,6 @@ systemd_resolve_host_SOURCES = \ src/resolve/resolved-dns-answer.h \ src/resolve/resolved-dns-question.c \ src/resolve/resolved-dns-question.h \ - src/resolve/resolved-dns-domain.c \ - src/resolve/resolved-dns-domain.h \ src/resolve/dns-type.c \ src/resolve/dns-type.h @@ -5530,8 +5338,7 @@ nodist_systemd_resolve_host_SOURCES = \ src/resolve/dns_type-to-name.h systemd_resolve_host_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la \ + libshared.la \ $(LIBIDN_LIBS) rootlibexec_PROGRAMS += \ @@ -5551,20 +5358,21 @@ systemd_networkd_SOURCES = \ src/network/networkd.c systemd_networkd_LDADD = \ - libsystemd-networkd-core.la + libnetworkd-core.la \ + $(LIBIDN_LIBS) if HAVE_LIBIPTC systemd_networkd_LDADD += \ - libsystemd-fw.la + libfirewall.la endif noinst_LTLIBRARIES += \ - libsystemd-networkd-core.la + libnetworkd-core.la -libsystemd_networkd_core_la_CFLAGS = \ +libnetworkd_core_la_CFLAGS = \ $(AM_CFLAGS) -libsystemd_networkd_core_la_SOURCES = \ +libnetworkd_core_la_SOURCES = \ src/libsystemd-network/network-internal.h \ src/network/networkd.h \ src/network/networkd-link.h \ @@ -5604,15 +5412,14 @@ libsystemd_networkd_core_la_SOURCES = \ src/network/networkd-fdb.c \ src/network/networkd-address-pool.c -nodist_libsystemd_networkd_core_la_SOURCES = \ +nodist_libnetworkd_core_la_SOURCES = \ src/network/networkd-network-gperf.c \ src/network/networkd-netdev-gperf.c -libsystemd_networkd_core_la_LIBADD = \ +libnetworkd_core_la_LIBADD = \ libudev-internal.la \ - libsystemd-internal.la \ libsystemd-network.la \ - libsystemd-shared.la + libshared.la rootlibexec_PROGRAMS += \ systemd-networkd-wait-online @@ -5631,8 +5438,7 @@ systemd_networkd_wait_online_SOURCES = \ systemd_networkd_wait_online_LDADD = \ libsystemd-network.la \ libudev-internal.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la rootbin_PROGRAMS += \ networkctl @@ -5642,19 +5448,19 @@ networkctl_SOURCES = \ networkctl_LDADD = \ libudev-internal.la \ - libsystemd-internal.la \ - libsystemd-shared.la \ + libshared.la \ libsystemd-network.la test_network_SOURCES = \ src/network/test-network.c test_network_LDADD = \ - libsystemd-networkd-core.la + libnetworkd-core.la \ + $(LIBIDN_LIBS) if HAVE_LIBIPTC test_network_LDADD += \ - libsystemd-fw.la + libfirewall.la endif test_network_tables_SOURCES = \ @@ -5662,12 +5468,12 @@ test_network_tables_SOURCES = \ src/shared/test-tables.h test_network_tables_LDADD = \ - libsystemd-networkd-core.la \ + libnetworkd-core.la \ libudev-core.la if HAVE_LIBIPTC test_network_tables_LDADD += \ - libsystemd-fw.la + libfirewall.la endif tests += \ @@ -5720,9 +5526,9 @@ nodist_systemd_logind_SOURCES = \ src/login/logind-gperf.c systemd_logind_LDADD = \ - libsystemd-logind-core.la + liblogind-core.la -libsystemd_logind_core_la_SOURCES = \ +liblogind_core_la_SOURCES = \ src/login/logind-core.c \ src/login/logind-device.c \ src/login/logind-device.h \ @@ -5747,21 +5553,17 @@ libsystemd_logind_core_la_SOURCES = \ src/login/logind-utmp.c \ src/login/logind-acl.h -libsystemd_logind_core_la_LIBADD = \ +liblogind_core_la_LIBADD = \ libudev-internal.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la if HAVE_ACL -libsystemd_logind_core_la_SOURCES += \ +liblogind_core_la_SOURCES += \ src/login/logind-acl.c - -libsystemd_logind_core_la_LIBADD += \ - libsystemd-acl.la endif noinst_LTLIBRARIES += \ - libsystemd-logind-core.la + liblogind-core.la rootlibexec_PROGRAMS += \ systemd-logind @@ -5773,10 +5575,8 @@ loginctl_SOURCES = \ loginctl_LDADD = \ libudev-internal.la \ - libsystemd-internal.la \ - libsystemd-logs.la \ libsystemd-journal-internal.la \ - libsystemd-shared.la + libshared.la rootbin_PROGRAMS += \ loginctl @@ -5792,8 +5592,7 @@ systemd_inhibit_SOURCES = \ src/login/inhibit.c systemd_inhibit_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la rootbin_PROGRAMS += \ systemd-inhibit @@ -5802,28 +5601,25 @@ test_login_SOURCES = \ src/libsystemd/sd-login/test-login.c test_login_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la test_login_shared_SOURCES = \ src/login/test-login-shared.c test_login_shared_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la test_inhibit_SOURCES = \ src/login/test-inhibit.c test_inhibit_LDADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la test_login_tables_SOURCES = \ src/login/test-login-tables.c test_login_tables_LDADD = \ - libsystemd-logind-core.la + liblogind-core.la manual_tests += \ test-login \ @@ -5852,8 +5648,7 @@ pam_systemd_la_LDFLAGS = \ -Wl,--version-script=$(top_srcdir)/src/login/pam_systemd.sym pam_systemd_la_LIBADD = \ - libsystemd-internal.la \ - libsystemd-shared.la \ + libshared.la \ $(PAM_LIBS) pamlib_LTLIBRARIES = \ @@ -5925,7 +5720,7 @@ systemd_user_sessions_SOURCES = \ src/user-sessions/user-sessions.c systemd_user_sessions_LDADD = \ - libsystemd-shared.la + libshared.la rootlibexec_PROGRAMS += \ systemd-user-sessions @@ -5991,7 +5786,7 @@ id128_la_LDFLAGS = \ id128_la_LIBADD = \ $(PYTHON_DEVEL_LIBS) \ - libsystemd-shared.la \ + libshared.la \ libsystemd.la _daemon_la_SOURCES = \ @@ -6013,7 +5808,7 @@ _daemon_la_LDFLAGS = \ _daemon_la_LIBADD = \ $(PYTHON_DEVEL_LIBS) \ - libsystemd-shared.la \ + libshared.la \ libsystemd.la _reader_la_SOURCES = \ @@ -6034,7 +5829,7 @@ _reader_la_LDFLAGS = \ _reader_la_LIBADD = \ $(PYTHON_DEVEL_LIBS) \ - libsystemd-shared.la \ + libshared.la \ libsystemd.la login_la_SOURCES = \ @@ -6055,7 +5850,7 @@ login_la_LDFLAGS = \ login_la_LIBADD = \ $(PYTHON_DEVEL_LIBS) \ - libsystemd-shared.la \ + libshared.la \ libsystemd.la dist_pkgpyexec_PYTHON = \ @@ -6127,8 +5922,7 @@ libsystemd_journal_la_LDFLAGS = \ libsystemd_journal_la_LIBADD = \ libsystemd-journal-internal.la \ - libsystemd-internal.la \ - libsystemd-shared.la + libsystemd-internal.la libsystemd_login_la_SOURCES = \ libsystemd-login.c \ @@ -6144,8 +5938,7 @@ libsystemd_login_la_LDFLAGS = \ -Wl,--version-script=$(top_srcdir)/src/compat-libs/libsystemd-login.sym libsystemd_login_la_LIBADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la libsystemd_id128_la_SOURCES = \ libsystemd-id128.c \ @@ -6161,8 +5954,7 @@ libsystemd_id128_la_LDFLAGS = \ -Wl,--version-script=$(top_srcdir)/src/compat-libs/libsystemd-id128.sym libsystemd_id128_la_LIBADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la libsystemd_daemon_la_SOURCES = \ libsystemd-daemon.c \ @@ -6178,8 +5970,7 @@ libsystemd_daemon_la_LDFLAGS = \ -Wl,--version-script=$(top_srcdir)/src/compat-libs/libsystemd-daemon.sym libsystemd_daemon_la_LIBADD = \ - libsystemd-internal.la \ - libsystemd-shared.la + libshared.la lib_LTLIBRARIES += \ libsystemd-journal.la \ @@ -30,8 +30,8 @@ AUTHOR: LICENSE: LGPLv2.1+ for all code - - except src/shared/MurmurHash2.c which is Public Domain - - except src/shared/siphash24.c which is CC0 Public Domain + - except src/basic/MurmurHash2.c which is Public Domain + - except src/basic/siphash24.c which is CC0 Public Domain - except src/journal/lookup3.c which is Public Domain - except src/udev/* which is (currently still) GPLv2, GPLv2+ @@ -1,6 +1,7 @@ # systemd - System and Service Manager -[![Build Status](https://semaphoreci.com/api/v1/projects/28a5a3ca-3c56-4078-8b5e-7ed6ef912e14/443470/shields_badge.svg)](https://semaphoreci.com/systemd/systemd) +[![Build Status](https://semaphoreci.com/api/v1/projects/28a5a3ca-3c56-4078-8b5e-7ed6ef912e14/443470/shields_badge.svg)](https://semaphoreci.com/systemd/systemd)<br/> +[![Coverity Scan Status](https://scan.coverity.com/projects/350/badge.svg)](https://scan.coverity.com/projects/350) ## Details diff --git a/configure.ac b/configure.ac index 2625e0d15b..344bfe1e21 100644 --- a/configure.ac +++ b/configure.ac @@ -149,7 +149,6 @@ CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\ -pipe \ -Wall \ -Wextra \ - -Wno-inline \ -Wundef \ "-Wformat=2 -Wformat-security -Wformat-nonliteral" \ -Wlogical-op \ @@ -160,17 +159,18 @@ CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\ -Wdeclaration-after-statement \ -Wfloat-equal \ -Wsuggest-attribute=noreturn \ - -Wmissing-prototypes \ + -Werror=missing-prototypes \ + -Werror=implicit-function-declaration \ + -Werror=missing-declarations \ + -Werror=return-type \ + -Werror=shadow \ -Wstrict-prototypes \ -Wredundant-decls \ - -Wmissing-declarations \ -Wmissing-noreturn \ -Wshadow \ -Wendif-labels \ -Wstrict-aliasing=2 \ -Wwrite-strings \ - -Wno-long-long \ - -Wno-overlength-strings \ -Wno-unused-parameter \ -Wno-missing-field-initializers \ -Wno-unused-result \ diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb index 9c7e553a41..007c6a809e 100644 --- a/hwdb/60-keyboard.hwdb +++ b/hwdb/60-keyboard.hwdb @@ -980,6 +980,8 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*550P*:pvr* KEYBOARD_KEY_a9=! # Fn Lock - Function lock off # Series 7 / 9 +evdev:atkbd:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*350V*:pvr* +evdev:atkbd:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*670Z*:pvr* evdev:atkbd:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*700Z*:pvr* evdev:atkbd:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*700G*:pvr* evdev:atkbd:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*900X[34]*:pvr* diff --git a/hwdb/70-mouse.hwdb b/hwdb/70-mouse.hwdb index 2784b941a1..6c77b74e53 100644 --- a/hwdb/70-mouse.hwdb +++ b/hwdb/70-mouse.hwdb @@ -169,6 +169,8 @@ mouse:usb:v046dpc00e:name:Logitech USB-PS/2 Optical Mouse: mouse:usb:v046dpc01b:name:Logitech USB-PS/2 Optical Mouse: # Logitech USB-PS/2 M-BT58 mouse:usb:v046dpc03e:name:Logitech USB-PS/2 Optical Mouse: +# Logitech TrackMan Marble Wheel USB +mouse:usb:v046dpc401:name:Logitech USB-PS/2 Trackball: MOUSE_DPI=400@125 # Lenovo USB mouse model MO28UOL @@ -180,6 +182,7 @@ mouse:usb:v046dpc045:name:Logitech USB-PS/2 Optical Mouse: MOUSE_DPI=600@125 # Logitech Wireless Mouse M325 +mouse:usb:v046dp400a:name:Logitech M325: mouse:usb:v046dpc52b:name:Logitech Unifying Device. Wireless PID:400a: MOUSE_DPI=600@166 MOUSE_WHEEL_CLICK_ANGLE=20 @@ -213,8 +216,10 @@ mouse:usb:v046dp1028:name:Logitech M570: MOUSE_DPI=540@167 # Logitech Wireless Mouse M185 +mouse:usb:v046dp4008:name:Logitech M185: mouse:usb:v046dpc52b:name:Logitech Unifying Device. Wireless PID:4008: # Logitech M705 (marathon mouse) +mouse:usb:v046dp101b:name:Logitech M705: mouse:usb:v046dpc52b:name:Logitech Unifying Device. Wireless PID:101b: MOUSE_DPI=800@166 @@ -225,6 +230,8 @@ mouse:usb:v046dpc24e:name:Logitech G500s Laser Gaming Mouse: MOUSE_DPI=400@500 *800@500 2000@500 # Logitech B605 Wireless Mouse (also M505) +mouse:usb:v046dp101d:name:Logitech B605: +mouse:usb:v046dp101d:name:Logitech M505: mouse:usb:v046dpc52b:name:Logitech Unifying Device. Wireless PID:101d: MOUSE_DPI=900@166 @@ -253,10 +260,12 @@ mouse:usb:v046dpc069:name:Logitech USB Laser Mouse: MOUSE_DPI=1200@125 # Logitech T620 (or, the soap) +mouse:usb:v046dp4027:name:Logitech T620: mouse:usb:v046dpc52b:name:Logitech Unifying Device. Wireless PID:4027: MOUSE_DPI=1200@250 # Logitech ZoneTouch Mouse T400 +mouse:usb:v046dp4026:name:Logitech T400: mouse:usb:v046dpc52b:name:Logitech Unifying Device. Wireless PID:4026: MOUSE_DPI=1300@166 diff --git a/man/systemd-cgtop.xml b/man/systemd-cgtop.xml index b0c88001d4..d14564480d 100644 --- a/man/systemd-cgtop.xml +++ b/man/systemd-cgtop.xml @@ -65,10 +65,12 @@ groups of the local Linux control group hierarchy, ordered by their CPU, memory, or disk I/O load. The display is refreshed in regular intervals (by default every 1s), similar in style to - <citerefentry project='man-pages'><refentrytitle>top</refentrytitle><manvolnum>1</manvolnum></citerefentry>. - If <command>systemd-cgtop</command> is not connected to a tty, - only one iteration is performed and no columns headers are - printed. This mode is suitable for scripting.</para> + <citerefentry project='man-pages'><refentrytitle>top</refentrytitle><manvolnum>1</manvolnum></citerefentry>.</para> + + <para>If <command>systemd-cgtop</command> is not connected to a tty, no + column headers are printed and the default is to only run one iteration. + The <varname>--iterations</varname> argument, if given, is still honored. + This mode is suitable for scripting.</para> <para>Resource usage is only accounted for control groups in the relevant hierarchy, i.e. CPU usage is only accounted for control @@ -143,11 +145,20 @@ </varlistentry> <varlistentry> + <term><option>-r</option></term> + <term><option>--raw</option></term> + + <listitem><para>Format byte counts (as in memory usage and IO metrics) + with raw numeric values rather than human-readable + numbers.</para></listitem> + </varlistentry> + + <varlistentry> <term><option>-n</option></term> <term><option>--iterations=</option></term> - <listitem><para>Perform only this many iterations. - </para></listitem> + <listitem><para>Perform only this many iterations. A value of 0 + indicates that the program should run indefinitely.</para></listitem> </varlistentry> <varlistentry> diff --git a/man/systemd-udevd.service.xml b/man/systemd-udevd.service.xml index c0d323033c..7a4b62aaf1 100644 --- a/man/systemd-udevd.service.xml +++ b/man/systemd-udevd.service.xml @@ -106,7 +106,7 @@ <term><option>--event-timeout=</option></term> <listitem> <para>Set the number of seconds to wait for events to finish. After - this time the event will be terminated. The default is 30 seconds.</para> + this time the event will be terminated. The default is 180 seconds.</para> </listitem> </varlistentry> diff --git a/man/systemd.link.xml b/man/systemd.link.xml index 5db06842bd..723364f4d1 100644 --- a/man/systemd.link.xml +++ b/man/systemd.link.xml @@ -232,7 +232,9 @@ <para>If the kernel is using a random MAC address, nothing is done. Otherwise, a new address is randomly generated each time the device appears, typically at - boot.</para> + boot. Either way the random address will have the + <literal>unicast</literal> and + <literal>locally administered</literal> bits set.</para> </listitem> </varlistentry> </variablelist> diff --git a/man/systemd.network.xml b/man/systemd.network.xml index 54fef4c9c4..bd061c270a 100644 --- a/man/systemd.network.xml +++ b/man/systemd.network.xml @@ -366,8 +366,7 @@ the routing table. Takes either a boolean argument, or the values <literal>ipv4</literal> or <literal>ipv6</literal>, which only enables IP forwarding for the specified address - family, or <literal>kernel</literal>, which preserves existing sysctl settings. - This controls the + family. This controls the <filename>net.ipv4.conf.<interface>.forwarding</filename> and <filename>net.ipv6.conf.<interface>.forwarding</filename> @@ -376,8 +375,8 @@ for details about sysctl options). Defaults to <literal>no</literal>.</para> - <para>Note: unless this option is turned on, or set to <literal>kernel</literal>, - no IP forwarding is done on this interface, even if this is + <para>Note: unless this option is turned on, no IP + forwarding is done on this interface, even if this is globally turned on in the kernel, with the <filename>net.ipv4.ip_forward</filename> and <filename>net.ipv4.ip_forward</filename> sysctl diff --git a/man/udev.xml b/man/udev.xml index d5d8a17cdb..70f4f59c08 100644 --- a/man/udev.xml +++ b/man/udev.xml @@ -472,7 +472,8 @@ <varlistentry> <term><literal>program</literal></term> <listitem> - <para>Execute an external program specified as the assigned value and + <para>Execute an external program specified as the assigned + value and if it returns successfully import its output, which must be in environment key format. Path specification, command/argument separation, and quoting work like in <varname>RUN</varname>.</para> diff --git a/rules/60-block.rules b/rules/60-block.rules index a69d648023..c74caca49f 100644 --- a/rules/60-block.rules +++ b/rules/60-block.rules @@ -8,4 +8,4 @@ ACTION=="add", SUBSYSTEM=="module", KERNEL=="block", ATTR{parameters/events_dfl_ ACTION=="change", SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", TEST=="block", ATTR{block/*/uevent}="change" # watch metadata changes, caused by tools closing the device node which was opened for writing -ACTION!="remove", SUBSYSTEM=="block", KERNEL=="loop*|nvme*|sd*|vd*", OPTIONS+="watch" +ACTION!="remove", SUBSYSTEM=="block", KERNEL=="loop*|nvme*|sd*|vd*|xvd*", OPTIONS+="watch" diff --git a/rules/60-persistent-storage.rules b/rules/60-persistent-storage.rules index 64c5f1cfdd..2daeb6db42 100644 --- a/rules/60-persistent-storage.rules +++ b/rules/60-persistent-storage.rules @@ -6,7 +6,7 @@ ACTION=="remove", GOTO="persistent_storage_end" SUBSYSTEM!="block", GOTO="persistent_storage_end" -KERNEL!="loop*|mmcblk*[0-9]|msblk*[0-9]|mspblk*[0-9]|nvme*|sd*|sr*|vd*|bcache*|xvd*", GOTO="persistent_storage_end" +KERNEL!="loop*|mmcblk*[0-9]|msblk*[0-9]|mspblk*[0-9]|nvme*|sd*|sr*|vd*|xvd*|bcache*", GOTO="persistent_storage_end" # ignore partitions that span the entire disk TEST=="whole_disk", GOTO="persistent_storage_end" diff --git a/src/activate/activate.c b/src/activate/activate.c index d345e28567..5318829442 100644 --- a/src/activate/activate.c +++ b/src/activate/activate.c @@ -33,6 +33,7 @@ #include "log.h" #include "strv.h" #include "macro.h" +#include "signal-util.h" static char** arg_listen = NULL; static bool arg_accept = false; @@ -192,6 +193,10 @@ static int launch1(const char* child, char** argv, char **env, int fd) { /* In the child */ if (child_pid == 0) { + + (void) reset_all_signal_handlers(); + (void) reset_signal_mask(); + r = dup2(fd, STDIN_FILENO); if (r < 0) { log_error_errno(errno, "Failed to dup connection to stdin: %m"); diff --git a/src/shared/.gitignore b/src/basic/.gitignore index e22411e484..e22411e484 100644 --- a/src/shared/.gitignore +++ b/src/basic/.gitignore diff --git a/src/shared/Makefile b/src/basic/Makefile index d0b0e8e008..d0b0e8e008 120000 --- a/src/shared/Makefile +++ b/src/basic/Makefile diff --git a/src/shared/MurmurHash2.c b/src/basic/MurmurHash2.c index 2f4149dbe9..2f4149dbe9 100644 --- a/src/shared/MurmurHash2.c +++ b/src/basic/MurmurHash2.c diff --git a/src/shared/MurmurHash2.h b/src/basic/MurmurHash2.h index 93362dd485..93362dd485 100644 --- a/src/shared/MurmurHash2.h +++ b/src/basic/MurmurHash2.h diff --git a/src/shared/af-list.c b/src/basic/af-list.c index f396115a34..f396115a34 100644 --- a/src/shared/af-list.c +++ b/src/basic/af-list.c diff --git a/src/shared/af-list.h b/src/basic/af-list.h index e346ab87f5..e346ab87f5 100644 --- a/src/shared/af-list.h +++ b/src/basic/af-list.h diff --git a/src/shared/arphrd-list.c b/src/basic/arphrd-list.c index 284043cd90..284043cd90 100644 --- a/src/shared/arphrd-list.c +++ b/src/basic/arphrd-list.c diff --git a/src/shared/arphrd-list.h b/src/basic/arphrd-list.h index 5ca182c9e8..5ca182c9e8 100644 --- a/src/shared/arphrd-list.h +++ b/src/basic/arphrd-list.h diff --git a/src/shared/async.c b/src/basic/async.c index 7725e6d7d3..7725e6d7d3 100644 --- a/src/shared/async.c +++ b/src/basic/async.c diff --git a/src/shared/async.h b/src/basic/async.h index 7f1ef79532..7f1ef79532 100644 --- a/src/shared/async.h +++ b/src/basic/async.h diff --git a/src/shared/audit.c b/src/basic/audit.c index 54148fcf18..54148fcf18 100644 --- a/src/shared/audit.c +++ b/src/basic/audit.c diff --git a/src/shared/audit.h b/src/basic/audit.h index 6de331c73e..6de331c73e 100644 --- a/src/shared/audit.h +++ b/src/basic/audit.h diff --git a/src/shared/barrier.c b/src/basic/barrier.c index 436ba95989..436ba95989 100644 --- a/src/shared/barrier.c +++ b/src/basic/barrier.c diff --git a/src/shared/barrier.h b/src/basic/barrier.h index b8954694d3..b8954694d3 100644 --- a/src/shared/barrier.h +++ b/src/basic/barrier.h diff --git a/src/shared/blkid-util.h b/src/basic/blkid-util.h index c689310324..c689310324 100644 --- a/src/shared/blkid-util.h +++ b/src/basic/blkid-util.h diff --git a/src/shared/btrfs-ctree.h b/src/basic/btrfs-ctree.h index d3ae57331c..d3ae57331c 100644 --- a/src/shared/btrfs-ctree.h +++ b/src/basic/btrfs-ctree.h diff --git a/src/shared/btrfs-util.c b/src/basic/btrfs-util.c index 49528dbf01..49528dbf01 100644 --- a/src/shared/btrfs-util.c +++ b/src/basic/btrfs-util.c diff --git a/src/shared/btrfs-util.h b/src/basic/btrfs-util.h index a7eb895c93..a7eb895c93 100644 --- a/src/shared/btrfs-util.h +++ b/src/basic/btrfs-util.h diff --git a/src/shared/build.h b/src/basic/build.h index 24873ab9d7..24873ab9d7 100644 --- a/src/shared/build.h +++ b/src/basic/build.h diff --git a/src/shared/bus-label.c b/src/basic/bus-label.c index ccc9f2bf8e..ccc9f2bf8e 100644 --- a/src/shared/bus-label.c +++ b/src/basic/bus-label.c diff --git a/src/shared/bus-label.h b/src/basic/bus-label.h index ed1dc4e0a7..ed1dc4e0a7 100644 --- a/src/shared/bus-label.h +++ b/src/basic/bus-label.h diff --git a/src/shared/calendarspec.c b/src/basic/calendarspec.c index 2fde3e107e..2fde3e107e 100644 --- a/src/shared/calendarspec.c +++ b/src/basic/calendarspec.c diff --git a/src/shared/calendarspec.h b/src/basic/calendarspec.h index 7baf318249..7baf318249 100644 --- a/src/shared/calendarspec.h +++ b/src/basic/calendarspec.h diff --git a/src/shared/cap-list.c b/src/basic/cap-list.c index bd5bffbfa5..bd5bffbfa5 100644 --- a/src/shared/cap-list.c +++ b/src/basic/cap-list.c diff --git a/src/shared/cap-list.h b/src/basic/cap-list.h index 9824fad70f..9824fad70f 100644 --- a/src/shared/cap-list.h +++ b/src/basic/cap-list.h diff --git a/src/shared/capability.c b/src/basic/capability.c index 58f00e6dae..58f00e6dae 100644 --- a/src/shared/capability.c +++ b/src/basic/capability.c diff --git a/src/shared/capability.h b/src/basic/capability.h index 4eb5c2a835..4eb5c2a835 100644 --- a/src/shared/capability.h +++ b/src/basic/capability.h diff --git a/src/shared/cgroup-util.c b/src/basic/cgroup-util.c index 9988e5c574..66857f118f 100644 --- a/src/shared/cgroup-util.c +++ b/src/basic/cgroup-util.c @@ -40,7 +40,7 @@ #include "fileio.h" #include "special.h" #include "mkdir.h" -#include "login-shared.h" +#include "login-util.h" int cg_enumerate_processes(const char *controller, const char *path, FILE **_f) { _cleanup_free_ char *fs = NULL; @@ -441,9 +441,7 @@ static const char *normalize_controller(const char *controller) { assert(controller); - if (streq(controller, SYSTEMD_CGROUP_CONTROLLER)) - return "systemd"; - else if (startswith(controller, "name=")) + if (startswith(controller, "name=")) return controller + 5; else return controller; @@ -483,7 +481,7 @@ int cg_get_path(const char *controller, const char *path, const char *suffix, ch assert(fs); - if (controller && !cg_controller_is_valid(controller, true)) + if (controller && !cg_controller_is_valid(controller)) return -EINVAL; if (_unlikely_(!good)) { @@ -526,7 +524,7 @@ int cg_get_path_and_check(const char *controller, const char *path, const char * assert(fs); - if (!cg_controller_is_valid(controller, true)) + if (!cg_controller_is_valid(controller)) return -EINVAL; /* Normalize the controller syntax */ @@ -742,7 +740,7 @@ int cg_pid_get_path(const char *controller, pid_t pid, char **path) { assert(pid >= 0); if (controller) { - if (!cg_controller_is_valid(controller, true)) + if (!cg_controller_is_valid(controller)) return -EINVAL; controller = normalize_controller(controller); @@ -971,7 +969,7 @@ int cg_split_spec(const char *spec, char **controller, char **path) { e = strchr(spec, ':'); if (!e) { - if (!cg_controller_is_valid(spec, true)) + if (!cg_controller_is_valid(spec)) return -EINVAL; if (controller) { @@ -994,7 +992,7 @@ int cg_split_spec(const char *spec, char **controller, char **path) { t = strdup(normalize_controller(v)); if (!t) return -ENOMEM; - if (!cg_controller_is_valid(t, true)) { + if (!cg_controller_is_valid(t)) { free(t); return -EINVAL; } @@ -1610,17 +1608,15 @@ char *cg_unescape(const char *p) { DIGITS LETTERS \ "_" -bool cg_controller_is_valid(const char *p, bool allow_named) { +bool cg_controller_is_valid(const char *p) { const char *t, *s; if (!p) return false; - if (allow_named) { - s = startswith(p, "name="); - if (s) - p = s; - } + s = startswith(p, "name="); + if (s) + p = s; if (*p == 0 || *p == '_') return false; diff --git a/src/shared/cgroup-util.h b/src/basic/cgroup-util.h index cbf7201370..fd72e9e5c5 100644 --- a/src/shared/cgroup-util.h +++ b/src/basic/cgroup-util.h @@ -122,7 +122,7 @@ int cg_path_decode_unit(const char *cgroup, char **unit); char *cg_escape(const char *p); char *cg_unescape(const char *p) _pure_; -bool cg_controller_is_valid(const char *p, bool allow_named); +bool cg_controller_is_valid(const char *p); int cg_slice_to_path(const char *unit, char **ret); diff --git a/src/shared/clock-util.c b/src/basic/clock-util.c index e4e03df1e4..e4e03df1e4 100644 --- a/src/shared/clock-util.c +++ b/src/basic/clock-util.c diff --git a/src/shared/clock-util.h b/src/basic/clock-util.h index 8c2d235430..8c2d235430 100644 --- a/src/shared/clock-util.h +++ b/src/basic/clock-util.h diff --git a/src/shared/conf-files.c b/src/basic/conf-files.c index da8745b284..da8745b284 100644 --- a/src/shared/conf-files.c +++ b/src/basic/conf-files.c diff --git a/src/shared/conf-files.h b/src/basic/conf-files.h index 3169a907f1..3169a907f1 100644 --- a/src/shared/conf-files.h +++ b/src/basic/conf-files.h diff --git a/src/shared/copy.c b/src/basic/copy.c index 1282cb88be..1282cb88be 100644 --- a/src/shared/copy.c +++ b/src/basic/copy.c diff --git a/src/shared/copy.h b/src/basic/copy.h index 8de0cfba32..8de0cfba32 100644 --- a/src/shared/copy.h +++ b/src/basic/copy.h diff --git a/src/shared/def.h b/src/basic/def.h index a3d9fcf388..011c7c667e 100644 --- a/src/shared/def.h +++ b/src/basic/def.h @@ -35,7 +35,7 @@ * the watchdog pings will keep the loop busy. */ #define DEFAULT_EXIT_USEC (30*USEC_PER_SEC) -#define SYSTEMD_CGROUP_CONTROLLER "name=systemd" +#define SYSTEMD_CGROUP_CONTROLLER "systemd" #define SIGNALS_CRASH_HANDLER SIGSEGV,SIGILL,SIGFPE,SIGBUS,SIGQUIT,SIGABRT #define SIGNALS_IGNORE SIGPIPE diff --git a/src/shared/device-nodes.c b/src/basic/device-nodes.c index 9d5af72d27..9d5af72d27 100644 --- a/src/shared/device-nodes.c +++ b/src/basic/device-nodes.c diff --git a/src/shared/device-nodes.h b/src/basic/device-nodes.h index 04ba4897e5..04ba4897e5 100644 --- a/src/shared/device-nodes.h +++ b/src/basic/device-nodes.h diff --git a/src/shared/env-util.c b/src/basic/env-util.c index ac7bbdc711..ac7bbdc711 100644 --- a/src/shared/env-util.c +++ b/src/basic/env-util.c diff --git a/src/shared/env-util.h b/src/basic/env-util.h index 803aa61cad..803aa61cad 100644 --- a/src/shared/env-util.h +++ b/src/basic/env-util.h diff --git a/src/shared/errno-list.c b/src/basic/errno-list.c index 34d1331486..34d1331486 100644 --- a/src/shared/errno-list.c +++ b/src/basic/errno-list.c diff --git a/src/shared/errno-list.h b/src/basic/errno-list.h index ba533294e6..ba533294e6 100644 --- a/src/shared/errno-list.h +++ b/src/basic/errno-list.h diff --git a/src/shared/ether-addr-util.h b/src/basic/ether-addr-util.h index 7033138788..7033138788 100644 --- a/src/shared/ether-addr-util.h +++ b/src/basic/ether-addr-util.h diff --git a/src/shared/exit-status.c b/src/basic/exit-status.c index c09efdd2cb..c09efdd2cb 100644 --- a/src/shared/exit-status.c +++ b/src/basic/exit-status.c diff --git a/src/shared/exit-status.h b/src/basic/exit-status.h index 7259cd1d18..7259cd1d18 100644 --- a/src/shared/exit-status.h +++ b/src/basic/exit-status.h diff --git a/src/shared/fdset.c b/src/basic/fdset.c index 6101b628ec..6101b628ec 100644 --- a/src/shared/fdset.c +++ b/src/basic/fdset.c diff --git a/src/shared/fdset.h b/src/basic/fdset.h index 340438d7c4..340438d7c4 100644 --- a/src/shared/fdset.h +++ b/src/basic/fdset.h diff --git a/src/shared/fileio-label.c b/src/basic/fileio-label.c index bec988ca78..bec988ca78 100644 --- a/src/shared/fileio-label.c +++ b/src/basic/fileio-label.c diff --git a/src/shared/fileio-label.h b/src/basic/fileio-label.h index 25fa351be2..25fa351be2 100644 --- a/src/shared/fileio-label.h +++ b/src/basic/fileio-label.h diff --git a/src/shared/fileio.c b/src/basic/fileio.c index ff6b1a7ed7..ff6b1a7ed7 100644 --- a/src/shared/fileio.c +++ b/src/basic/fileio.c diff --git a/src/shared/fileio.h b/src/basic/fileio.h index 5ae51c1e28..5ae51c1e28 100644 --- a/src/shared/fileio.h +++ b/src/basic/fileio.h diff --git a/src/shared/gunicode.c b/src/basic/gunicode.c index d89a2f3ed9..d89a2f3ed9 100644 --- a/src/shared/gunicode.c +++ b/src/basic/gunicode.c diff --git a/src/shared/gunicode.h b/src/basic/gunicode.h index e70818fdd7..e70818fdd7 100644 --- a/src/shared/gunicode.h +++ b/src/basic/gunicode.h diff --git a/src/shared/hashmap.c b/src/basic/hashmap.c index 20d599d04b..20d599d04b 100644 --- a/src/shared/hashmap.c +++ b/src/basic/hashmap.c diff --git a/src/shared/hashmap.h b/src/basic/hashmap.h index a03ee5812a..a03ee5812a 100644 --- a/src/shared/hashmap.h +++ b/src/basic/hashmap.h diff --git a/src/shared/hostname-util.c b/src/basic/hostname-util.c index e336f269fa..e336f269fa 100644 --- a/src/shared/hostname-util.c +++ b/src/basic/hostname-util.c diff --git a/src/shared/hostname-util.h b/src/basic/hostname-util.h index 0c4763cf5a..0c4763cf5a 100644 --- a/src/shared/hostname-util.h +++ b/src/basic/hostname-util.h diff --git a/src/shared/in-addr-util.c b/src/basic/in-addr-util.c index d88864b598..d88864b598 100644 --- a/src/shared/in-addr-util.c +++ b/src/basic/in-addr-util.c diff --git a/src/shared/in-addr-util.h b/src/basic/in-addr-util.h index 51af08868c..51af08868c 100644 --- a/src/shared/in-addr-util.h +++ b/src/basic/in-addr-util.h diff --git a/src/shared/ioprio.h b/src/basic/ioprio.h index e5c71d0043..e5c71d0043 100644 --- a/src/shared/ioprio.h +++ b/src/basic/ioprio.h diff --git a/src/shared/json.c b/src/basic/json.c index be40a0d203..be40a0d203 100644 --- a/src/shared/json.c +++ b/src/basic/json.c diff --git a/src/shared/json.h b/src/basic/json.h index e0b4d810b5..e0b4d810b5 100644 --- a/src/shared/json.h +++ b/src/basic/json.h diff --git a/src/shared/label.c b/src/basic/label.c index 82f10b21bd..82f10b21bd 100644 --- a/src/shared/label.c +++ b/src/basic/label.c diff --git a/src/shared/label.h b/src/basic/label.h index 8070bcb021..8070bcb021 100644 --- a/src/shared/label.h +++ b/src/basic/label.h diff --git a/src/shared/linux/Makefile b/src/basic/linux/Makefile index d0b0e8e008..d0b0e8e008 120000 --- a/src/shared/linux/Makefile +++ b/src/basic/linux/Makefile diff --git a/src/shared/list.h b/src/basic/list.h index 2939216adb..2939216adb 100644 --- a/src/shared/list.h +++ b/src/basic/list.h diff --git a/src/shared/locale-util.c b/src/basic/locale-util.c index 61db9a8125..61db9a8125 100644 --- a/src/shared/locale-util.c +++ b/src/basic/locale-util.c diff --git a/src/shared/locale-util.h b/src/basic/locale-util.h index e48aa3d9af..e48aa3d9af 100644 --- a/src/shared/locale-util.h +++ b/src/basic/locale-util.h diff --git a/src/shared/lockfile-util.c b/src/basic/lockfile-util.c index 05e16d1caa..05e16d1caa 100644 --- a/src/shared/lockfile-util.c +++ b/src/basic/lockfile-util.c diff --git a/src/shared/lockfile-util.h b/src/basic/lockfile-util.h index 38d47094bd..38d47094bd 100644 --- a/src/shared/lockfile-util.h +++ b/src/basic/lockfile-util.h diff --git a/src/shared/log.c b/src/basic/log.c index b96afc4de4..b96afc4de4 100644 --- a/src/shared/log.c +++ b/src/basic/log.c diff --git a/src/shared/log.h b/src/basic/log.h index 569762d083..569762d083 100644 --- a/src/shared/log.h +++ b/src/basic/log.h diff --git a/src/shared/login-shared.c b/src/basic/login-util.c index 64650a9134..e25437f0f4 100644 --- a/src/shared/login-shared.c +++ b/src/basic/login-util.c @@ -19,7 +19,7 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>. ***/ -#include "login-shared.h" +#include "login-util.h" #include "def.h" bool session_id_valid(const char *id) { diff --git a/src/shared/login-shared.h b/src/basic/login-util.h index a79f20c1b1..a79f20c1b1 100644 --- a/src/shared/login-shared.h +++ b/src/basic/login-util.h diff --git a/src/shared/macro.h b/src/basic/macro.h index 7ae1ed80b6..cc1c9e73c0 100644 --- a/src/shared/macro.h +++ b/src/basic/macro.h @@ -467,4 +467,7 @@ do { \ } \ struct __useless_struct_to_allow_trailing_semicolon__ +#define CMSG_FOREACH(cmsg, mh) \ + for ((cmsg) = CMSG_FIRSTHDR(mh); (cmsg); (cmsg) = CMSG_NXTHDR((mh), (cmsg))) + #include "log.h" diff --git a/src/shared/memfd-util.c b/src/basic/memfd-util.c index e99a738e1f..e99a738e1f 100644 --- a/src/shared/memfd-util.c +++ b/src/basic/memfd-util.c diff --git a/src/shared/memfd-util.h b/src/basic/memfd-util.h index 3ed551fb37..3ed551fb37 100644 --- a/src/shared/memfd-util.h +++ b/src/basic/memfd-util.h diff --git a/src/shared/mempool.c b/src/basic/mempool.c index d5d98d8829..d5d98d8829 100644 --- a/src/shared/mempool.c +++ b/src/basic/mempool.c diff --git a/src/shared/mempool.h b/src/basic/mempool.h index 42f473bee1..42f473bee1 100644 --- a/src/shared/mempool.h +++ b/src/basic/mempool.h diff --git a/src/shared/missing.h b/src/basic/missing.h index be7f6186fc..be7f6186fc 100644 --- a/src/shared/missing.h +++ b/src/basic/missing.h diff --git a/src/shared/mkdir-label.c b/src/basic/mkdir-label.c index 76bbc1edda..76bbc1edda 100644 --- a/src/shared/mkdir-label.c +++ b/src/basic/mkdir-label.c diff --git a/src/shared/mkdir.c b/src/basic/mkdir.c index 7ee4546988..7ee4546988 100644 --- a/src/shared/mkdir.c +++ b/src/basic/mkdir.c diff --git a/src/shared/mkdir.h b/src/basic/mkdir.h index 2392d1fd1b..2392d1fd1b 100644 --- a/src/shared/mkdir.h +++ b/src/basic/mkdir.h diff --git a/src/shared/ordered-set.h b/src/basic/ordered-set.h index 766a1f2e83..766a1f2e83 100644 --- a/src/shared/ordered-set.h +++ b/src/basic/ordered-set.h diff --git a/src/shared/path-util.c b/src/basic/path-util.c index be50a1865d..537705446a 100644 --- a/src/shared/path-util.c +++ b/src/basic/path-util.c @@ -640,7 +640,7 @@ fallback_fstat: /* flags can be AT_SYMLINK_FOLLOW or 0 */ int path_is_mount_point(const char *t, int flags) { _cleanup_close_ int fd = -1; - _cleanup_free_ char *parent = NULL; + _cleanup_free_ char *canonical = NULL, *parent = NULL; int r; assert(t); @@ -648,7 +648,17 @@ int path_is_mount_point(const char *t, int flags) { if (path_equal(t, "/")) return 1; - r = path_get_parent(t, &parent); + /* we need to resolve symlinks manually, we can't just rely on + * fd_is_mount_point() to do that for us; if we have a structure like + * /bin -> /usr/bin/ and /usr is a mount point, then the parent that we + * look at needs to be /usr, not /. */ + if (flags & AT_SYMLINK_FOLLOW) { + canonical = canonicalize_file_name(t); + if (!canonical) + return -errno; + } + + r = path_get_parent(canonical ?: t, &parent); if (r < 0) return r; @@ -656,7 +666,7 @@ int path_is_mount_point(const char *t, int flags) { if (fd < 0) return -errno; - return fd_is_mount_point(fd, basename(t), flags); + return fd_is_mount_point(fd, basename(canonical ?: t), flags); } int path_is_read_only_fs(const char *path) { diff --git a/src/shared/path-util.h b/src/basic/path-util.h index 1eac89c51b..1eac89c51b 100644 --- a/src/shared/path-util.h +++ b/src/basic/path-util.h diff --git a/src/shared/prioq.c b/src/basic/prioq.c index b89888be0e..b89888be0e 100644 --- a/src/shared/prioq.c +++ b/src/basic/prioq.c diff --git a/src/shared/prioq.h b/src/basic/prioq.h index 1c044b135c..1c044b135c 100644 --- a/src/shared/prioq.h +++ b/src/basic/prioq.h diff --git a/src/shared/process-util.c b/src/basic/process-util.c index cfc876567d..cfc876567d 100644 --- a/src/shared/process-util.c +++ b/src/basic/process-util.c diff --git a/src/shared/process-util.h b/src/basic/process-util.h index 07431d043b..07431d043b 100644 --- a/src/shared/process-util.h +++ b/src/basic/process-util.h diff --git a/src/shared/random-util.c b/src/basic/random-util.c index b230044f50..b230044f50 100644 --- a/src/shared/random-util.c +++ b/src/basic/random-util.c diff --git a/src/shared/random-util.h b/src/basic/random-util.h index f7862c8c8b..f7862c8c8b 100644 --- a/src/shared/random-util.h +++ b/src/basic/random-util.h diff --git a/src/shared/ratelimit.c b/src/basic/ratelimit.c index 81fc9c19ff..81fc9c19ff 100644 --- a/src/shared/ratelimit.c +++ b/src/basic/ratelimit.c diff --git a/src/shared/ratelimit.h b/src/basic/ratelimit.h index 58efca7df1..58efca7df1 100644 --- a/src/shared/ratelimit.h +++ b/src/basic/ratelimit.h diff --git a/src/shared/refcnt.h b/src/basic/refcnt.h index 0502c20a2e..0502c20a2e 100644 --- a/src/shared/refcnt.h +++ b/src/basic/refcnt.h diff --git a/src/shared/replace-var.c b/src/basic/replace-var.c index 478fc43a38..478fc43a38 100644 --- a/src/shared/replace-var.c +++ b/src/basic/replace-var.c diff --git a/src/shared/replace-var.h b/src/basic/replace-var.h index 7eaee93a3e..7eaee93a3e 100644 --- a/src/shared/replace-var.h +++ b/src/basic/replace-var.h diff --git a/src/shared/ring.c b/src/basic/ring.c index 6814918464..6814918464 100644 --- a/src/shared/ring.c +++ b/src/basic/ring.c diff --git a/src/shared/ring.h b/src/basic/ring.h index a7c44d1b56..a7c44d1b56 100644 --- a/src/shared/ring.h +++ b/src/basic/ring.h diff --git a/src/shared/rm-rf.c b/src/basic/rm-rf.c index bafd483be2..bafd483be2 100644 --- a/src/shared/rm-rf.c +++ b/src/basic/rm-rf.c diff --git a/src/shared/rm-rf.h b/src/basic/rm-rf.h index 96579eb182..96579eb182 100644 --- a/src/shared/rm-rf.h +++ b/src/basic/rm-rf.h diff --git a/src/shared/securebits.h b/src/basic/securebits.h index 98fbe0d433..98fbe0d433 100644 --- a/src/shared/securebits.h +++ b/src/basic/securebits.h diff --git a/src/shared/selinux-util.c b/src/basic/selinux-util.c index 7c58985cd2..7c58985cd2 100644 --- a/src/shared/selinux-util.c +++ b/src/basic/selinux-util.c diff --git a/src/shared/selinux-util.h b/src/basic/selinux-util.h index 8467185291..8467185291 100644 --- a/src/shared/selinux-util.h +++ b/src/basic/selinux-util.h diff --git a/src/shared/set.h b/src/basic/set.h index 4dffecd39d..4dffecd39d 100644 --- a/src/shared/set.h +++ b/src/basic/set.h diff --git a/src/shared/sigbus.c b/src/basic/sigbus.c index 0108603fe8..0108603fe8 100644 --- a/src/shared/sigbus.c +++ b/src/basic/sigbus.c diff --git a/src/shared/sigbus.h b/src/basic/sigbus.h index 23edc6d9cb..23edc6d9cb 100644 --- a/src/shared/sigbus.h +++ b/src/basic/sigbus.h diff --git a/src/shared/signal-util.c b/src/basic/signal-util.c index 9a2973b6fd..84cf42b285 100644 --- a/src/shared/signal-util.c +++ b/src/basic/signal-util.c @@ -23,13 +23,13 @@ #include "signal-util.h" int reset_all_signal_handlers(void) { + static const struct sigaction sa = { + .sa_handler = SIG_DFL, + .sa_flags = SA_RESTART, + }; int sig, r = 0; for (sig = 1; sig < _NSIG; sig++) { - static const struct sigaction sa = { - .sa_handler = SIG_DFL, - .sa_flags = SA_RESTART, - }; /* These two cannot be caught... */ if (sig == SIGKILL || sig == SIGSTOP) @@ -38,7 +38,7 @@ int reset_all_signal_handlers(void) { /* On Linux the first two RT signals are reserved by * glibc, and sigaction() will return EINVAL for them. */ if ((sigaction(sig, &sa, NULL) < 0)) - if (errno != EINVAL && r == 0) + if (errno != EINVAL && r >= 0) r = -errno; } @@ -57,83 +57,123 @@ int reset_signal_mask(void) { return 0; } +static int sigaction_many_ap(const struct sigaction *sa, int sig, va_list ap) { + int r = 0; + + /* negative signal ends the list. 0 signal is skipped. */ + + if (sig < 0) + return 0; + + if (sig > 0) { + if (sigaction(sig, sa, NULL) < 0) + r = -errno; + } + + while ((sig = va_arg(ap, int)) >= 0) { + + if (sig == 0) + continue; + + if (sigaction(sig, sa, NULL) < 0) { + if (r >= 0) + r = -errno; + } + } + + return r; +} + int sigaction_many(const struct sigaction *sa, ...) { va_list ap; - int r = 0, sig; + int r; va_start(ap, sa); - while ((sig = va_arg(ap, int)) > 0) - if (sigaction(sig, sa, NULL) < 0) - r = -errno; + r = sigaction_many_ap(sa, 0, ap); va_end(ap); return r; } int ignore_signals(int sig, ...) { + static const struct sigaction sa = { .sa_handler = SIG_IGN, .sa_flags = SA_RESTART, }; - va_list ap; - int r = 0; - if (sigaction(sig, &sa, NULL) < 0) - r = -errno; + va_list ap; + int r; va_start(ap, sig); - while ((sig = va_arg(ap, int)) > 0) - if (sigaction(sig, &sa, NULL) < 0) - r = -errno; + r = sigaction_many_ap(&sa, sig, ap); va_end(ap); return r; } int default_signals(int sig, ...) { + static const struct sigaction sa = { .sa_handler = SIG_DFL, .sa_flags = SA_RESTART, }; - va_list ap; - int r = 0; - if (sigaction(sig, &sa, NULL) < 0) - r = -errno; + va_list ap; + int r; va_start(ap, sig); - while ((sig = va_arg(ap, int)) > 0) - if (sigaction(sig, &sa, NULL) < 0) - r = -errno; + r = sigaction_many_ap(&sa, sig, ap); va_end(ap); return r; } -void sigset_add_many(sigset_t *ss, ...) { - va_list ap; - int sig; +static int sigset_add_many_ap(sigset_t *ss, va_list ap) { + int sig, r = 0; assert(ss); + while ((sig = va_arg(ap, int)) >= 0) { + + if (sig == 0) + continue; + + if (sigaddset(ss, sig) < 0) { + if (r >= 0) + r = -errno; + } + } + + return r; +} + +int sigset_add_many(sigset_t *ss, ...) { + va_list ap; + int r; + va_start(ap, ss); - while ((sig = va_arg(ap, int)) > 0) - assert_se(sigaddset(ss, sig) == 0); + r = sigset_add_many_ap(ss, ap); va_end(ap); + + return r; } int sigprocmask_many(int how, ...) { va_list ap; sigset_t ss; - int sig; + int r; - assert_se(sigemptyset(&ss) == 0); + if (sigemptyset(&ss) < 0) + return -errno; va_start(ap, how); - while ((sig = va_arg(ap, int)) > 0) - assert_se(sigaddset(&ss, sig) == 0); + r = sigset_add_many_ap(&ss, ap); va_end(ap); + if (r < 0) + return r; + if (sigprocmask(how, &ss, NULL) < 0) return -errno; diff --git a/src/shared/signal-util.h b/src/basic/signal-util.h index ddf64cda76..9dc8a28726 100644 --- a/src/shared/signal-util.h +++ b/src/basic/signal-util.h @@ -32,7 +32,7 @@ int ignore_signals(int sig, ...); int default_signals(int sig, ...); int sigaction_many(const struct sigaction *sa, ...); -void sigset_add_many(sigset_t *ss, ...); +int sigset_add_many(sigset_t *ss, ...); int sigprocmask_many(int how, ...); const char *signal_to_string(int i) _const_; diff --git a/src/shared/siphash24.c b/src/basic/siphash24.c index f68bd283a1..f68bd283a1 100644 --- a/src/shared/siphash24.c +++ b/src/basic/siphash24.c diff --git a/src/shared/siphash24.h b/src/basic/siphash24.h index 62e1168a79..62e1168a79 100644 --- a/src/shared/siphash24.h +++ b/src/basic/siphash24.h diff --git a/src/shared/smack-util.c b/src/basic/smack-util.c index 2e24b1ea99..2e24b1ea99 100644 --- a/src/shared/smack-util.c +++ b/src/basic/smack-util.c diff --git a/src/shared/smack-util.h b/src/basic/smack-util.h index 50f55b1f4b..50f55b1f4b 100644 --- a/src/shared/smack-util.h +++ b/src/basic/smack-util.h diff --git a/src/shared/socket-label.c b/src/basic/socket-label.c index cbe3ff216e..cbe3ff216e 100644 --- a/src/shared/socket-label.c +++ b/src/basic/socket-label.c diff --git a/src/shared/socket-util.c b/src/basic/socket-util.c index e8bb10dc9b..e8bb10dc9b 100644 --- a/src/shared/socket-util.c +++ b/src/basic/socket-util.c diff --git a/src/shared/socket-util.h b/src/basic/socket-util.h index 538cf59174..538cf59174 100644 --- a/src/shared/socket-util.h +++ b/src/basic/socket-util.h diff --git a/src/shared/sparse-endian.h b/src/basic/sparse-endian.h index c913fda8c5..c913fda8c5 100644 --- a/src/shared/sparse-endian.h +++ b/src/basic/sparse-endian.h diff --git a/src/shared/special.h b/src/basic/special.h index e51310eb6d..e51310eb6d 100644 --- a/src/shared/special.h +++ b/src/basic/special.h diff --git a/src/shared/strbuf.c b/src/basic/strbuf.c index 01a076c2ba..01a076c2ba 100644 --- a/src/shared/strbuf.c +++ b/src/basic/strbuf.c diff --git a/src/shared/strbuf.h b/src/basic/strbuf.h index fbc4e5f2a1..fbc4e5f2a1 100644 --- a/src/shared/strbuf.h +++ b/src/basic/strbuf.h diff --git a/src/shared/strv.c b/src/basic/strv.c index d44a72fc48..d44a72fc48 100644 --- a/src/shared/strv.c +++ b/src/basic/strv.c diff --git a/src/shared/strv.h b/src/basic/strv.h index 22f8f98fda..22f8f98fda 100644 --- a/src/shared/strv.h +++ b/src/basic/strv.h diff --git a/src/shared/strxcpyx.c b/src/basic/strxcpyx.c index 6542c0abf5..6542c0abf5 100644 --- a/src/shared/strxcpyx.c +++ b/src/basic/strxcpyx.c diff --git a/src/shared/strxcpyx.h b/src/basic/strxcpyx.h index ccc7e52f37..ccc7e52f37 100644 --- a/src/shared/strxcpyx.h +++ b/src/basic/strxcpyx.h diff --git a/src/shared/terminal-util.c b/src/basic/terminal-util.c index 042b88f222..042b88f222 100644 --- a/src/shared/terminal-util.c +++ b/src/basic/terminal-util.c diff --git a/src/shared/terminal-util.h b/src/basic/terminal-util.h index 188714f228..188714f228 100644 --- a/src/shared/terminal-util.h +++ b/src/basic/terminal-util.h diff --git a/src/shared/time-util.c b/src/basic/time-util.c index 12f1b193be..12f1b193be 100644 --- a/src/shared/time-util.c +++ b/src/basic/time-util.c diff --git a/src/shared/time-util.h b/src/basic/time-util.h index 7a64d454a0..7a64d454a0 100644 --- a/src/shared/time-util.h +++ b/src/basic/time-util.h diff --git a/src/shared/unaligned.h b/src/basic/unaligned.h index d6181dd9a9..d6181dd9a9 100644 --- a/src/shared/unaligned.h +++ b/src/basic/unaligned.h diff --git a/src/shared/unit-name.c b/src/basic/unit-name.c index bf52463d81..bf52463d81 100644 --- a/src/shared/unit-name.c +++ b/src/basic/unit-name.c diff --git a/src/shared/unit-name.h b/src/basic/unit-name.h index b2043d0870..b2043d0870 100644 --- a/src/shared/unit-name.h +++ b/src/basic/unit-name.h diff --git a/src/shared/utf8.c b/src/basic/utf8.c index 800884ffee..800884ffee 100644 --- a/src/shared/utf8.c +++ b/src/basic/utf8.c diff --git a/src/shared/utf8.h b/src/basic/utf8.h index e745649f06..e745649f06 100644 --- a/src/shared/utf8.h +++ b/src/basic/utf8.h diff --git a/src/shared/util.c b/src/basic/util.c index 311acbb349..6f6906f877 100644 --- a/src/shared/util.c +++ b/src/basic/util.c @@ -2301,8 +2301,8 @@ static int do_execute(char **directories, usec_t timeout, char *argv[]) { /* We fork this all off from a child process so that we can * somewhat cleanly make use of SIGALRM to set a time limit */ - reset_all_signal_handlers(); - reset_signal_mask(); + (void) reset_all_signal_handlers(); + (void) reset_signal_mask(); assert_se(prctl(PR_SET_PDEATHSIG, SIGTERM) == 0); @@ -3344,8 +3344,8 @@ int fork_agent(pid_t *pid, const int except[], unsigned n_except, const char *pa /* Make sure we actually can kill the agent, if we need to, in * case somebody invoked us from a shell script that trapped * SIGTERM or so... */ - reset_all_signal_handlers(); - reset_signal_mask(); + (void) reset_all_signal_handlers(); + (void) reset_signal_mask(); /* Check whether our parent died before we were able * to set the death signal and unblock the signals */ @@ -4932,7 +4932,7 @@ int bind_remount_recursive(const char *prefix, bool ro) { while ((x = set_steal_first(todo))) { r = set_consume(done, x); - if (r == -EEXIST) + if (r == -EEXIST || r == 0) continue; if (r < 0) return r; @@ -5520,7 +5520,7 @@ int openpt_in_namespace(pid_t pid, int flags) { if (recvmsg(pair[0], &mh, MSG_NOSIGNAL|MSG_CMSG_CLOEXEC) < 0) return -errno; - for (cmsg = CMSG_FIRSTHDR(&mh); cmsg; cmsg = CMSG_NXTHDR(&mh, cmsg)) + CMSG_FOREACH(cmsg, &mh) if (cmsg->cmsg_level == SOL_SOCKET && cmsg->cmsg_type == SCM_RIGHTS) { int *fds; unsigned n_fds; @@ -5908,7 +5908,7 @@ void cmsg_close_all(struct msghdr *mh) { assert(mh); - for (cmsg = CMSG_FIRSTHDR(mh); cmsg; cmsg = CMSG_NXTHDR(mh, cmsg)) + CMSG_FOREACH(cmsg, mh) if (cmsg->cmsg_level == SOL_SOCKET && cmsg->cmsg_type == SCM_RIGHTS) close_many((int*) CMSG_DATA(cmsg), (cmsg->cmsg_len - CMSG_LEN(0)) / sizeof(int)); } diff --git a/src/shared/util.h b/src/basic/util.h index 467ae234a0..467ae234a0 100644 --- a/src/shared/util.h +++ b/src/basic/util.h diff --git a/src/shared/verbs.c b/src/basic/verbs.c index c7beccc2dc..c7beccc2dc 100644 --- a/src/shared/verbs.c +++ b/src/basic/verbs.c diff --git a/src/shared/verbs.h b/src/basic/verbs.h index d59e4d59b8..d59e4d59b8 100644 --- a/src/shared/verbs.h +++ b/src/basic/verbs.h diff --git a/src/shared/virt.c b/src/basic/virt.c index 1299a75ed5..1299a75ed5 100644 --- a/src/shared/virt.c +++ b/src/basic/virt.c diff --git a/src/shared/virt.h b/src/basic/virt.h index 7194ab2bf7..7194ab2bf7 100644 --- a/src/shared/virt.h +++ b/src/basic/virt.h diff --git a/src/shared/xml.c b/src/basic/xml.c index 15c629b188..15c629b188 100644 --- a/src/shared/xml.c +++ b/src/basic/xml.c diff --git a/src/shared/xml.h b/src/basic/xml.h index b256b0ba10..b256b0ba10 100644 --- a/src/shared/xml.h +++ b/src/basic/xml.h diff --git a/src/cgtop/cgtop.c b/src/cgtop/cgtop.c index a390cf3256..d630e35882 100644 --- a/src/cgtop/cgtop.c +++ b/src/cgtop/cgtop.c @@ -60,8 +60,9 @@ typedef struct Group { } Group; static unsigned arg_depth = 3; -static unsigned arg_iterations = 0; +static unsigned arg_iterations = (unsigned)-1; static bool arg_batch = false; +static bool arg_raw = false; static usec_t arg_delay = 1*USEC_PER_SEC; static enum { @@ -96,6 +97,16 @@ static void group_hashmap_free(Hashmap *h) { hashmap_free(h); } +static const char *maybe_format_bytes(char *buf, size_t l, bool is_valid, off_t t) { + if (!is_valid) + return "-"; + if (arg_raw) { + snprintf(buf, l, "%jd", t); + return buf; + } + return format_bytes(buf, l, t); +} + static int process(const char *controller, const char *path, Hashmap *a, Hashmap *b, unsigned iteration) { Group *g; int r; @@ -270,11 +281,10 @@ static int process(const char *controller, const char *path, Hashmap *a, Hashmap yr = rd - g->io_input; yw = wr - g->io_output; - if (yr > 0 || yw > 0) { + if (g->io_input > 0 || g->io_output > 0) { g->io_input_bps = (yr * 1000000000ULL) / x; g->io_output_bps = (yw * 1000000000ULL) / x; g->io_valid = true; - } } @@ -532,18 +542,9 @@ static int display(Hashmap *a) { } else printf(" %*s", maxtcpu, format_timespan(buffer, sizeof(buffer), (nsec_t) (g->cpu_usage / NSEC_PER_USEC), 0)); - if (g->memory_valid) - printf(" %8s", format_bytes(buffer, sizeof(buffer), g->memory)); - else - fputs(" -", stdout); - - if (g->io_valid) { - printf(" %8s", - format_bytes(buffer, sizeof(buffer), g->io_input_bps)); - printf(" %8s", - format_bytes(buffer, sizeof(buffer), g->io_output_bps)); - } else - fputs(" - -", stdout); + printf(" %8s", maybe_format_bytes(buffer, sizeof(buffer), g->memory_valid, g->memory)); + printf(" %8s", maybe_format_bytes(buffer, sizeof(buffer), g->io_valid, g->io_input_bps)); + printf(" %8s", maybe_format_bytes(buffer, sizeof(buffer), g->io_valid, g->io_output_bps)); putchar('\n'); } @@ -561,6 +562,7 @@ static void help(void) { " -c Order by CPU load\n" " -m Order by memory load\n" " -i Order by IO load\n" + " -r --raw Provide raw (not human-readable) numbers\n" " --cpu[=TYPE] Show CPU usage as time or percentage (default)\n" " -d --delay=DELAY Delay between updates\n" " -n --iterations=N Run for N iterations before exiting\n" @@ -583,6 +585,7 @@ static int parse_argv(int argc, char *argv[]) { { "delay", required_argument, NULL, 'd' }, { "iterations", required_argument, NULL, 'n' }, { "batch", no_argument, NULL, 'b' }, + { "raw", no_argument, NULL, 'r' }, { "depth", required_argument, NULL, ARG_DEPTH }, { "cpu", optional_argument, NULL, ARG_CPU_TYPE}, {} @@ -594,7 +597,7 @@ static int parse_argv(int argc, char *argv[]) { assert(argc >= 1); assert(argv); - while ((c = getopt_long(argc, argv, "hptcmin:bd:", options, NULL)) >= 0) + while ((c = getopt_long(argc, argv, "hptcmin:brd:", options, NULL)) >= 0) switch (c) { @@ -649,6 +652,10 @@ static int parse_argv(int argc, char *argv[]) { arg_batch = true; break; + case 'r': + arg_raw = true; + break; + case 'p': arg_order = ORDER_PATH; break; @@ -707,8 +714,8 @@ int main(int argc, char *argv[]) { signal(SIGWINCH, columns_lines_cache_reset); - if (!on_tty()) - arg_iterations = 1; + if (arg_iterations == (unsigned)-1) + arg_iterations = on_tty() ? 0 : 1; while (!quit) { Hashmap *c; @@ -741,6 +748,10 @@ int main(int argc, char *argv[]) { if (arg_iterations && iteration >= arg_iterations) break; + if (!on_tty()) /* non-TTY: Empty newline as delimiter between polls */ + fputs("\n", stdout); + fflush(stdout); + if (arg_batch) { usleep(last_refresh + arg_delay - t); } else { @@ -754,8 +765,10 @@ int main(int argc, char *argv[]) { } } - fputs("\r \r", stdout); - fflush(stdout); + if (on_tty()) { /* TTY: Clear any user keystroke */ + fputs("\r \r", stdout); + fflush(stdout); + } if (arg_batch) continue; diff --git a/src/core/busname.c b/src/core/busname.c index 11f3b98009..2085721546 100644 --- a/src/core/busname.c +++ b/src/core/busname.c @@ -125,7 +125,7 @@ static int busname_arm_timer(BusName *n) { return sd_event_source_set_enabled(n->timer_event_source, SD_EVENT_ONESHOT); } - r = sd_event_add_time( + r = sd_event_add_time( UNIT(n)->manager->event, &n->timer_event_source, CLOCK_MONOTONIC, @@ -408,8 +408,8 @@ static int busname_make_starter(BusName *n, pid_t *_pid) { if (pid == 0) { int ret; - default_signals(SIGNALS_CRASH_HANDLER, SIGNALS_IGNORE, -1); - ignore_signals(SIGPIPE, -1); + (void) default_signals(SIGNALS_CRASH_HANDLER, SIGNALS_IGNORE, -1); + (void) ignore_signals(SIGPIPE, -1); log_forget_fds(); r = bus_kernel_make_starter(n->starter_fd, n->name, n->activating, n->accept_fd, n->policy, n->policy_world); diff --git a/src/core/execute.c b/src/core/execute.c index 4120493bda..f13c6936e0 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -823,6 +823,7 @@ static int setup_pam( /* Block SIGTERM, so that we know that it won't get lost in * the child */ + if (sigemptyset(&ss) < 0 || sigaddset(&ss, SIGTERM) < 0 || sigprocmask(SIG_BLOCK, &ss, &old_ss) < 0) @@ -857,6 +858,8 @@ static int setup_pam( if (setresuid(uid, uid, uid) < 0) log_error_errno(r, "Error: Failed to setresuid() in sd-pam: %m"); + (void) ignore_signals(SIGPIPE, -1); + /* Wait until our parent died. This will only work if * the above setresuid() succeeds, otherwise the kernel * will not allow unprivileged parents kill their privileged @@ -1324,11 +1327,11 @@ static int exec_child( * others we leave untouched because we set them to * SIG_DFL or a valid handler initially, both of which * will be demoted to SIG_DFL. */ - default_signals(SIGNALS_CRASH_HANDLER, - SIGNALS_IGNORE, -1); + (void) default_signals(SIGNALS_CRASH_HANDLER, + SIGNALS_IGNORE, -1); if (context->ignore_sigpipe) - ignore_signals(SIGPIPE, -1); + (void) ignore_signals(SIGPIPE, -1); r = reset_signal_mask(); if (r < 0) { diff --git a/src/core/killall.c b/src/core/killall.c index 6e85923581..2a9d72c901 100644 --- a/src/core/killall.c +++ b/src/core/killall.c @@ -158,6 +158,7 @@ static int killall(int sig, Set *pids, bool send_sighup) { while ((d = readdir(dir))) { pid_t pid; + int r; if (d->d_type != DT_DIR && d->d_type != DT_UNKNOWN) @@ -177,8 +178,11 @@ static int killall(int sig, Set *pids, bool send_sighup) { } if (kill(pid, sig) >= 0) { - if (pids) - set_put(pids, ULONG_TO_PTR(pid)); + if (pids) { + r = set_put(pids, ULONG_TO_PTR(pid)); + if (r < 0) + log_oom(); + } } else if (errno != ENOENT) log_warning_errno(errno, "Could not kill %d: %m", pid); diff --git a/src/core/kmod-setup.c b/src/core/kmod-setup.c index 96379058a1..d956f9b190 100644 --- a/src/core/kmod-setup.c +++ b/src/core/kmod-setup.c @@ -53,26 +53,27 @@ int kmod_setup(void) { static const struct { const char *module; const char *path; - bool warn; + bool warn_if_unavailable:1; + bool warn_if_module:1; bool (*condition_fn)(void); } kmod_table[] = { /* auto-loading on use doesn't work before udev is up */ - { "autofs4", "/sys/class/misc/autofs", true, NULL }, + { "autofs4", "/sys/class/misc/autofs", true, false, NULL }, /* early configure of ::1 on the loopback device */ - { "ipv6", "/sys/module/ipv6", false, NULL }, + { "ipv6", "/sys/module/ipv6", false, true, NULL }, /* this should never be a module */ - { "unix", "/proc/net/unix", true, NULL }, + { "unix", "/proc/net/unix", true, true, NULL }, #ifdef ENABLE_KDBUS /* IPC is needed before we bring up any other services */ - { "kdbus", "/sys/fs/kdbus", false, is_kdbus_wanted }, + { "kdbus", "/sys/fs/kdbus", false, false, is_kdbus_wanted }, #endif #ifdef HAVE_LIBIPTC /* netfilter is needed by networkd, nspawn among others, and cannot be autoloaded */ - { "ip_tables", "/proc/net/ip_tables_names", false, NULL }, + { "ip_tables", "/proc/net/ip_tables_names", false, false, NULL }, #endif }; struct kmod_ctx *ctx = NULL; @@ -91,7 +92,7 @@ int kmod_setup(void) { if (kmod_table[i].condition_fn && !kmod_table[i].condition_fn()) continue; - if (kmod_table[i].warn) + if (kmod_table[i].warn_if_module) log_debug("Your kernel apparently lacks built-in %s support. Might be " "a good idea to compile it in. We'll now try to work around " "this by loading the module...", kmod_table[i].module); @@ -116,8 +117,10 @@ int kmod_setup(void) { log_info("Inserted module '%s'", kmod_module_get_name(mod)); else if (r == KMOD_PROBE_APPLY_BLACKLIST) log_info("Module '%s' is blacklisted", kmod_module_get_name(mod)); - else if (kmod_table[i].warn) - log_error("Failed to insert module '%s'", kmod_module_get_name(mod)); + else + log_full_errno((kmod_table[i].warn_if_unavailable || (r < 0 && r != -ENOENT)) ? LOG_WARNING : LOG_DEBUG, + r, + "Failed to insert module '%s': %m", kmod_module_get_name(mod)); kmod_module_unref(mod); } diff --git a/src/core/main.c b/src/core/main.c index 29ccff7b63..332453a0ea 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -1405,9 +1405,8 @@ int main(int argc, char *argv[]) { } /* Reset all signal handlers. */ - assert_se(reset_all_signal_handlers() == 0); - - ignore_signals(SIGNALS_IGNORE, -1); + (void) reset_all_signal_handlers(); + (void) ignore_signals(SIGNALS_IGNORE, -1); if (parse_config_file() < 0) { error_message = "Failed to parse config file"; @@ -1931,8 +1930,8 @@ finish: /* Reenable any blocked signals, especially important * if we switch from initial ramdisk to init=... */ - reset_all_signal_handlers(); - reset_signal_mask(); + (void) reset_all_signal_handlers(); + (void) reset_signal_mask(); if (switch_root_init) { args[0] = switch_root_init; diff --git a/src/core/manager.c b/src/core/manager.c index a1c54339ea..eb80dd1b46 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -665,7 +665,7 @@ static int manager_setup_notify(Manager *m) { if (m->notify_fd < 0) { _cleanup_close_ int fd = -1; - union sockaddr_union sa = { + union sockaddr_union sa = { .sa.sa_family = AF_UNIX, }; static const int one = 1; @@ -1546,7 +1546,7 @@ static int manager_dispatch_notify_fd(sd_event_source *source, int fd, uint32_t return -errno; } - for (cmsg = CMSG_FIRSTHDR(&msghdr); cmsg; cmsg = CMSG_NXTHDR(&msghdr, cmsg)) { + CMSG_FOREACH(cmsg, &msghdr) { if (cmsg->cmsg_level == SOL_SOCKET && cmsg->cmsg_type == SCM_RIGHTS) { fd_array = (int*) CMSG_DATA(cmsg); diff --git a/src/core/namespace.c b/src/core/namespace.c index 01a817bf23..045321e1d4 100644 --- a/src/core/namespace.c +++ b/src/core/namespace.c @@ -696,12 +696,11 @@ int setup_netns(int netns_storage_socket[2]) { } else { /* Yay, found something, so let's join the namespace */ - for (cmsg = CMSG_FIRSTHDR(&mh); cmsg; cmsg = CMSG_NXTHDR(&mh, cmsg)) { + CMSG_FOREACH(cmsg, &mh) if (cmsg->cmsg_level == SOL_SOCKET && cmsg->cmsg_type == SCM_RIGHTS) { assert(cmsg->cmsg_len == CMSG_LEN(sizeof(int))); netns = *(int*) CMSG_DATA(cmsg); } - } if (setns(netns, CLONE_NEWNET) < 0) { r = -errno; diff --git a/src/core/selinux-access.c b/src/core/selinux-access.c index 5e9a4a5e02..decd42f95a 100644 --- a/src/core/selinux-access.c +++ b/src/core/selinux-access.c @@ -261,7 +261,7 @@ int mac_selinux_generic_access_check( audit_info.path = path; audit_info.cmdline = cl; - r = selinux_check_access((security_context_t) scon, fcon, tclass, permission, &audit_info); + r = selinux_check_access(scon, fcon, tclass, permission, &audit_info); if (r < 0) r = sd_bus_error_setf(error, SD_BUS_ERROR_ACCESS_DENIED, "SELinux policy denies access."); diff --git a/src/core/service.c b/src/core/service.c index c7e65772ea..71252e29e2 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -2008,6 +2008,7 @@ static int service_serialize(Unit *u, FILE *f, FDSet *fds) { unit_serialize_item_format(u, f, "main-pid", PID_FMT, s->main_pid); unit_serialize_item(u, f, "main-pid-known", yes_no(s->main_pid_known)); + unit_serialize_item(u, f, "bus-name-good", yes_no(s->bus_name_good)); if (s->status_text) { _cleanup_free_ char *c = NULL; @@ -2131,6 +2132,14 @@ static int service_deserialize_item(Unit *u, const char *key, const char *value, log_unit_debug(u, "Failed to parse main-pid-known value: %s", value); else s->main_pid_known = b; + } else if (streq(key, "bus-name-good")) { + int b; + + b = parse_boolean(value); + if (b < 0) + log_unit_debug(u, "Failed to parse bus-name-good value: %s", value); + else + s->bus_name_good = b; } else if (streq(key, "status-text")) { char *t; diff --git a/src/core/socket.c b/src/core/socket.c index fc5eb1464a..d3178e642b 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -832,7 +832,7 @@ static void socket_apply_socket_options(Socket *s, int fd) { } if (s->keep_alive_interval) { - int value = s->keep_alive_interval / USEC_PER_SEC; + int value = s->keep_alive_interval / USEC_PER_SEC; if (setsockopt(fd, SOL_TCP, TCP_KEEPINTVL, &value, sizeof(value)) < 0) log_unit_warning_errno(UNIT(s), errno, "TCP_KEEPINTVL failed: %m"); } @@ -1473,8 +1473,8 @@ static int socket_chown(Socket *s, pid_t *_pid) { gid_t gid = GID_INVALID; int ret; - default_signals(SIGNALS_CRASH_HANDLER, SIGNALS_IGNORE, -1); - ignore_signals(SIGPIPE, -1); + (void) default_signals(SIGNALS_CRASH_HANDLER, SIGNALS_IGNORE, -1); + (void) ignore_signals(SIGPIPE, -1); log_forget_fds(); if (!isempty(s->user)) { @@ -2589,7 +2589,7 @@ static void socket_trigger_notify(Unit *u, Unit *other) { /* Don't propagate state changes from the service if we are already down or accepting connections */ - if ((s->state != SOCKET_RUNNING && + if ((s->state != SOCKET_RUNNING && s->state != SOCKET_LISTENING) || s->accept) return; diff --git a/src/core/unit.c b/src/core/unit.c index e380276d49..7bb2afc9f2 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -2596,6 +2596,7 @@ int unit_serialize(Unit *u, FILE *f, FDSet *fds, bool serialize_jobs) { if (u->cgroup_path) unit_serialize_item(u, f, "cgroup", u->cgroup_path); + unit_serialize_item(u, f, "cgroup-realized", yes_no(u->cgroup_realized)); if (serialize_jobs) { if (u->job) { @@ -2806,6 +2807,16 @@ int unit_deserialize(Unit *u, FILE *f, FDSet *fds) { log_unit_debug_errno(u, r, "Failed to set cgroup path %s, ignoring: %m", v); continue; + } else if (streq(l, "cgroup-realized")) { + int b; + + b = parse_boolean(v); + if (b < 0) + log_unit_debug(u, "Failed to parse cgroup-realized bool %s, ignoring.", v); + else + u->cgroup_realized = b; + + continue; } if (unit_can_serialize(u)) { diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c index a5018f13ed..5c6c7c0ed8 100644 --- a/src/cryptsetup/cryptsetup.c +++ b/src/cryptsetup/cryptsetup.c @@ -238,6 +238,23 @@ static void log_glue(int level, const char *msg, void *usrptr) { log_debug("%s", msg); } +static int disk_major_minor(const char *path, char **ret) { + struct stat st; + + assert(path); + + if (stat(path, &st) < 0) + return -errno; + + if (!S_ISBLK(st.st_mode)) + return -EINVAL; + + if (asprintf(ret, "/dev/block/%d:%d", major(st.st_rdev), minor(st.st_rdev)) < 0) + return -errno; + + return 0; +} + static char* disk_description(const char *path) { static const char name_fields[] = @@ -295,20 +312,55 @@ static char *disk_mount_point(const char *label) { return NULL; } -static int get_password(const char *name, usec_t until, bool accept_cached, char ***passwords) { - int r; +static int get_password(const char *vol, const char *src, usec_t until, bool accept_cached, char ***passwords) { + int r = 0; char **p; _cleanup_free_ char *text = NULL; _cleanup_free_ char *escaped_name = NULL; char *id; + const char *name = NULL; + _cleanup_free_ char *description = NULL, *name_buffer = NULL, + *mount_point = NULL, *maj_min = NULL; - assert(name); + assert(vol); + assert(src); assert(passwords); + description = disk_description(src); + mount_point = disk_mount_point(vol); + + if (description && streq(vol, description)) { + /* If the description string is simply the + * volume name, then let's not show this + * twice */ + free(description); + description = NULL; + } + + if (mount_point && description) + r = asprintf(&name_buffer, "%s (%s) on %s", description, vol, mount_point); + else if (mount_point) + r = asprintf(&name_buffer, "%s on %s", vol, mount_point); + else if (description) + r = asprintf(&name_buffer, "%s (%s)", description, vol); + + if (r < 0) + return log_oom(); + + name = name_buffer ? name_buffer : vol; + if (asprintf(&text, "Please enter passphrase for disk %s!", name) < 0) return log_oom(); - escaped_name = cescape(name); + if (src) + (void) disk_major_minor(src, &maj_min); + + if (maj_min) { + escaped_name = maj_min; + maj_min = NULL; + } else + escaped_name = cescape(name); + if (!escaped_name) return log_oom(); @@ -552,8 +604,7 @@ int main(int argc, char *argv[]) { unsigned tries; usec_t until; crypt_status_info status; - const char *key_file = NULL, *name = NULL; - _cleanup_free_ char *description = NULL, *name_buffer = NULL, *mount_point = NULL; + const char *key_file = NULL; /* Arguments: systemd-cryptsetup attach VOLUME SOURCE-DEVICE [PASSWORD] [OPTIONS] */ @@ -581,31 +632,6 @@ int main(int argc, char *argv[]) { /* A delicious drop of snake oil */ mlockall(MCL_FUTURE); - description = disk_description(argv[3]); - mount_point = disk_mount_point(argv[2]); - - if (description && streq(argv[2], description)) { - /* If the description string is simply the - * volume name, then let's not show this - * twice */ - free(description); - description = NULL; - } - - k = 0; - if (mount_point && description) - k = asprintf(&name_buffer, "%s (%s) on %s", description, argv[2], mount_point); - else if (mount_point) - k = asprintf(&name_buffer, "%s on %s", argv[2], mount_point); - else if (description) - k = asprintf(&name_buffer, "%s (%s)", description, argv[2]); - - if (k < 0) { - log_oom(); - goto finish; - } - name = name_buffer ? name_buffer : argv[2]; - if (arg_header) { log_debug("LUKS header: %s", arg_header); k = crypt_init(&cd, arg_header); @@ -652,7 +678,7 @@ int main(int argc, char *argv[]) { _cleanup_strv_free_ char **passwords = NULL; if (!key_file) { - k = get_password(name, until, tries == 0 && !arg_verify, &passwords); + k = get_password(argv[2], argv[3], until, tries == 0 && !arg_verify, &passwords); if (k == -EAGAIN) continue; else if (k < 0) diff --git a/src/delta/delta.c b/src/delta/delta.c index c764bb4b46..b60aaef734 100644 --- a/src/delta/delta.c +++ b/src/delta/delta.c @@ -24,6 +24,7 @@ #include <string.h> #include <unistd.h> #include <getopt.h> +#include <sys/prctl.h> #include "hashmap.h" #include "util.h" @@ -34,6 +35,7 @@ #include "strv.h" #include "process-util.h" #include "terminal-util.h" +#include "signal-util.h" static const char prefixes[] = "/etc\0" @@ -189,9 +191,14 @@ static int found_override(const char *top, const char *bottom) { if (pid < 0) return log_error_errno(errno, "Failed to fork off diff: %m"); else if (pid == 0) { + + (void) reset_all_signal_handlers(); + (void) reset_signal_mask(); + assert_se(prctl(PR_SET_PDEATHSIG, SIGTERM) == 0); + execlp("diff", "diff", "-us", "--", bottom, top, NULL); log_error_errno(errno, "Failed to execute diff: %m"); - _exit(1); + _exit(EXIT_FAILURE); } wait_for_terminate_and_warn("diff", pid, false); diff --git a/src/fsck/fsck.c b/src/fsck/fsck.c index f0e5c5f239..30254b6680 100644 --- a/src/fsck/fsck.c +++ b/src/fsck/fsck.c @@ -394,8 +394,8 @@ int main(int argc, char *argv[]) { /* Child */ - reset_all_signal_handlers(); - reset_signal_mask(); + (void) reset_all_signal_handlers(); + (void) reset_signal_mask(); assert_se(prctl(PR_SET_PDEATHSIG, SIGTERM) == 0); /* Close the reading side of the progress pipe */ diff --git a/src/import/export.c b/src/import/export.c index d4bc88e010..e563bee96e 100644 --- a/src/import/export.c +++ b/src/import/export.c @@ -311,7 +311,7 @@ int main(int argc, char *argv[]) { if (r <= 0) goto finish; - ignore_signals(SIGPIPE, -1); + (void) ignore_signals(SIGPIPE, -1); r = export_main(argc, argv); diff --git a/src/import/import-common.c b/src/import/import-common.c index 9711614000..950c7b4acd 100644 --- a/src/import/import-common.c +++ b/src/import/import-common.c @@ -97,8 +97,8 @@ int import_fork_tar_x(const char *path, pid_t *ret) { /* Child */ - reset_all_signal_handlers(); - reset_signal_mask(); + (void) reset_all_signal_handlers(); + (void) reset_signal_mask(); assert_se(prctl(PR_SET_PDEATHSIG, SIGTERM) == 0); pipefd[1] = safe_close(pipefd[1]); @@ -171,8 +171,8 @@ int import_fork_tar_c(const char *path, pid_t *ret) { /* Child */ - reset_all_signal_handlers(); - reset_signal_mask(); + (void) reset_all_signal_handlers(); + (void) reset_signal_mask(); assert_se(prctl(PR_SET_PDEATHSIG, SIGTERM) == 0); pipefd[0] = safe_close(pipefd[0]); diff --git a/src/import/import.c b/src/import/import.c index fff5a104b1..3091ed1c45 100644 --- a/src/import/import.c +++ b/src/import/import.c @@ -328,7 +328,7 @@ int main(int argc, char *argv[]) { if (r <= 0) goto finish; - ignore_signals(SIGPIPE, -1); + (void) ignore_signals(SIGPIPE, -1); r = import_main(argc, argv); diff --git a/src/import/importd.c b/src/import/importd.c index 50566a6e5c..05a619ac0c 100644 --- a/src/import/importd.c +++ b/src/import/importd.c @@ -390,8 +390,8 @@ static int transfer_start(Transfer *t) { /* Child */ - reset_all_signal_handlers(); - reset_signal_mask(); + (void) reset_all_signal_handlers(); + (void) reset_signal_mask(); assert_se(prctl(PR_SET_PDEATHSIG, SIGTERM) == 0); pipefd[0] = safe_close(pipefd[0]); @@ -599,7 +599,7 @@ static int manager_on_notify(sd_event_source *s, int fd, uint32_t revents, void cmsg_close_all(&msghdr); - for (cmsg = CMSG_FIRSTHDR(&msghdr); cmsg; cmsg = CMSG_NXTHDR(&msghdr, cmsg)) { + CMSG_FOREACH(cmsg, &msghdr) { if (cmsg->cmsg_level == SOL_SOCKET && cmsg->cmsg_type == SCM_CREDENTIALS && cmsg->cmsg_len == CMSG_LEN(sizeof(struct ucred))) { diff --git a/src/import/pull-common.c b/src/import/pull-common.c index d2588d4fa0..652277e4be 100644 --- a/src/import/pull-common.c +++ b/src/import/pull-common.c @@ -339,8 +339,8 @@ int pull_verify( /* Child */ - reset_all_signal_handlers(); - reset_signal_mask(); + (void) reset_all_signal_handlers(); + (void) reset_signal_mask(); assert_se(prctl(PR_SET_PDEATHSIG, SIGTERM) == 0); gpg_pipe[1] = safe_close(gpg_pipe[1]); diff --git a/src/import/pull.c b/src/import/pull.c index eec4583868..03fe3dcaf4 100644 --- a/src/import/pull.c +++ b/src/import/pull.c @@ -440,7 +440,7 @@ int main(int argc, char *argv[]) { if (r <= 0) goto finish; - ignore_signals(SIGPIPE, -1); + (void) ignore_signals(SIGPIPE, -1); r = pull_main(argc, argv); diff --git a/src/journal-remote/journal-remote.c b/src/journal-remote/journal-remote.c index 911e2a178b..ae332d826f 100644 --- a/src/journal-remote/journal-remote.c +++ b/src/journal-remote/journal-remote.c @@ -96,6 +96,10 @@ static int spawn_child(const char* child, char** argv) { /* In the child */ if (child_pid == 0) { + + (void) reset_all_signal_handlers(); + (void) reset_signal_mask(); + r = dup2(fd[1], STDOUT_FILENO); if (r < 0) { log_error_errno(errno, "Failed to dup pipe to stdout: %m"); diff --git a/src/journal/coredumpctl.c b/src/journal/coredumpctl.c index 381bf72776..fc49b2e174 100644 --- a/src/journal/coredumpctl.c +++ b/src/journal/coredumpctl.c @@ -757,6 +757,9 @@ static int run_gdb(sd_journal *j) { goto finish; } if (pid == 0) { + (void) reset_all_signal_handlers(); + (void) reset_signal_mask(); + execlp("gdb", "gdb", exe, path, NULL); log_error_errno(errno, "Failed to invoke gdb: %m"); diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index 3353024f4e..d0d670f36e 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -1104,6 +1104,42 @@ finish: int server_process_datagram(sd_event_source *es, int fd, uint32_t revents, void *userdata) { Server *s = userdata; + struct ucred *ucred = NULL; + struct timeval *tv = NULL; + struct cmsghdr *cmsg; + char *label = NULL; + size_t label_len = 0, m; + struct iovec iovec; + ssize_t n; + int *fds = NULL, v = 0; + unsigned n_fds = 0; + + union { + struct cmsghdr cmsghdr; + + /* We use NAME_MAX space for the SELinux label + * here. The kernel currently enforces no + * limit, but according to suggestions from + * the SELinux people this will change and it + * will probably be identical to NAME_MAX. For + * now we use that, but this should be updated + * one day when the final limit is known. */ + uint8_t buf[CMSG_SPACE(sizeof(struct ucred)) + + CMSG_SPACE(sizeof(struct timeval)) + + CMSG_SPACE(sizeof(int)) + /* fd */ + CMSG_SPACE(NAME_MAX)]; /* selinux label */ + } control = {}; + + union sockaddr_union sa = {}; + + struct msghdr msghdr = { + .msg_iov = &iovec, + .msg_iovlen = 1, + .msg_control = &control, + .msg_controllen = sizeof(control), + .msg_name = &sa, + .msg_namelen = sizeof(sa), + }; assert(s); assert(fd == s->native_fd || fd == s->syslog_fd || fd == s->audit_fd); @@ -1113,119 +1149,79 @@ int server_process_datagram(sd_event_source *es, int fd, uint32_t revents, void return -EIO; } - for (;;) { - struct ucred *ucred = NULL; - struct timeval *tv = NULL; - struct cmsghdr *cmsg; - char *label = NULL; - size_t label_len = 0; - struct iovec iovec; - - union { - struct cmsghdr cmsghdr; - - /* We use NAME_MAX space for the SELinux label - * here. The kernel currently enforces no - * limit, but according to suggestions from - * the SELinux people this will change and it - * will probably be identical to NAME_MAX. For - * now we use that, but this should be updated - * one day when the final limit is known. */ - uint8_t buf[CMSG_SPACE(sizeof(struct ucred)) + - CMSG_SPACE(sizeof(struct timeval)) + - CMSG_SPACE(sizeof(int)) + /* fd */ - CMSG_SPACE(NAME_MAX)]; /* selinux label */ - } control = {}; - union sockaddr_union sa = {}; - struct msghdr msghdr = { - .msg_iov = &iovec, - .msg_iovlen = 1, - .msg_control = &control, - .msg_controllen = sizeof(control), - .msg_name = &sa, - .msg_namelen = sizeof(sa), - }; - - ssize_t n; - int *fds = NULL; - unsigned n_fds = 0; - int v = 0; - size_t m; - - /* Try to get the right size, if we can. (Not all - * sockets support SIOCINQ, hence we just try, but - * don't rely on it. */ - (void) ioctl(fd, SIOCINQ, &v); - - /* Fix it up, if it is too small. We use the same fixed value as auditd here. Awful! */ - m = PAGE_ALIGN(MAX3((size_t) v + 1, - (size_t) LINE_MAX, - ALIGN(sizeof(struct nlmsghdr)) + ALIGN((size_t) MAX_AUDIT_MESSAGE_LENGTH)) + 1); - - if (!GREEDY_REALLOC(s->buffer, s->buffer_size, m)) - return log_oom(); - - iovec.iov_base = s->buffer; - iovec.iov_len = s->buffer_size - 1; /* Leave room for trailing NUL we add later */ - - n = recvmsg(fd, &msghdr, MSG_DONTWAIT|MSG_CMSG_CLOEXEC); - if (n < 0) { - if (errno == EINTR || errno == EAGAIN) - return 0; - - log_error_errno(errno, "recvmsg() failed: %m"); - return -errno; - } + /* Try to get the right size, if we can. (Not all + * sockets support SIOCINQ, hence we just try, but + * don't rely on it. */ + (void) ioctl(fd, SIOCINQ, &v); - for (cmsg = CMSG_FIRSTHDR(&msghdr); cmsg; cmsg = CMSG_NXTHDR(&msghdr, cmsg)) { - - if (cmsg->cmsg_level == SOL_SOCKET && - cmsg->cmsg_type == SCM_CREDENTIALS && - cmsg->cmsg_len == CMSG_LEN(sizeof(struct ucred))) - ucred = (struct ucred*) CMSG_DATA(cmsg); - else if (cmsg->cmsg_level == SOL_SOCKET && - cmsg->cmsg_type == SCM_SECURITY) { - label = (char*) CMSG_DATA(cmsg); - label_len = cmsg->cmsg_len - CMSG_LEN(0); - } else if (cmsg->cmsg_level == SOL_SOCKET && - cmsg->cmsg_type == SO_TIMESTAMP && - cmsg->cmsg_len == CMSG_LEN(sizeof(struct timeval))) - tv = (struct timeval*) CMSG_DATA(cmsg); - else if (cmsg->cmsg_level == SOL_SOCKET && - cmsg->cmsg_type == SCM_RIGHTS) { - fds = (int*) CMSG_DATA(cmsg); - n_fds = (cmsg->cmsg_len - CMSG_LEN(0)) / sizeof(int); - } - } + /* Fix it up, if it is too small. We use the same fixed value as auditd here. Awful! */ + m = PAGE_ALIGN(MAX3((size_t) v + 1, + (size_t) LINE_MAX, + ALIGN(sizeof(struct nlmsghdr)) + ALIGN((size_t) MAX_AUDIT_MESSAGE_LENGTH)) + 1); - /* And a trailing NUL, just in case */ - s->buffer[n] = 0; + if (!GREEDY_REALLOC(s->buffer, s->buffer_size, m)) + return log_oom(); - if (fd == s->syslog_fd) { - if (n > 0 && n_fds == 0) - server_process_syslog_message(s, strstrip(s->buffer), ucred, tv, label, label_len); - else if (n_fds > 0) - log_warning("Got file descriptors via syslog socket. Ignoring."); + iovec.iov_base = s->buffer; + iovec.iov_len = s->buffer_size - 1; /* Leave room for trailing NUL we add later */ - } else if (fd == s->native_fd) { - if (n > 0 && n_fds == 0) - server_process_native_message(s, s->buffer, n, ucred, tv, label, label_len); - else if (n == 0 && n_fds == 1) - server_process_native_file(s, fds[0], ucred, tv, label, label_len); - else if (n_fds > 0) - log_warning("Got too many file descriptors via native socket. Ignoring."); + n = recvmsg(fd, &msghdr, MSG_DONTWAIT|MSG_CMSG_CLOEXEC); + if (n < 0) { + if (errno == EINTR || errno == EAGAIN) + return 0; - } else { - assert(fd == s->audit_fd); + return log_error_errno(errno, "recvmsg() failed: %m"); + } - if (n > 0 && n_fds == 0) - server_process_audit_message(s, s->buffer, n, ucred, &sa, msghdr.msg_namelen); - else if (n_fds > 0) - log_warning("Got file descriptors via audit socket. Ignoring."); + CMSG_FOREACH(cmsg, &msghdr) { + + if (cmsg->cmsg_level == SOL_SOCKET && + cmsg->cmsg_type == SCM_CREDENTIALS && + cmsg->cmsg_len == CMSG_LEN(sizeof(struct ucred))) + ucred = (struct ucred*) CMSG_DATA(cmsg); + else if (cmsg->cmsg_level == SOL_SOCKET && + cmsg->cmsg_type == SCM_SECURITY) { + label = (char*) CMSG_DATA(cmsg); + label_len = cmsg->cmsg_len - CMSG_LEN(0); + } else if (cmsg->cmsg_level == SOL_SOCKET && + cmsg->cmsg_type == SO_TIMESTAMP && + cmsg->cmsg_len == CMSG_LEN(sizeof(struct timeval))) + tv = (struct timeval*) CMSG_DATA(cmsg); + else if (cmsg->cmsg_level == SOL_SOCKET && + cmsg->cmsg_type == SCM_RIGHTS) { + fds = (int*) CMSG_DATA(cmsg); + n_fds = (cmsg->cmsg_len - CMSG_LEN(0)) / sizeof(int); } + } + + /* And a trailing NUL, just in case */ + s->buffer[n] = 0; + + if (fd == s->syslog_fd) { + if (n > 0 && n_fds == 0) + server_process_syslog_message(s, strstrip(s->buffer), ucred, tv, label, label_len); + else if (n_fds > 0) + log_warning("Got file descriptors via syslog socket. Ignoring."); + + } else if (fd == s->native_fd) { + if (n > 0 && n_fds == 0) + server_process_native_message(s, s->buffer, n, ucred, tv, label, label_len); + else if (n == 0 && n_fds == 1) + server_process_native_file(s, fds[0], ucred, tv, label, label_len); + else if (n_fds > 0) + log_warning("Got too many file descriptors via native socket. Ignoring."); - close_many(fds, n_fds); + } else { + assert(fd == s->audit_fd); + + if (n > 0 && n_fds == 0) + server_process_audit_message(s, s->buffer, n, ucred, &sa, msghdr.msg_namelen); + else if (n_fds > 0) + log_warning("Got file descriptors via audit socket. Ignoring."); } + + close_many(fds, n_fds); + return 0; } static int dispatch_sigusr1(sd_event_source *es, const struct signalfd_siginfo *si, void *userdata) { diff --git a/src/journal/journald-stream.c b/src/journal/journald-stream.c index b572147a56..db2f581972 100644 --- a/src/journal/journald-stream.c +++ b/src/journal/journald-stream.c @@ -59,10 +59,7 @@ struct StdoutStream { int fd; struct ucred ucred; -#ifdef HAVE_SELINUX - security_context_t security_context; -#endif - + char *label; char *identifier; char *unit_id; int priority; @@ -99,12 +96,7 @@ void stdout_stream_free(StdoutStream *s) { } safe_close(s->fd); - -#ifdef HAVE_SELINUX - if (s->security_context) - freecon(s->security_context); -#endif - + free(s->label); free(s->identifier); free(s->unit_id); free(s->state_file); @@ -225,8 +217,7 @@ static int stdout_stream_log(StdoutStream *s, const char *p) { char syslog_facility[sizeof("SYSLOG_FACILITY=")-1 + DECIMAL_STR_MAX(int) + 1]; _cleanup_free_ char *message = NULL, *syslog_identifier = NULL; unsigned n = 0; - char *label = NULL; - size_t label_len = 0; + size_t label_len; assert(s); assert(p); @@ -271,14 +262,8 @@ static int stdout_stream_log(StdoutStream *s, const char *p) { if (message) IOVEC_SET_STRING(iovec[n++], message); -#ifdef HAVE_SELINUX - if (s->security_context) { - label = (char*) s->security_context; - label_len = strlen((char*) s->security_context); - } -#endif - - server_dispatch_message(s->server, iovec, n, ELEMENTSOF(iovec), &s->ucred, NULL, label, label_len, s->unit_id, priority, 0); + label_len = s->label ? strlen(s->label) : 0; + server_dispatch_message(s->server, iovec, n, ELEMENTSOF(iovec), &s->ucred, NULL, s->label, label_len, s->unit_id, priority, 0); return 0; } @@ -489,12 +474,11 @@ static int stdout_stream_install(Server *s, int fd, StdoutStream **ret) { if (r < 0) return log_error_errno(r, "Failed to determine peer credentials: %m"); -#ifdef HAVE_SELINUX if (mac_selinux_use()) { - if (getpeercon(fd, &stream->security_context) < 0 && errno != ENOPROTOOPT) - log_error_errno(errno, "Failed to determine peer security context: %m"); + r = getpeersec(fd, &stream->label); + if (r < 0 && r != -EOPNOTSUPP) + (void) log_warning_errno(r, "Failed to determine peer security context: %m"); } -#endif (void) shutdown(fd, SHUT_WR); diff --git a/src/libsystemd-network/lldp-tlv.c b/src/libsystemd-network/lldp-tlv.c index e32783f3eb..0cea5b10a6 100644 --- a/src/libsystemd-network/lldp-tlv.c +++ b/src/libsystemd-network/lldp-tlv.c @@ -221,7 +221,7 @@ int tlv_packet_read_string(tlv_packet *m, char **data, uint16_t *data_length) { return r; *data = (char *) val; - *data_length = m->container->length; + *data_length = m->container->length; m->container->read_pos += m->container->length; diff --git a/src/libsystemd-network/sd-dhcp-client.c b/src/libsystemd-network/sd-dhcp-client.c index 0193e42d65..6853038b67 100644 --- a/src/libsystemd-network/sd-dhcp-client.c +++ b/src/libsystemd-network/sd-dhcp-client.c @@ -1588,7 +1588,7 @@ static int client_receive_message_raw(sd_event_source *s, int fd, } else if ((size_t)len < sizeof(DHCPPacket)) return 0; - for (cmsg = CMSG_FIRSTHDR(&msg); cmsg; cmsg = CMSG_NXTHDR(&msg, cmsg)) { + CMSG_FOREACH(cmsg, &msg) { if (cmsg->cmsg_level == SOL_PACKET && cmsg->cmsg_type == PACKET_AUXDATA && cmsg->cmsg_len == CMSG_LEN(sizeof(struct tpacket_auxdata))) { diff --git a/src/libsystemd-network/sd-dhcp-lease.c b/src/libsystemd-network/sd-dhcp-lease.c index 8a4220621b..d8bc76edda 100644 --- a/src/libsystemd-network/sd-dhcp-lease.c +++ b/src/libsystemd-network/sd-dhcp-lease.c @@ -32,6 +32,7 @@ #include "dhcp-lease-internal.h" #include "sd-dhcp-lease.h" #include "network-internal.h" +#include "dns-domain.h" int sd_dhcp_lease_get_address(sd_dhcp_lease *lease, struct in_addr *addr) { assert_return(lease, -EINVAL); @@ -504,9 +505,18 @@ int dhcp_lease_parse_options(uint8_t code, uint8_t len, const uint8_t *option, if (e) *e = 0; - if (!hostname_is_valid(domainname) || is_localhost(domainname)) + if (is_localhost(domainname)) break; + r = dns_name_is_valid(domainname); + if (r <= 0) { + if (r < 0) + log_error_errno(r, "Failed to validate domain name: %s: %m", domainname); + if (r == 0) + log_warning("Domain name is not valid, ignoring: %s", domainname); + break; + } + free(lease->domainname); lease->domainname = domainname; domainname = NULL; diff --git a/src/libsystemd-network/sd-dhcp-server.c b/src/libsystemd-network/sd-dhcp-server.c index a0a2320efa..cc5e032344 100644 --- a/src/libsystemd-network/sd-dhcp-server.c +++ b/src/libsystemd-network/sd-dhcp-server.c @@ -902,7 +902,7 @@ static int server_receive_message(sd_event_source *s, int fd, else if ((size_t)len < sizeof(DHCPMessage)) return 0; - for (cmsg = CMSG_FIRSTHDR(&msg); cmsg; cmsg = CMSG_NXTHDR(&msg, cmsg)) { + CMSG_FOREACH(cmsg, &msg) { if (cmsg->cmsg_level == IPPROTO_IP && cmsg->cmsg_type == IP_PKTINFO && cmsg->cmsg_len == CMSG_LEN(sizeof(struct in_pktinfo))) { diff --git a/src/libsystemd-terminal/grdev-drm.c b/src/libsystemd-terminal/grdev-drm.c index 4cee95f469..30c1a726eb 100644 --- a/src/libsystemd-terminal/grdev-drm.c +++ b/src/libsystemd-terminal/grdev-drm.c @@ -30,7 +30,7 @@ #include <unistd.h> /* Yuck! DRM headers need system headers included first.. but we have to - * include it before shared/missing.h to avoid redefining ioctl bits */ + * include it before util/missing.h to avoid redefining ioctl bits */ #include <drm.h> #include <drm_fourcc.h> #include <drm_mode.h> diff --git a/src/libsystemd-terminal/grdev.c b/src/libsystemd-terminal/grdev.c index c386e65982..71f0bd31e7 100644 --- a/src/libsystemd-terminal/grdev.c +++ b/src/libsystemd-terminal/grdev.c @@ -25,7 +25,7 @@ #include "sd-bus.h" #include "sd-event.h" #include "hashmap.h" -#include "login-shared.h" +#include "login-util.h" #include "macro.h" #include "util.h" #include "grdev.h" diff --git a/src/libsystemd-terminal/idev.c b/src/libsystemd-terminal/idev.c index b187934977..b92a393b69 100644 --- a/src/libsystemd-terminal/idev.c +++ b/src/libsystemd-terminal/idev.c @@ -25,7 +25,7 @@ #include "sd-bus.h" #include "sd-event.h" #include "hashmap.h" -#include "login-shared.h" +#include "login-util.h" #include "macro.h" #include "util.h" #include "idev.h" diff --git a/src/libsystemd/libsystemd.sym.m4 b/src/libsystemd/libsystemd.sym.m4 index 0b94a87dd6..3121e71282 100644 --- a/src/libsystemd/libsystemd.sym.m4 +++ b/src/libsystemd/libsystemd.sym.m4 @@ -320,6 +320,7 @@ global: sd_bus_get_name_creds; sd_bus_get_name_machine_id; sd_bus_call_method; + sd_bus_call_method_async; sd_bus_get_property; sd_bus_get_property_trivial; sd_bus_get_property_string; diff --git a/src/libsystemd/sd-bus/bus-bloom.c b/src/libsystemd/sd-bus/bus-bloom.c index 3556774074..91fab90cb0 100644 --- a/src/libsystemd/sd-bus/bus-bloom.c +++ b/src/libsystemd/sd-bus/bus-bloom.c @@ -116,11 +116,19 @@ void bloom_add_prefixes(uint64_t filter[], size_t size, unsigned k, const char * p = stpcpy(stpcpy(c, a), ":"); strcpy(p, b); + bloom_add_data(filter, size, k, c, n); + for (;;) { char *e; e = strrchr(p, sep); - if (!e || e == p) + if (!e) + break; + + *(e + 1) = 0; + bloom_add_data(filter, size, k, c, e - c + 1); + + if (e == p) break; *e = 0; diff --git a/src/libsystemd/sd-bus/bus-container.c b/src/libsystemd/sd-bus/bus-container.c index f157c25bba..fa7a207448 100644 --- a/src/libsystemd/sd-bus/bus-container.c +++ b/src/libsystemd/sd-bus/bus-container.c @@ -222,7 +222,7 @@ int bus_container_connect_kernel(sd_bus *b) { if (recvmsg(pair[0], &mh, MSG_NOSIGNAL|MSG_CMSG_CLOEXEC) < 0) return -errno; - for (cmsg = CMSG_FIRSTHDR(&mh); cmsg; cmsg = CMSG_NXTHDR(&mh, cmsg)) + CMSG_FOREACH(cmsg, &mh) if (cmsg->cmsg_level == SOL_SOCKET && cmsg->cmsg_type == SCM_RIGHTS) { int *fds; unsigned n_fds; diff --git a/src/libsystemd/sd-bus/bus-control.c b/src/libsystemd/sd-bus/bus-control.c index 43ddfc651d..7a59702cb2 100644 --- a/src/libsystemd/sd-bus/bus-control.c +++ b/src/libsystemd/sd-bus/bus-control.c @@ -979,8 +979,10 @@ static int bus_get_owner_creds_dbus1(sd_bus *bus, uint64_t mask, sd_bus_creds ** _cleanup_bus_creds_unref_ sd_bus_creds *c = NULL; pid_t pid = 0; int r; + bool do_label = bus->label && (mask & SD_BUS_CREDS_SELINUX_CONTEXT); - if (!bus->ucred_valid && !isempty(bus->label)) + /* Avoid allocating anything if we have no chance of returning useful data */ + if (!bus->ucred_valid && !do_label) return -ENODATA; c = bus_creds_new(); @@ -1004,7 +1006,7 @@ static int bus_get_owner_creds_dbus1(sd_bus *bus, uint64_t mask, sd_bus_creds ** } } - if (!isempty(bus->label) && (mask & SD_BUS_CREDS_SELINUX_CONTEXT)) { + if (do_label) { c->label = strdup(bus->label); if (!c->label) return -ENOMEM; @@ -1289,10 +1291,8 @@ int bus_add_match_internal_kernel( break; case BUS_MATCH_PATH_NAMESPACE: - if (!streq(c->value_str, "/")) { - bloom_add_pair(bloom, bus->bloom_size, bus->bloom_n_hash, "path-slash-prefix", c->value_str); - using_bloom = true; - } + bloom_add_pair(bloom, bus->bloom_size, bus->bloom_n_hash, "path-slash-prefix", c->value_str); + using_bloom = true; break; case BUS_MATCH_ARG...BUS_MATCH_ARG_LAST: { @@ -1308,11 +1308,18 @@ int bus_add_match_internal_kernel( } case BUS_MATCH_ARG_PATH...BUS_MATCH_ARG_PATH_LAST: { - char buf[sizeof("arg")-1 + 2 + sizeof("-slash-prefix")]; - - xsprintf(buf, "arg%i-slash-prefix", c->type - BUS_MATCH_ARG_PATH); - bloom_add_pair(bloom, bus->bloom_size, bus->bloom_n_hash, buf, c->value_str); - using_bloom = true; + /* + * XXX: DBus spec defines arg[0..63]path= matching to be + * a two-way glob. That is, if either string is a prefix + * of the other, it matches. + * This is really hard to realize in bloom-filters, as + * we would have to create a bloom-match for each prefix + * of @c->value_str. This is excessive, hence we just + * ignore all those matches and accept everything from + * the kernel. People should really avoid those matches. + * If they're used in real-life some day, we will have + * to properly support multiple-matches here. + */ break; } diff --git a/src/libsystemd/sd-bus/bus-convenience.c b/src/libsystemd/sd-bus/bus-convenience.c index 28bc8d2818..dfd82e746d 100644 --- a/src/libsystemd/sd-bus/bus-convenience.c +++ b/src/libsystemd/sd-bus/bus-convenience.c @@ -58,6 +58,43 @@ _public_ int sd_bus_emit_signal( return sd_bus_send(bus, m, NULL); } +_public_ int sd_bus_call_method_async( + sd_bus *bus, + sd_bus_slot **slot, + const char *destination, + const char *path, + const char *interface, + const char *member, + sd_bus_message_handler_t callback, + void *userdata, + const char *types, ...) { + + _cleanup_bus_message_unref_ sd_bus_message *m = NULL; + int r; + + assert_return(bus, -EINVAL); + assert_return(!bus_pid_changed(bus), -ECHILD); + + if (!BUS_IS_OPEN(bus->state)) + return -ENOTCONN; + + r = sd_bus_message_new_method_call(bus, &m, destination, path, interface, member); + if (r < 0) + return r; + + if (!isempty(types)) { + va_list ap; + + va_start(ap, types); + r = bus_message_append_ap(m, types, ap); + va_end(ap); + if (r < 0) + return r; + } + + return sd_bus_call_async(bus, slot, m, callback, userdata, 0); +} + _public_ int sd_bus_call_method( sd_bus *bus, const char *destination, diff --git a/src/libsystemd/sd-bus/bus-creds.c b/src/libsystemd/sd-bus/bus-creds.c index 4d67619cf8..1c365b7fcd 100644 --- a/src/libsystemd/sd-bus/bus-creds.c +++ b/src/libsystemd/sd-bus/bus-creds.c @@ -773,11 +773,13 @@ int bus_creds_add_more(sd_bus_creds *c, uint64_t mask, pid_t pid, pid_t tid) { return 0; /* Try to retrieve PID from creds if it wasn't passed to us */ - if (pid <= 0 && (c->mask & SD_BUS_CREDS_PID)) + if (pid > 0) { + c->pid = pid; + c->mask |= SD_BUS_CREDS_PID; + } else if (c->mask & SD_BUS_CREDS_PID) pid = c->pid; - - /* Without pid we cannot do much... */ - if (pid <= 0) + else + /* Without pid we cannot do much... */ return 0; /* Try to retrieve TID from creds if it wasn't passed to us */ @@ -789,9 +791,6 @@ int bus_creds_add_more(sd_bus_creds *c, uint64_t mask, pid_t pid, pid_t tid) { if (missing == 0) return 0; - c->pid = pid; - c->mask |= SD_BUS_CREDS_PID; - if (tid > 0) { c->tid = tid; c->mask |= SD_BUS_CREDS_TID; diff --git a/src/libsystemd/sd-bus/bus-internal.c b/src/libsystemd/sd-bus/bus-internal.c index 91b288cd25..fea796cd30 100644 --- a/src/libsystemd/sd-bus/bus-internal.c +++ b/src/libsystemd/sd-bus/bus-internal.c @@ -19,6 +19,7 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>. ***/ +#include "bus-message.h" #include "bus-internal.h" bool object_path_is_valid(const char *p) { @@ -211,6 +212,17 @@ bool member_name_is_valid(const char *p) { return true; } +/* + * Complex pattern match + * This checks whether @a is a 'complex-prefix' of @b, or @b is a + * 'complex-prefix' of @a, based on strings that consist of labels with @c as + * spearator. This function returns true if: + * - both strings are equal + * - either is a prefix of the other and ends with @c + * The second rule makes sure that either string needs to be fully included in + * the other, and the string which is considered the prefix needs to end with a + * separator. + */ static bool complex_pattern_check(char c, const char *a, const char *b) { bool separator = false; @@ -222,9 +234,7 @@ static bool complex_pattern_check(char c, const char *a, const char *b) { for (;;) { if (*a != *b) - return (separator && (*a == 0 || *b == 0)) || - (*a == 0 && *b == c && b[1] == 0) || - (*b == 0 && *a == c && a[1] == 0); + return (separator && (*a == 0 || *b == 0)); if (*a == 0) return true; @@ -243,7 +253,18 @@ bool path_complex_pattern(const char *pattern, const char *value) { return complex_pattern_check('/', pattern, value); } +/* + * Simple pattern match + * This checks whether @a is a 'simple-prefix' of @b, based on strings that + * consist of labels with @c as separator. This function returns true, if: + * - if @a and @b are equal + * - if @a is a prefix of @b, and the first following character in @b (or the + * last character in @a) is @c + * The second rule basically makes sure that if @a is a prefix of @b, then @b + * must follow with a new label separated by @c. It cannot extend the label. + */ static bool simple_pattern_check(char c, const char *a, const char *b) { + bool separator = false; if (!a && !b) return true; @@ -253,11 +274,13 @@ static bool simple_pattern_check(char c, const char *a, const char *b) { for (;;) { if (*a != *b) - return *a == 0 && *b == c; + return *a == 0 && (*b == c || separator); if (*a == 0) return true; + separator = *a == c; + a++, b++; } } @@ -323,3 +346,28 @@ char *bus_address_escape(const char *v) { *b = 0; return r; } + +int bus_maybe_reply_error(sd_bus_message *m, int r, sd_bus_error *error) { + assert(m); + + if (r < 0) { + if (m->header->type == SD_BUS_MESSAGE_METHOD_CALL) + sd_bus_reply_method_errno(m, r, error); + + } else if (sd_bus_error_is_set(error)) { + if (m->header->type == SD_BUS_MESSAGE_METHOD_CALL) + sd_bus_reply_method_error(m, error); + } else + return r; + + log_debug("Failed to process message [type=%s sender=%s path=%s interface=%s member=%s signature=%s]: %s", + bus_message_type_to_string(m->header->type), + strna(m->sender), + strna(m->path), + strna(m->interface), + strna(m->member), + strna(m->root_container.signature), + bus_error_message(error, r)); + + return 1; +} diff --git a/src/libsystemd/sd-bus/bus-internal.h b/src/libsystemd/sd-bus/bus-internal.h index 1351938c80..88c058889a 100644 --- a/src/libsystemd/sd-bus/bus-internal.h +++ b/src/libsystemd/sd-bus/bus-internal.h @@ -261,7 +261,7 @@ struct sd_bus { usec_t auth_timeout; struct ucred ucred; - char label[NAME_MAX]; + char *label; uint64_t creds_mask; @@ -390,3 +390,5 @@ int bus_set_address_system_machine(sd_bus *b, const char *machine); int bus_remove_match_by_string(sd_bus *bus, const char *match, sd_bus_message_handler_t callback, void *userdata); int bus_get_root_path(sd_bus *bus); + +int bus_maybe_reply_error(sd_bus_message *m, int r, sd_bus_error *error); diff --git a/src/libsystemd/sd-bus/bus-kernel.c b/src/libsystemd/sd-bus/bus-kernel.c index 572a9c6e64..3aaaabf4ed 100644 --- a/src/libsystemd/sd-bus/bus-kernel.c +++ b/src/libsystemd/sd-bus/bus-kernel.c @@ -498,7 +498,6 @@ static int bus_kernel_make_message(sd_bus *bus, struct kdbus_msg *k) { footer, footer_size, n_bytes, fds, n_fds, - NULL, seclabel, 0, &m); if (r < 0) return r; diff --git a/src/libsystemd/sd-bus/bus-message.c b/src/libsystemd/sd-bus/bus-message.c index 6ee209dd1b..c38b2a5fa5 100644 --- a/src/libsystemd/sd-bus/bus-message.c +++ b/src/libsystemd/sd-bus/bus-message.c @@ -435,7 +435,6 @@ int bus_message_from_header( size_t message_size, int *fds, unsigned n_fds, - const struct ucred *ucred, const char *label, size_t extra, sd_bus_message **ret) { @@ -528,23 +527,6 @@ int bus_message_from_header( m->fds = fds; m->n_fds = n_fds; - if (ucred) { - m->creds.pid = ucred->pid; - m->creds.euid = ucred->uid; - m->creds.egid = ucred->gid; - - /* Due to namespace translations some data might be - * missing from this ucred record. */ - if (m->creds.pid > 0) - m->creds.mask |= SD_BUS_CREDS_PID; - - if (m->creds.euid != UID_INVALID) - m->creds.mask |= SD_BUS_CREDS_EUID; - - if (m->creds.egid != GID_INVALID) - m->creds.mask |= SD_BUS_CREDS_EGID; - } - if (label) { m->creds.label = (char*) m + ALIGN(sizeof(sd_bus_message)) + ALIGN(extra); memcpy(m->creds.label, label, label_sz + 1); @@ -565,7 +547,6 @@ int bus_message_from_malloc( size_t length, int *fds, unsigned n_fds, - const struct ucred *ucred, const char *label, sd_bus_message **ret) { @@ -579,7 +560,7 @@ int bus_message_from_malloc( buffer, length, length, fds, n_fds, - ucred, label, + label, 0, &m); if (r < 0) return r; diff --git a/src/libsystemd/sd-bus/bus-message.h b/src/libsystemd/sd-bus/bus-message.h index d784e603dd..088d5b1109 100644 --- a/src/libsystemd/sd-bus/bus-message.h +++ b/src/libsystemd/sd-bus/bus-message.h @@ -205,7 +205,6 @@ int bus_message_from_header( size_t message_size, int *fds, unsigned n_fds, - const struct ucred *ucred, const char *label, size_t extra, sd_bus_message **ret); @@ -216,7 +215,6 @@ int bus_message_from_malloc( size_t length, int *fds, unsigned n_fds, - const struct ucred *ucred, const char *label, sd_bus_message **ret); diff --git a/src/libsystemd/sd-bus/bus-socket.c b/src/libsystemd/sd-bus/bus-socket.c index 4fffc6581d..322d57ddbb 100644 --- a/src/libsystemd/sd-bus/bus-socket.c +++ b/src/libsystemd/sd-bus/bus-socket.c @@ -500,11 +500,8 @@ static int bus_socket_read_auth(sd_bus *b) { void *p; union { struct cmsghdr cmsghdr; - uint8_t buf[CMSG_SPACE(sizeof(int) * BUS_FDS_MAX) + - CMSG_SPACE(sizeof(struct ucred)) + - CMSG_SPACE(NAME_MAX)]; /*selinux label */ + uint8_t buf[CMSG_SPACE(sizeof(int) * BUS_FDS_MAX)]; } control; - struct cmsghdr *cmsg; bool handle_cmsg = false; assert(b); @@ -555,7 +552,9 @@ static int bus_socket_read_auth(sd_bus *b) { b->rbuffer_size += k; if (handle_cmsg) { - for (cmsg = CMSG_FIRSTHDR(&mh); cmsg; cmsg = CMSG_NXTHDR(&mh, cmsg)) { + struct cmsghdr *cmsg; + + CMSG_FOREACH(cmsg, &mh) if (cmsg->cmsg_level == SOL_SOCKET && cmsg->cmsg_type == SCM_RIGHTS) { int j; @@ -566,30 +565,9 @@ static int bus_socket_read_auth(sd_bus *b) { j = (cmsg->cmsg_len - CMSG_LEN(0)) / sizeof(int); close_many((int*) CMSG_DATA(cmsg), j); return -EIO; - - } else if (cmsg->cmsg_level == SOL_SOCKET && - cmsg->cmsg_type == SCM_CREDENTIALS && - cmsg->cmsg_len == CMSG_LEN(sizeof(struct ucred))) { - - /* Ignore bogus data, which we might - * get on socketpair() sockets */ - if (((struct ucred*) CMSG_DATA(cmsg))->pid != 0) { - memcpy(&b->ucred, CMSG_DATA(cmsg), sizeof(struct ucred)); - b->ucred_valid = true; - } - - } else if (cmsg->cmsg_level == SOL_SOCKET && - cmsg->cmsg_type == SCM_SECURITY) { - - size_t l; - - l = cmsg->cmsg_len - CMSG_LEN(0); - if (l > 0) { - memcpy(&b->label, CMSG_DATA(cmsg), l); - b->label[l] = 0; - } - } - } + } else + log_debug("Got unexpected auxiliary data with level=%d and type=%d", + cmsg->cmsg_level, cmsg->cmsg_type); } r = bus_socket_auth_verify(b); @@ -600,18 +578,8 @@ static int bus_socket_read_auth(sd_bus *b) { } void bus_socket_setup(sd_bus *b) { - int enable; - assert(b); - /* Enable SO_PASSCRED + SO_PASSEC. We try this on any - * socket, just in case. */ - enable = !b->bus_client; - (void) setsockopt(b->input_fd, SOL_SOCKET, SO_PASSCRED, &enable, sizeof(enable)); - - enable = !b->bus_client && (b->attach_flags & KDBUS_ATTACH_SECLABEL); - (void) setsockopt(b->input_fd, SOL_SOCKET, SO_PASSSEC, &enable, sizeof(enable)); - /* Increase the buffers to 8 MB */ fd_inc_rcvbuf(b->input_fd, SNDBUF_SIZE); fd_inc_sndbuf(b->output_fd, SNDBUF_SIZE); @@ -622,10 +590,17 @@ void bus_socket_setup(sd_bus *b) { } static void bus_get_peercred(sd_bus *b) { + int r; + assert(b); /* Get the peer for socketpair() sockets */ b->ucred_valid = getpeercred(b->input_fd, &b->ucred) >= 0; + + /* Get the SELinux context of the peer */ + r = getpeersec(b->input_fd, &b->label); + if (r < 0 && r != -EOPNOTSUPP) + log_debug_errno(r, "Failed to determine peer security context: %m"); } static int bus_socket_start_auth_client(sd_bus *b) { @@ -738,7 +713,8 @@ int bus_socket_exec(sd_bus *b) { if (pid == 0) { /* Child */ - reset_all_signal_handlers(); + (void) reset_all_signal_handlers(); + (void) reset_signal_mask(); close_all_fds(s+1, 1); @@ -914,7 +890,6 @@ static int bus_socket_make_message(sd_bus *bus, size_t size) { bus->rbuffer, size, bus->fds, bus->n_fds, NULL, - NULL, &t); if (r < 0) { free(b); @@ -941,11 +916,8 @@ int bus_socket_read_message(sd_bus *bus) { void *b; union { struct cmsghdr cmsghdr; - uint8_t buf[CMSG_SPACE(sizeof(int) * BUS_FDS_MAX) + - CMSG_SPACE(sizeof(struct ucred)) + - CMSG_SPACE(NAME_MAX)]; /*selinux label */ + uint8_t buf[CMSG_SPACE(sizeof(int) * BUS_FDS_MAX)]; } control; - struct cmsghdr *cmsg; bool handle_cmsg = false; assert(bus); @@ -991,7 +963,9 @@ int bus_socket_read_message(sd_bus *bus) { bus->rbuffer_size += k; if (handle_cmsg) { - for (cmsg = CMSG_FIRSTHDR(&mh); cmsg; cmsg = CMSG_NXTHDR(&mh, cmsg)) { + struct cmsghdr *cmsg; + + CMSG_FOREACH(cmsg, &mh) if (cmsg->cmsg_level == SOL_SOCKET && cmsg->cmsg_type == SCM_RIGHTS) { int n, *f; @@ -1016,28 +990,9 @@ int bus_socket_read_message(sd_bus *bus) { memcpy(f + bus->n_fds, CMSG_DATA(cmsg), n * sizeof(int)); bus->fds = f; bus->n_fds += n; - } else if (cmsg->cmsg_level == SOL_SOCKET && - cmsg->cmsg_type == SCM_CREDENTIALS && - cmsg->cmsg_len == CMSG_LEN(sizeof(struct ucred))) { - - /* Ignore bogus data, which we might - * get on socketpair() sockets */ - if (((struct ucred*) CMSG_DATA(cmsg))->pid != 0) { - memcpy(&bus->ucred, CMSG_DATA(cmsg), sizeof(struct ucred)); - bus->ucred_valid = true; - } - - } else if (cmsg->cmsg_level == SOL_SOCKET && - cmsg->cmsg_type == SCM_SECURITY) { - - size_t l; - l = cmsg->cmsg_len - CMSG_LEN(0); - if (l > 0) { - memcpy(&bus->label, CMSG_DATA(cmsg), l); - bus->label[l] = 0; - } - } - } + } else + log_debug("Got unexpected auxiliary data with level=%d and type=%d", + cmsg->cmsg_level, cmsg->cmsg_type); } r = bus_socket_read_message_need(bus, &need); diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c index edc27aef87..2805b29839 100644 --- a/src/libsystemd/sd-bus/sd-bus.c +++ b/src/libsystemd/sd-bus/sd-bus.c @@ -49,6 +49,21 @@ #include "bus-track.h" #include "bus-slot.h" +#define log_debug_bus_message(m) \ + do { \ + sd_bus_message *_mm = (m); \ + log_debug("Got message type=%s sender=%s destination=%s object=%s interface=%s member=%s cookie=%" PRIu64 " reply_cookie=%" PRIu64 " error=%s", \ + bus_message_type_to_string(_mm->header->type), \ + strna(sd_bus_message_get_sender(_mm)), \ + strna(sd_bus_message_get_destination(_mm)), \ + strna(sd_bus_message_get_path(_mm)), \ + strna(sd_bus_message_get_interface(_mm)), \ + strna(sd_bus_message_get_member(_mm)), \ + BUS_MESSAGE_COOKIE(_mm), \ + _mm->reply_cookie, \ + strna(_mm->error.message)); \ + } while (false) + static int bus_poll(sd_bus *bus, bool need_more, uint64_t timeout_usec); static int attach_io_events(sd_bus *b); static void detach_io_events(sd_bus *b); @@ -116,6 +131,7 @@ static void bus_free(sd_bus *b) { if (b->kdbus_buffer) munmap(b->kdbus_buffer, KDBUS_POOL_SIZE); + free(b->label); free(b->rbuffer); free(b->unique_name); free(b->auth_buffer); @@ -1992,6 +2008,7 @@ _public_ int sd_bus_call( memmove(bus->rqueue + i, bus->rqueue + i + 1, sizeof(sd_bus_message*) * (bus->rqueue_size - i - 1)); bus->rqueue_size--; + log_debug_bus_message(incoming); if (incoming->header->type == SD_BUS_MESSAGE_METHOD_RETURN) { @@ -2480,16 +2497,7 @@ static int process_message(sd_bus *bus, sd_bus_message *m) { bus->current_message = m; bus->iteration_counter++; - log_debug("Got message type=%s sender=%s destination=%s object=%s interface=%s member=%s cookie=%" PRIu64 " reply_cookie=%" PRIu64 " error=%s", - bus_message_type_to_string(m->header->type), - strna(sd_bus_message_get_sender(m)), - strna(sd_bus_message_get_destination(m)), - strna(sd_bus_message_get_path(m)), - strna(sd_bus_message_get_interface(m)), - strna(sd_bus_message_get_member(m)), - BUS_MESSAGE_COOKIE(m), - m->reply_cookie, - strna(m->error.message)); + log_debug_bus_message(m); r = process_hello(bus, m); if (r != 0) diff --git a/src/libsystemd/sd-bus/test-bus-gvariant.c b/src/libsystemd/sd-bus/test-bus-gvariant.c index 992edacb28..22ea00c2fb 100644 --- a/src/libsystemd/sd-bus/test-bus-gvariant.c +++ b/src/libsystemd/sd-bus/test-bus-gvariant.c @@ -198,7 +198,7 @@ static void test_marshal(void) { } #endif - assert_se(bus_message_from_malloc(bus, blob, sz, NULL, 0, NULL, NULL, &n) >= 0); + assert_se(bus_message_from_malloc(bus, blob, sz, NULL, 0, NULL, &n) >= 0); blob = NULL; assert_se(bus_message_dump(n, NULL, BUS_MESSAGE_DUMP_WITH_HEADER) >= 0); diff --git a/src/libsystemd/sd-bus/test-bus-kernel-bloom.c b/src/libsystemd/sd-bus/test-bus-kernel-bloom.c index b11c43bd7b..90eb1f2a33 100644 --- a/src/libsystemd/sd-bus/test-bus-kernel-bloom.c +++ b/src/libsystemd/sd-bus/test-bus-kernel-bloom.c @@ -26,6 +26,14 @@ #include "bus-kernel.h" #include "bus-util.h" +static int test_match(sd_bus_message *m, void *userdata, sd_bus_error *ret_error) { + int *found = userdata; + + *found = 1; + + return 0; +} + static void test_one( const char *path, const char *interface, @@ -39,7 +47,7 @@ static void test_one( _cleanup_free_ char *name = NULL, *bus_name = NULL, *address = NULL; _cleanup_bus_message_unref_ sd_bus_message *m = NULL; sd_bus *a, *b; - int r; + int r, found = 0; assert_se(asprintf(&name, "deine-mutter-%u", (unsigned) getpid()) >= 0); @@ -71,7 +79,7 @@ static void test_one( assert_se(r >= 0); log_debug("match"); - r = sd_bus_add_match(b, NULL, match, NULL, NULL); + r = sd_bus_add_match(b, NULL, match, test_match, &found); assert_se(r >= 0); log_debug("signal"); @@ -83,7 +91,7 @@ static void test_one( assert_se(r >= 0); r = sd_bus_process(b, &m); - assert_se(r >= 0 && (good == !!m)); + assert_se(r >= 0 && good == !!found); sd_bus_unref(a); sd_bus_unref(b); @@ -115,6 +123,17 @@ int main(int argc, char *argv[]) { test_one("/foo/bar/waldo", "waldo.com", "Piep", false, "foobar", "path_namespace='/foo'", true); test_one("/foo/bar/waldo", "waldo.com", "Piep", false, "foobar", "path_namespace='/'", true); test_one("/foo/bar/waldo", "waldo.com", "Piep", false, "foobar", "path_namespace='/quux'", false); + test_one("/", "waldo.com", "Piep", false, "foobar", "path_namespace='/'", true); + + test_one("/foo/bar/waldo", "waldo.com", "Piep", false, "foobar", "path='/foo/bar/waldo/'", false); + test_one("/foo/bar/waldo", "waldo.com", "Piep", false, "foobar", "path='/foo/'", false); + test_one("/foo/bar/waldo", "waldo.com", "Piep", false, "foobar", "path_namespace='/foo/bar/waldo/'", false); + test_one("/foo/bar/waldo", "waldo.com", "Piep", false, "foobar", "path_namespace='/foo/'", true); + + test_one("/foo/bar/waldo", "waldo.com", "Piep", false, "/foo/bar/waldo", "arg0path='/foo/'", true); + test_one("/foo/bar/waldo", "waldo.com", "Piep", false, "/foo", "arg0path='/foo'", true); + test_one("/foo/bar/waldo", "waldo.com", "Piep", false, "/foo", "arg0path='/foo/bar/waldo'", false); + test_one("/foo/bar/waldo", "waldo.com", "Piep", false, "/foo/", "arg0path='/foo/bar/waldo'", true); return 0; } diff --git a/src/libsystemd/sd-bus/test-bus-marshal.c b/src/libsystemd/sd-bus/test-bus-marshal.c index f8ecadf499..a866a56179 100644 --- a/src/libsystemd/sd-bus/test-bus-marshal.c +++ b/src/libsystemd/sd-bus/test-bus-marshal.c @@ -212,7 +212,7 @@ int main(int argc, char *argv[]) { m = sd_bus_message_unref(m); - r = bus_message_from_malloc(bus, buffer, sz, NULL, 0, NULL, NULL, &m); + r = bus_message_from_malloc(bus, buffer, sz, NULL, 0, NULL, &m); assert_se(r >= 0); bus_message_dump(m, stdout, BUS_MESSAGE_DUMP_WITH_HEADER); diff --git a/src/libsystemd/sd-bus/test-bus-signature.c b/src/libsystemd/sd-bus/test-bus-signature.c index 4165c9273a..17c6188ca0 100644 --- a/src/libsystemd/sd-bus/test-bus-signature.c +++ b/src/libsystemd/sd-bus/test-bus-signature.c @@ -95,23 +95,28 @@ int main(int argc, char *argv[]) { assert_se(!namespace_complex_pattern("foo.", "")); assert_se(path_complex_pattern("", "")); - assert_se(path_complex_pattern("", "/")); - assert_se(path_complex_pattern("/", "")); + assert_se(!path_complex_pattern("", "/")); + assert_se(!path_complex_pattern("/", "")); assert_se(path_complex_pattern("/", "/")); assert_se(path_complex_pattern("/foobar/", "/")); - assert_se(path_complex_pattern("/foobar/", "/foobar")); + assert_se(!path_complex_pattern("/foobar/", "/foobar")); assert_se(path_complex_pattern("/foobar", "/foobar")); - assert_se(path_complex_pattern("/foobar", "/foobar/")); + assert_se(!path_complex_pattern("/foobar", "/foobar/")); assert_se(!path_complex_pattern("/foobar", "/foobar/waldo")); assert_se(path_complex_pattern("/foobar/", "/foobar/waldo")); + assert_se(path_complex_pattern("/foobar/waldo", "/foobar/")); + + assert_se(path_simple_pattern("/foo/", "/foo/bar/waldo")); assert_se(namespace_simple_pattern("", "")); + assert_se(namespace_simple_pattern("", ".foobar")); assert_se(namespace_simple_pattern("foobar", "foobar")); assert_se(namespace_simple_pattern("foobar.waldo", "foobar.waldo")); assert_se(namespace_simple_pattern("foobar", "foobar.waldo")); assert_se(!namespace_simple_pattern("foobar.waldo", "foobar")); assert_se(!namespace_simple_pattern("", "foo")); assert_se(!namespace_simple_pattern("foo", "")); + assert_se(namespace_simple_pattern("foo.", "foo.bar.waldo")); assert_se(streq(object_path_startswith("/foo/bar", "/foo"), "bar")); assert_se(streq(object_path_startswith("/foo", "/foo"), "")); diff --git a/src/libsystemd/sd-event/sd-event.c b/src/libsystemd/sd-event/sd-event.c index 2b8d1b87ed..00880c983b 100644 --- a/src/libsystemd/sd-event/sd-event.c +++ b/src/libsystemd/sd-event/sd-event.c @@ -2384,7 +2384,6 @@ _public_ int sd_event_wait(sd_event *e, uint64_t timeout) { } r = -errno; - goto finish; } diff --git a/src/libsystemd/sd-login/sd-login.c b/src/libsystemd/sd-login/sd-login.c index ed8aa0952a..e3885ecba6 100644 --- a/src/libsystemd/sd-login/sd-login.c +++ b/src/libsystemd/sd-login/sd-login.c @@ -30,7 +30,7 @@ #include "macro.h" #include "strv.h" #include "fileio.h" -#include "login-shared.h" +#include "login-util.h" #include "formats-util.h" #include "sd-login.h" diff --git a/src/libsystemd/sd-network/sd-network.c b/src/libsystemd/sd-network/sd-network.c index db1f6997cb..b63fdf8fcb 100644 --- a/src/libsystemd/sd-network/sd-network.c +++ b/src/libsystemd/sd-network/sd-network.c @@ -297,8 +297,31 @@ static inline sd_network_monitor* FD_TO_MONITOR(int fd) { return (sd_network_monitor*) (unsigned long) (fd + 1); } +static int monitor_add_inotify_watch(int fd) { + int k; + + k = inotify_add_watch(fd, "/run/systemd/netif/links/", IN_MOVED_TO|IN_DELETE); + if (k >= 0) + return 0; + else if (errno != ENOENT) + return -errno; + + k = inotify_add_watch(fd, "/run/systemd/netif/", IN_CREATE|IN_ISDIR); + if (k >= 0) + return 0; + else if (errno != ENOENT) + return -errno; + + k = inotify_add_watch(fd, "/run/systemd/", IN_CREATE|IN_ISDIR); + if (k < 0) + return -errno; + + return 0; +} + _public_ int sd_network_monitor_new(sd_network_monitor **m, const char *category) { - int fd, k; + _cleanup_close_ int fd = -1; + int k; bool good = false; assert_return(m, -EINVAL); @@ -308,40 +331,64 @@ _public_ int sd_network_monitor_new(sd_network_monitor **m, const char *category return -errno; if (!category || streq(category, "links")) { - k = inotify_add_watch(fd, "/run/systemd/netif/links/", IN_MOVED_TO|IN_DELETE); - if (k < 0) { - safe_close(fd); - return -errno; - } + k = monitor_add_inotify_watch(fd); + if (k < 0) + return k; good = true; } - if (!good) { - close_nointr(fd); + if (!good) return -EINVAL; - } *m = FD_TO_MONITOR(fd); + fd = -1; + return 0; } _public_ sd_network_monitor* sd_network_monitor_unref(sd_network_monitor *m) { int fd; - assert_return(m, NULL); - - fd = MONITOR_TO_FD(m); - close_nointr(fd); + if (m) { + fd = MONITOR_TO_FD(m); + close_nointr(fd); + } return NULL; } _public_ int sd_network_monitor_flush(sd_network_monitor *m) { + union inotify_event_buffer buffer; + struct inotify_event *e; + ssize_t l; + int fd, k; assert_return(m, -EINVAL); - return flush_fd(MONITOR_TO_FD(m)); + fd = MONITOR_TO_FD(m); + + l = read(fd, &buffer, sizeof(buffer)); + if (l < 0) { + if (errno == EAGAIN || errno == EINTR) + return 0; + + return -errno; + } + + FOREACH_INOTIFY_EVENT(e, buffer, l) { + if (e->mask & IN_ISDIR) { + k = monitor_add_inotify_watch(fd); + if (k < 0) + return k; + + k = inotify_rm_watch(fd, e->wd); + if (k < 0) + return -errno; + } + } + + return 0; } _public_ int sd_network_monitor_get_fd(sd_network_monitor *m) { diff --git a/src/libsystemd/sd-rtnl/rtnl-message.c b/src/libsystemd/sd-rtnl/rtnl-message.c index bab2a4ff08..9dcf7df559 100644 --- a/src/libsystemd/sd-rtnl/rtnl-message.c +++ b/src/libsystemd/sd-rtnl/rtnl-message.c @@ -1442,7 +1442,7 @@ static int socket_recv_message(int fd, struct iovec *iov, uint32_t *_group, bool return (errno == EAGAIN || errno == EINTR) ? 0 : -errno; } - for (cmsg = CMSG_FIRSTHDR(&msg); cmsg; cmsg = CMSG_NXTHDR(&msg, cmsg)) { + CMSG_FOREACH(cmsg, &msg) { if (cmsg->cmsg_level == SOL_SOCKET && cmsg->cmsg_type == SCM_CREDENTIALS && cmsg->cmsg_len == CMSG_LEN(sizeof(struct ucred))) { diff --git a/src/login/inhibit.c b/src/login/inhibit.c index 57cfb5d0b5..0e5dce5925 100644 --- a/src/login/inhibit.c +++ b/src/login/inhibit.c @@ -33,6 +33,7 @@ #include "strv.h" #include "formats-util.h" #include "process-util.h" +#include "signal-util.h" static const char* arg_what = "idle:sleep:shutdown"; static const char* arg_who = NULL; @@ -274,6 +275,9 @@ int main(int argc, char *argv[]) { if (pid == 0) { /* Child */ + (void) reset_all_signal_handlers(); + (void) reset_signal_mask(); + close_all_fds(NULL, 0); execvp(argv[optind], argv + optind); diff --git a/src/login/logind-session.h b/src/login/logind-session.h index 7a329b94ad..4bf739a44d 100644 --- a/src/login/logind-session.h +++ b/src/login/logind-session.h @@ -26,7 +26,7 @@ typedef enum KillWho KillWho; #include "list.h" #include "logind-user.h" -#include "login-shared.h" +#include "login-util.h" typedef enum SessionState { SESSION_OPENING, /* Session scope is being created */ diff --git a/src/login/logind-user.c b/src/login/logind-user.c index 373c9938e7..c0b473930d 100644 --- a/src/login/logind-user.c +++ b/src/login/logind-user.c @@ -738,8 +738,7 @@ int user_kill(User *u, int signo) { return manager_kill_unit(u->manager, u->slice, KILL_ALL, signo, NULL); } -static bool -elect_display_filter(Session *s) { +static bool elect_display_filter(Session *s) { /* Return true if the session is a candidate for the user’s ‘primary * session’ or ‘display’. */ assert(s); @@ -747,8 +746,7 @@ elect_display_filter(Session *s) { return (s->class == SESSION_USER && !s->stopping); } -static int -elect_display_compare(Session *s1, Session *s2) { +static int elect_display_compare(Session *s1, Session *s2) { /* Indexed by SessionType. Lower numbers mean more preferred. */ const int type_ranks[_SESSION_TYPE_MAX] = { [SESSION_UNSPECIFIED] = 0, diff --git a/src/login/test-login-shared.c b/src/login/test-login-shared.c index d29d7e7921..4c4275d124 100644 --- a/src/login/test-login-shared.c +++ b/src/login/test-login-shared.c @@ -20,7 +20,7 @@ ***/ #include "macro.h" -#include "login-shared.h" +#include "login-util.h" static void test_session_id_valid(void) { assert_se(session_id_valid("c1")); diff --git a/src/network/networkctl.c b/src/network/networkctl.c index 3454394977..68925debe6 100644 --- a/src/network/networkctl.c +++ b/src/network/networkctl.c @@ -814,7 +814,7 @@ static char *lldp_system_caps(uint16_t cap) { } if (cap & LLDP_SYSTEM_CAPABILITIES_ROUTER) { - s = strjoin(t, lldp_system_capability_to_string(LLDP_SYSTEM_CAPABILITIES_ROUTER), " ", NULL); + s = strjoin(t, lldp_system_capability_to_string(LLDP_SYSTEM_CAPABILITIES_ROUTER), " ", NULL); if (!s) return NULL; diff --git a/src/network/networkd-dhcp4.c b/src/network/networkd-dhcp4.c index 20aee53d6e..71cc722bcc 100644 --- a/src/network/networkd-dhcp4.c +++ b/src/network/networkd-dhcp4.c @@ -561,7 +561,7 @@ int dhcp4_configure(Link *link) { assert(link); assert(link->network); - assert(IN_SET(link->network->dhcp, ADDRESS_FAMILY_YES, ADDRESS_FAMILY_IPV4)); + assert(link->network->dhcp & ADDRESS_FAMILY_IPV4); r = sd_dhcp_client_new(&link->dhcp_client); if (r < 0) diff --git a/src/network/networkd-ipv4ll.c b/src/network/networkd-ipv4ll.c index 8050801e19..14b8770429 100644 --- a/src/network/networkd-ipv4ll.c +++ b/src/network/networkd-ipv4ll.c @@ -34,7 +34,7 @@ static int ipv4ll_address_lost(Link *link) { assert(link); link->ipv4ll_route = false; - link->ipv4ll_address = false; + link->ipv4ll_address = false; r = sd_ipv4ll_get_address(link->ipv4ll, &addr); if (r < 0) @@ -209,7 +209,7 @@ int ipv4ll_configure(Link *link) { assert(link); assert(link->network); - assert(IN_SET(link->network->link_local, ADDRESS_FAMILY_IPV4, ADDRESS_FAMILY_YES)); + assert(link->network->link_local & ADDRESS_FAMILY_IPV4); r = sd_ipv4ll_new(&link->ipv4ll); if (r < 0) diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index b30fd7ae89..7841f69dab 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -40,7 +40,7 @@ bool link_dhcp6_enabled(Link *link) { if (!link->network) return false; - return IN_SET(link->network->dhcp, ADDRESS_FAMILY_IPV6, ADDRESS_FAMILY_YES); + return link->network->dhcp & ADDRESS_FAMILY_IPV6; } bool link_dhcp4_enabled(Link *link) { @@ -50,7 +50,7 @@ bool link_dhcp4_enabled(Link *link) { if (!link->network) return false; - return IN_SET(link->network->dhcp, ADDRESS_FAMILY_IPV4, ADDRESS_FAMILY_YES); + return link->network->dhcp & ADDRESS_FAMILY_IPV4; } bool link_dhcp4_server_enabled(Link *link) { @@ -70,7 +70,7 @@ bool link_ipv4ll_enabled(Link *link) { if (!link->network) return false; - return IN_SET(link->network->link_local, ADDRESS_FAMILY_IPV4, ADDRESS_FAMILY_YES); + return link->network->link_local & ADDRESS_FAMILY_IPV4; } bool link_ipv6ll_enabled(Link *link) { @@ -80,7 +80,7 @@ bool link_ipv6ll_enabled(Link *link) { if (!link->network) return false; - return IN_SET(link->network->link_local, ADDRESS_FAMILY_IPV6, ADDRESS_FAMILY_YES); + return link->network->link_local & ADDRESS_FAMILY_IPV6; } bool link_lldp_enabled(Link *link) { @@ -103,7 +103,7 @@ static bool link_ipv4_forward_enabled(Link *link) { if (!link->network) return false; - return IN_SET(link->network->ip_forward, ADDRESS_FAMILY_IPV4, ADDRESS_FAMILY_YES); + return link->network->ip_forward & ADDRESS_FAMILY_IPV4; } static bool link_ipv6_forward_enabled(Link *link) { @@ -113,7 +113,7 @@ static bool link_ipv6_forward_enabled(Link *link) { if (!link->network) return false; - return IN_SET(link->network->ip_forward, ADDRESS_FAMILY_IPV6, ADDRESS_FAMILY_YES); + return link->network->ip_forward & ADDRESS_FAMILY_IPV6; } #define FLAG_STRING(string, flag, old, new) \ @@ -749,7 +749,6 @@ static int set_hostname_handler(sd_bus_message *m, void *userdata, sd_bus_error } int link_set_hostname(Link *link, const char *hostname) { - _cleanup_bus_message_unref_ sd_bus_message *m = NULL; int r = 0; assert(link); @@ -764,22 +763,19 @@ int link_set_hostname(Link *link, const char *hostname) { return 0; } - r = sd_bus_message_new_method_call( + r = sd_bus_call_method_async( link->manager->bus, - &m, + NULL, "org.freedesktop.hostname1", "/org/freedesktop/hostname1", "org.freedesktop.hostname1", - "SetHostname"); - if (r < 0) - return r; - - r = sd_bus_message_append(m, "sb", hostname, false); - if (r < 0) - return r; + "SetHostname", + set_hostname_handler, + link, + "sb", + hostname, + false); - r = sd_bus_call_async(link->manager->bus, NULL, m, set_hostname_handler, - link, 0); if (r < 0) return log_link_error_errno(link, r, "Could not set transient hostname: %m"); @@ -1481,9 +1477,6 @@ static int link_set_ipv4_forward(Link *link) { const char *p = NULL; int r; - if (link->network->ip_forward == ADDRESS_FAMILY_KERNEL) - return 0; - p = strjoina("/proc/sys/net/ipv4/conf/", link->ifname, "/forwarding"); r = write_string_file_no_create(p, one_zero(link_ipv4_forward_enabled(link))); if (r < 0) @@ -1500,9 +1493,6 @@ static int link_set_ipv6_forward(Link *link) { if (!socket_ipv6_is_supported()) return 0; - if (link->network->ip_forward == ADDRESS_FAMILY_KERNEL) - return 0; - p = strjoina("/proc/sys/net/ipv6/conf/", link->ifname, "/forwarding"); r = write_string_file_no_create(p, one_zero(link_ipv6_forward_enabled(link))); if (r < 0) diff --git a/src/network/networkd-manager.c b/src/network/networkd-manager.c index 2cc53df4b1..db737ad484 100644 --- a/src/network/networkd-manager.c +++ b/src/network/networkd-manager.c @@ -853,8 +853,6 @@ const char *address_family_boolean_to_string(AddressFamilyBoolean b) { return "ipv4"; if (b == ADDRESS_FAMILY_IPV6) return "ipv6"; - if (b == ADDRESS_FAMILY_KERNEL) - return "kernel"; return NULL; } @@ -874,8 +872,6 @@ AddressFamilyBoolean address_family_boolean_from_string(const char *s) { return ADDRESS_FAMILY_IPV4; if (streq(s, "ipv6")) return ADDRESS_FAMILY_IPV6; - if (streq(s, "kernel")) - return ADDRESS_FAMILY_KERNEL; return _ADDRESS_FAMILY_BOOLEAN_INVALID; } diff --git a/src/network/networkd-netdev-bond.c b/src/network/networkd-netdev-bond.c index 70df08a5e1..9919955f51 100644 --- a/src/network/networkd-netdev-bond.c +++ b/src/network/networkd-netdev-bond.c @@ -191,215 +191,132 @@ static int netdev_bond_fill_message_create(NetDev *netdev, Link *link, sd_rtnl_m if (b->mode != _NETDEV_BOND_MODE_INVALID) { r = sd_rtnl_message_append_u8(m, IFLA_BOND_MODE, bond_mode_to_kernel(b->mode)); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_BOND_MODE attribute: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_BOND_MODE attribute: %m"); } if (b->xmit_hash_policy != _NETDEV_BOND_XMIT_HASH_POLICY_INVALID) { r = sd_rtnl_message_append_u8(m, IFLA_BOND_XMIT_HASH_POLICY, bond_xmit_hash_policy_to_kernel(b->xmit_hash_policy)); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_BOND_XMIT_HASH_POLICY attribute: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_BOND_XMIT_HASH_POLICY attribute: %m"); } if (b->lacp_rate != _NETDEV_BOND_LACP_RATE_INVALID && b->mode == NETDEV_BOND_MODE_802_3AD) { r = sd_rtnl_message_append_u8(m, IFLA_BOND_AD_LACP_RATE, b->lacp_rate ); if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_BOND_AD_LACP_RATE attribute: %s", - strerror(-r)); - return r; + return log_netdev_error_errno(netdev, r, "Could not append IFLA_BOND_AD_LACP_RATE attribute: %m"); } } if (b->miimon != 0) { r = sd_rtnl_message_append_u32(m, IFLA_BOND_MIIMON, b->miimon / USEC_PER_MSEC); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_BOND_BOND_MIIMON attribute: %s", - strerror(-r)); - return r; - } + if (r < 0) + log_netdev_error_errno(netdev, r, "Could not append IFLA_BOND_BOND_MIIMON attribute: %m"); } if (b->downdelay != 0) { r = sd_rtnl_message_append_u32(m, IFLA_BOND_DOWNDELAY, b->downdelay / USEC_PER_MSEC); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_BOND_DOWNDELAY attribute: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_BOND_DOWNDELAY attribute: %m"); } if (b->updelay != 0) { r = sd_rtnl_message_append_u32(m, IFLA_BOND_UPDELAY, b->updelay / USEC_PER_MSEC); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_BOND_UPDELAY attribute: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_BOND_UPDELAY attribute: %m"); } if (b->arp_interval != 0) { r = sd_rtnl_message_append_u32(m, IFLA_BOND_ARP_INTERVAL, b->arp_interval / USEC_PER_MSEC); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_BOND_ARP_INTERVAL attribute: %s", - strerror(-r)); - return r; - } - } - - if ((b->lp_interval >= LEARNING_PACKETS_INTERVAL_MIN_SEC) && - (b->lp_interval <= LEARNING_PACKETS_INTERVAL_MAX_SEC)) { - r = sd_rtnl_message_append_u32(m, IFLA_BOND_LP_INTERVAL, b->lp_interval / USEC_PER_SEC); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_BOND_LP_INTERVAL attribute: %s", - strerror(-r)); - return r; + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_BOND_ARP_INTERVAL attribute: %m"); + + if ((b->lp_interval >= LEARNING_PACKETS_INTERVAL_MIN_SEC) && + (b->lp_interval <= LEARNING_PACKETS_INTERVAL_MAX_SEC)) { + r = sd_rtnl_message_append_u32(m, IFLA_BOND_LP_INTERVAL, b->lp_interval / USEC_PER_SEC); + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_BOND_LP_INTERVAL attribute: %m"); } } if (b->ad_select != _NETDEV_BOND_AD_SELECT_INVALID && b->mode == BOND_MODE_8023AD) { r = sd_rtnl_message_append_u8(m, IFLA_BOND_AD_SELECT, b->ad_select); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_BOND_AD_SELECT attribute: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_BOND_AD_SELECT attribute: %m"); } if (b->fail_over_mac != _NETDEV_BOND_FAIL_OVER_MAC_INVALID && b->mode == NETDEV_BOND_MODE_ACTIVE_BACKUP) { r = sd_rtnl_message_append_u8(m, IFLA_BOND_FAIL_OVER_MAC, b->fail_over_mac); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_BOND_FAIL_OVER_MAC attribute: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_BOND_FAIL_OVER_MAC attribute: %m"); } if (b->arp_validate != _NETDEV_BOND_ARP_VALIDATE_INVALID) { r = sd_rtnl_message_append_u32(m, IFLA_BOND_ARP_VALIDATE, b->arp_validate); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_BOND_ARP_VALIDATE attribute: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_BOND_ARP_VALIDATE attribute: %m"); } if (b->arp_all_targets != _NETDEV_BOND_ARP_ALL_TARGETS_INVALID) { r = sd_rtnl_message_append_u32(m, IFLA_BOND_ARP_ALL_TARGETS, b->arp_all_targets); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_BOND_ARP_VALIDATE attribute: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_BOND_ARP_VALIDATE attribute: %m"); } if (b->primary_reselect != _NETDEV_BOND_PRIMARY_RESELECT_INVALID) { r = sd_rtnl_message_append_u32(m, IFLA_BOND_ARP_ALL_TARGETS, b->primary_reselect); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_BOND_ARP_ALL_TARGETS attribute: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_BOND_ARP_ALL_TARGETS attribute: %m"); } if (b->resend_igmp <= RESEND_IGMP_MAX) { r = sd_rtnl_message_append_u32(m, IFLA_BOND_RESEND_IGMP, b->resend_igmp); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_BOND_RESEND_IGMP attribute: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_BOND_RESEND_IGMP attribute: %m"); } if (b->packets_per_slave <= PACKETS_PER_SLAVE_MAX) { r = sd_rtnl_message_append_u32(m, IFLA_BOND_PACKETS_PER_SLAVE, b->packets_per_slave); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_BOND_PACKETS_PER_SLAVE attribute: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_BOND_PACKETS_PER_SLAVE attribute: %m"); } if (b->num_grat_arp <= GRATUITOUS_ARP_MAX) { r = sd_rtnl_message_append_u8(m, IFLA_BOND_NUM_PEER_NOTIF, b->num_grat_arp); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_BOND_NUM_PEER_NOTIF attribute: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_BOND_NUM_PEER_NOTIF attribute: %m"); } if (b->min_links != 0) { r = sd_rtnl_message_append_u32(m, IFLA_BOND_MIN_LINKS, b->min_links); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_BOND_MIN_LINKS attribute: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_BOND_MIN_LINKS attribute: %m"); } r = sd_rtnl_message_append_u8(m, IFLA_BOND_ALL_SLAVES_ACTIVE, b->all_slaves_active); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_BOND_ALL_SLAVES_ACTIVE attribute: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_BOND_ALL_SLAVES_ACTIVE attribute: %m"); if (b->arp_interval > 0) { if (b->n_arp_ip_targets > 0) { r = sd_rtnl_message_open_container(m, IFLA_BOND_ARP_IP_TARGET); - if (r < 0) { - log_netdev_error(netdev, - "Could not open contaniner IFLA_BOND_ARP_IP_TARGET : %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not open contaniner IFLA_BOND_ARP_IP_TARGET : %m"); LIST_FOREACH(arp_ip_target, target, b->arp_ip_targets) { r = sd_rtnl_message_append_u32(m, i++, target->ip.in.s_addr); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_BOND_ARP_ALL_TARGETS attribute: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_BOND_ARP_ALL_TARGETS attribute: %m"); } r = sd_rtnl_message_close_container(m); - if (r < 0) { - log_netdev_error(netdev, - "Could not close contaniner IFLA_BOND_ARP_IP_TARGET : %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not close contaniner IFLA_BOND_ARP_IP_TARGET : %m"); } } diff --git a/src/network/networkd-netdev-ipvlan.c b/src/network/networkd-netdev-ipvlan.c index 5189000c1f..f1c8e0ccdb 100644 --- a/src/network/networkd-netdev-ipvlan.c +++ b/src/network/networkd-netdev-ipvlan.c @@ -42,13 +42,9 @@ static int netdev_ipvlan_fill_message_create(NetDev *netdev, Link *link, sd_rtnl assert(netdev->ifname); if (m->mode != _NETDEV_IPVLAN_MODE_INVALID) { - r = sd_rtnl_message_append_u16(req, IFLA_IPVLAN_MODE, m->mode); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_IPVLAN_MODE attribute: %s", - strerror(-r)); - return r; - } + r = sd_rtnl_message_append_u16(req, IFLA_IPVLAN_MODE, m->mode); + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_IPVLAN_MODE attribute: %m"); } return 0; diff --git a/src/network/networkd-netdev-macvlan.c b/src/network/networkd-netdev-macvlan.c index 5f41f1c865..a8bf6e6bb7 100644 --- a/src/network/networkd-netdev-macvlan.c +++ b/src/network/networkd-netdev-macvlan.c @@ -44,13 +44,9 @@ static int netdev_macvlan_fill_message_create(NetDev *netdev, Link *link, sd_rtn assert(netdev->ifname); if (m->mode != _NETDEV_MACVLAN_MODE_INVALID) { - r = sd_rtnl_message_append_u32(req, IFLA_MACVLAN_MODE, m->mode); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_MACVLAN_MODE attribute: %s", - strerror(-r)); - return r; - } + r = sd_rtnl_message_append_u32(req, IFLA_MACVLAN_MODE, m->mode); + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_MACVLAN_MODE attribute: %m"); } return 0; diff --git a/src/network/networkd-netdev-veth.c b/src/network/networkd-netdev-veth.c index 9e9e1225e7..7bb02d1ae1 100644 --- a/src/network/networkd-netdev-veth.c +++ b/src/network/networkd-netdev-veth.c @@ -35,12 +35,8 @@ static int netdev_veth_fill_message_create(NetDev *netdev, Link *link, sd_rtnl_m assert(m); r = sd_rtnl_message_open_container(m, VETH_INFO_PEER); - if (r < 0) { - log_netdev_error(netdev, - "Could not append VETH_INFO_PEER attribute: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append VETH_INFO_PEER attribute: %m"); if (v->ifname_peer) { r = sd_rtnl_message_append_string(m, IFLA_IFNAME, v->ifname_peer); @@ -50,21 +46,13 @@ static int netdev_veth_fill_message_create(NetDev *netdev, Link *link, sd_rtnl_m if (v->mac_peer) { r = sd_rtnl_message_append_ether_addr(m, IFLA_ADDRESS, v->mac_peer); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_ADDRESS attribute: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_ADDRESS attribute: %m"); } r = sd_rtnl_message_close_container(m); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_INFO_DATA attribute: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_INFO_DATA attribute: %m"); return r; } diff --git a/src/network/networkd-netdev-vxlan.c b/src/network/networkd-netdev-vxlan.c index e2c2b108b9..01a1e5089c 100644 --- a/src/network/networkd-netdev-vxlan.c +++ b/src/network/networkd-netdev-vxlan.c @@ -39,123 +39,67 @@ static int netdev_vxlan_fill_message_create(NetDev *netdev, Link *link, sd_rtnl_ if (v->id <= VXLAN_VID_MAX) { r = sd_rtnl_message_append_u32(m, IFLA_VXLAN_ID, v->id); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_VXLAN_ID attribute: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_VXLAN_ID attribute: %m"); } r = sd_rtnl_message_append_in_addr(m, IFLA_VXLAN_GROUP, &v->group.in); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_VXLAN_GROUP attribute: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_VXLAN_GROUP attribute: %m"); r = sd_rtnl_message_append_u32(m, IFLA_VXLAN_LINK, link->ifindex); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_VXLAN_LINK attribute: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_VXLAN_LINK attribute: %m"); if(v->ttl) { r = sd_rtnl_message_append_u8(m, IFLA_VXLAN_TTL, v->ttl); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_VXLAN_TTL attribute: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_VXLAN_TTL attribute: %m"); } if(v->tos) { r = sd_rtnl_message_append_u8(m, IFLA_VXLAN_TOS, v->tos); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_VXLAN_TOS attribute: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_VXLAN_TOS attribute: %m"); } r = sd_rtnl_message_append_u8(m, IFLA_VXLAN_LEARNING, v->learning); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_VXLAN_LEARNING attribute: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_VXLAN_LEARNING attribute: %m"); r = sd_rtnl_message_append_u8(m, IFLA_VXLAN_RSC, v->route_short_circuit); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_VXLAN_RSC attribute: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_VXLAN_RSC attribute: %m"); r = sd_rtnl_message_append_u8(m, IFLA_VXLAN_PROXY, v->arp_proxy); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_VXLAN_PROXY attribute: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_VXLAN_PROXY attribute: %m"); r = sd_rtnl_message_append_u8(m, IFLA_VXLAN_L2MISS, v->l2miss); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_VXLAN_L2MISS attribute: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_VXLAN_L2MISS attribute: %m"); r = sd_rtnl_message_append_u8(m, IFLA_VXLAN_L3MISS, v->l3miss); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_VXLAN_L3MISS attribute: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_VXLAN_L3MISS attribute: %m"); if(v->fdb_ageing) { r = sd_rtnl_message_append_u32(m, IFLA_VXLAN_AGEING, v->fdb_ageing / USEC_PER_SEC); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_VXLAN_AGEING attribute: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_VXLAN_AGEING attribute: %m"); } r = sd_rtnl_message_append_u8(m, IFLA_VXLAN_UDP_CSUM, v->udpcsum); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_VXLAN_UDP_CSUM attribute: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_VXLAN_UDP_CSUM attribute: %m"); r = sd_rtnl_message_append_u8(m, IFLA_VXLAN_UDP_ZERO_CSUM6_TX, v->udp6zerocsumtx); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_VXLAN_UDP_ZERO_CSUM6_TX attribute: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_VXLAN_UDP_ZERO_CSUM6_TX attribute: %m"); r = sd_rtnl_message_append_u8(m, IFLA_VXLAN_UDP_ZERO_CSUM6_RX, v->udp6zerocsumrx); - if (r < 0) { - log_netdev_error(netdev, - "Could not append IFLA_VXLAN_UDP_ZERO_CSUM6_RX attribute: %s", - strerror(-r)); - return r; - } + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_VXLAN_UDP_ZERO_CSUM6_RX attribute: %m"); return r; } diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c index 5947084106..6f32e5f4a4 100644 --- a/src/network/networkd-network.c +++ b/src/network/networkd-network.c @@ -30,6 +30,7 @@ #include "networkd-netdev.h" #include "networkd-link.h" #include "network-internal.h" +#include "dns-domain.h" static int network_load_one(Manager *manager, const char *filename) { _cleanup_network_free_ Network *network = NULL; @@ -466,11 +467,16 @@ int config_parse_domains(const char *unit, STRV_FOREACH(domain, *domains) { if (is_localhost(*domain)) log_syntax(unit, LOG_ERR, filename, line, EINVAL, "'localhost' domain names may not be configured, ignoring assignment: %s", *domain); - else if (!hostname_is_valid(*domain)) { - if (!streq(*domain, "*")) - log_syntax(unit, LOG_ERR, filename, line, EINVAL, "domain name is not valid, ignoring assignment: %s", *domain); - } else - continue; + else { + r = dns_name_is_valid(*domain); + if (r <= 0 && !streq(*domain, "*")) { + if (r < 0) + log_error_errno(r, "Failed to validate domain name: %s: %m", *domain); + if (r == 0) + log_warning("Domain name is not valid, ignoring assignment: %s", *domain); + } else + continue; + } strv_remove(*domains, *domain); diff --git a/src/network/networkd.h b/src/network/networkd.h index 49afeffe81..4b13d4aed1 100644 --- a/src/network/networkd.h +++ b/src/network/networkd.h @@ -60,7 +60,6 @@ typedef enum AddressFamilyBoolean { ADDRESS_FAMILY_IPV4 = 1, ADDRESS_FAMILY_IPV6 = 2, ADDRESS_FAMILY_YES = 3, - ADDRESS_FAMILY_KERNEL = 4, _ADDRESS_FAMILY_BOOLEAN_MAX, _ADDRESS_FAMILY_BOOLEAN_INVALID = -1, } AddressFamilyBoolean; diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index 4211a3d779..251af4a67c 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -3656,7 +3656,8 @@ static int spawn_getent(const char *database, const char *key, pid_t *rpid) { if (nullfd > 2) safe_close(nullfd); - reset_all_signal_handlers(); + (void) reset_all_signal_handlers(); + (void) reset_signal_mask(); close_all_fds(NULL, 0); execle("/usr/bin/getent", "getent", database, key, NULL, &empty_env); @@ -4739,8 +4740,8 @@ int main(int argc, char *argv[]) { rtnl_socket_pair[0] = safe_close(rtnl_socket_pair[0]); pid_socket_pair[0] = safe_close(pid_socket_pair[0]); - reset_all_signal_handlers(); - reset_signal_mask(); + (void) reset_all_signal_handlers(); + (void) reset_signal_mask(); r = outer_child(&barrier, arg_directory, diff --git a/src/nss-resolve/nss-resolve.c b/src/nss-resolve/nss-resolve.c index bc6c5dc2a0..8f181a6c72 100644 --- a/src/nss-resolve/nss-resolve.c +++ b/src/nss-resolve/nss-resolve.c @@ -365,13 +365,13 @@ enum nss_status _nss_resolve_gethostbyname3_r( int32_t *ttlp, char **canonp); - fallback = (enum nss_status (*)(const char *name, - int af, - struct hostent *result, - char *buffer, size_t buflen, - int *errnop, int *h_errnop, - int32_t *ttlp, - char **canonp)) + fallback = (enum nss_status (*)(const char *name, + int af, + struct hostent *result, + char *buffer, size_t buflen, + int *errnop, int *h_errnop, + int32_t *ttlp, + char **canonp)) find_fallback("libnss_dns.so.2", "_nss_dns_gethostbyname3_r"); if (fallback) return fallback(name, af, result, buffer, buflen, errnop, h_errnop, ttlp, canonp); diff --git a/src/quotacheck/quotacheck.c b/src/quotacheck/quotacheck.c index a729f592cf..cf6a239402 100644 --- a/src/quotacheck/quotacheck.c +++ b/src/quotacheck/quotacheck.c @@ -23,9 +23,11 @@ #include <stdbool.h> #include <errno.h> #include <unistd.h> +#include <sys/prctl.h> #include "util.h" #include "process-util.h" +#include "signal-util.h" static bool arg_skip = false; static bool arg_force = false; @@ -105,7 +107,13 @@ int main(int argc, char *argv[]) { log_error_errno(errno, "fork(): %m"); return EXIT_FAILURE; } else if (pid == 0) { + /* Child */ + + (void) reset_all_signal_handlers(); + (void) reset_signal_mask(); + assert_se(prctl(PR_SET_PDEATHSIG, SIGTERM) == 0); + execv(cmdline[0], (char**) cmdline); _exit(1); /* Operational error */ } diff --git a/src/remount-fs/remount-fs.c b/src/remount-fs/remount-fs.c index e701fc9fae..f904e48e75 100644 --- a/src/remount-fs/remount-fs.c +++ b/src/remount-fs/remount-fs.c @@ -95,6 +95,9 @@ int main(int argc, char *argv[]) { const char *arguments[5]; /* Child */ + (void) reset_all_signal_handlers(); + (void) reset_signal_mask(); + arguments[0] = MOUNT_PATH; arguments[1] = me->mnt_dir; arguments[2] = "-o"; diff --git a/src/resolve/resolved-bus.c b/src/resolve/resolved-bus.c index 171141e3a4..6db12511f9 100644 --- a/src/resolve/resolved-bus.c +++ b/src/resolve/resolved-bus.c @@ -22,7 +22,7 @@ #include "bus-common-errors.h" #include "bus-util.h" -#include "resolved-dns-domain.h" +#include "dns-domain.h" #include "resolved-bus.h" #include "resolved-def.h" diff --git a/src/resolve/resolved-dns-answer.c b/src/resolve/resolved-dns-answer.c index e08eb667cc..f77b98e505 100644 --- a/src/resolve/resolved-dns-answer.c +++ b/src/resolve/resolved-dns-answer.c @@ -20,7 +20,7 @@ ***/ #include "resolved-dns-answer.h" -#include "resolved-dns-domain.h" +#include "dns-domain.h" DnsAnswer *dns_answer_new(unsigned n) { DnsAnswer *a; diff --git a/src/resolve/resolved-dns-packet.c b/src/resolve/resolved-dns-packet.c index 21756f566f..bb74b1828e 100644 --- a/src/resolve/resolved-dns-packet.c +++ b/src/resolve/resolved-dns-packet.c @@ -23,7 +23,7 @@ #include "util.h" #include "strv.h" #include "unaligned.h" -#include "resolved-dns-domain.h" +#include "dns-domain.h" #include "resolved-dns-packet.h" int dns_packet_new(DnsPacket **ret, DnsProtocol protocol, size_t mtu) { diff --git a/src/resolve/resolved-dns-question.c b/src/resolve/resolved-dns-question.c index 45bcbbf23a..4d71f5e3d4 100644 --- a/src/resolve/resolved-dns-question.c +++ b/src/resolve/resolved-dns-question.c @@ -20,7 +20,7 @@ ***/ #include "resolved-dns-question.h" -#include "resolved-dns-domain.h" +#include "dns-domain.h" DnsQuestion *dns_question_new(unsigned n) { DnsQuestion *q; diff --git a/src/resolve/resolved-dns-rr.c b/src/resolve/resolved-dns-rr.c index 78d9e4a412..c1818eef9c 100644 --- a/src/resolve/resolved-dns-rr.c +++ b/src/resolve/resolved-dns-rr.c @@ -23,7 +23,7 @@ #include "strv.h" -#include "resolved-dns-domain.h" +#include "dns-domain.h" #include "resolved-dns-rr.h" #include "resolved-dns-packet.h" #include "dns-type.h" diff --git a/src/resolve/resolved-dns-scope.c b/src/resolve/resolved-dns-scope.c index 7369cbf50f..c25ac2216d 100644 --- a/src/resolve/resolved-dns-scope.c +++ b/src/resolve/resolved-dns-scope.c @@ -27,7 +27,7 @@ #include "af-list.h" #include "random-util.h" #include "hostname-util.h" -#include "resolved-dns-domain.h" +#include "dns-domain.h" #include "resolved-dns-scope.h" #define MULTICAST_RATELIMIT_INTERVAL_USEC (1*USEC_PER_SEC) diff --git a/src/resolve/resolved-dns-stream.c b/src/resolve/resolved-dns-stream.c index 4c0b557bad..7f47e7223a 100644 --- a/src/resolve/resolved-dns-stream.c +++ b/src/resolve/resolved-dns-stream.c @@ -113,7 +113,8 @@ static int dns_stream_identify(DnsStream *s) { mh.msg_control = &control; mh.msg_controllen = sl; - for (cmsg = CMSG_FIRSTHDR(&mh); cmsg; cmsg = CMSG_NXTHDR(&mh, cmsg)) { + + CMSG_FOREACH(cmsg, &mh) { if (cmsg->cmsg_level == IPPROTO_IPV6) { assert(s->peer.sa.sa_family == AF_INET6); diff --git a/src/resolve/resolved-dns-zone.c b/src/resolve/resolved-dns-zone.c index a4c9b7d7af..32d771a954 100644 --- a/src/resolve/resolved-dns-zone.c +++ b/src/resolve/resolved-dns-zone.c @@ -22,7 +22,7 @@ #include "list.h" #include "resolved-dns-zone.h" -#include "resolved-dns-domain.h" +#include "dns-domain.h" #include "resolved-dns-packet.h" /* Never allow more than 1K entries */ diff --git a/src/resolve/resolved-manager.c b/src/resolve/resolved-manager.c index 52695376f0..f8d4db7aad 100644 --- a/src/resolve/resolved-manager.c +++ b/src/resolve/resolved-manager.c @@ -34,7 +34,7 @@ #include "random-util.h" #include "hostname-util.h" -#include "resolved-dns-domain.h" +#include "dns-domain.h" #include "resolved-conf.h" #include "resolved-bus.h" #include "resolved-manager.h" @@ -920,7 +920,7 @@ int manager_recv(Manager *m, int fd, DnsProtocol protocol, DnsPacket **ret) { } else return -EAFNOSUPPORT; - for (cmsg = CMSG_FIRSTHDR(&mh); cmsg; cmsg = CMSG_NXTHDR(&mh, cmsg)) { + CMSG_FOREACH(cmsg, &mh) { if (cmsg->cmsg_level == IPPROTO_IPV6) { assert(p->family == AF_INET6); diff --git a/src/run/run.c b/src/run/run.c index 5b9f31c4aa..f18f77b55a 100644 --- a/src/run/run.c +++ b/src/run/run.c @@ -68,7 +68,7 @@ static void help(void) { printf("%s [OPTIONS...] {COMMAND} [ARGS...]\n\n" "Run the specified command in a transient scope or service or timer\n" "unit. If timer option is specified and unit is exist which is\n" - "specified with --unit option then command can be ommited.\n\n" + "specified with --unit option then command can be omitted.\n\n" " -h --help Show this help\n" " --version Show package version\n" " --user Run as user unit\n" diff --git a/src/libsystemd/sd-bus/bus-util.c b/src/shared/bus-util.c index 99937799b3..8fcc289957 100644 --- a/src/libsystemd/sd-bus/bus-util.c +++ b/src/shared/bus-util.c @@ -1330,31 +1330,6 @@ int bus_parse_unit_info(sd_bus_message *message, UnitInfo *u) { &u->job_path); } -int bus_maybe_reply_error(sd_bus_message *m, int r, sd_bus_error *error) { - assert(m); - - if (r < 0) { - if (m->header->type == SD_BUS_MESSAGE_METHOD_CALL) - sd_bus_reply_method_errno(m, r, error); - - } else if (sd_bus_error_is_set(error)) { - if (m->header->type == SD_BUS_MESSAGE_METHOD_CALL) - sd_bus_reply_method_error(m, error); - } else - return r; - - log_debug("Failed to process message [type=%s sender=%s path=%s interface=%s member=%s signature=%s]: %s", - bus_message_type_to_string(m->header->type), - strna(m->sender), - strna(m->path), - strna(m->interface), - strna(m->member), - strna(m->root_container.signature), - bus_error_message(error, r)); - - return 1; -} - int bus_append_unit_property_assignment(sd_bus_message *m, const char *assignment) { const char *eq, *field; int r; diff --git a/src/libsystemd/sd-bus/bus-util.h b/src/shared/bus-util.h index 999a372cdd..d8dba584d6 100644 --- a/src/libsystemd/sd-bus/bus-util.h +++ b/src/shared/bus-util.h @@ -188,8 +188,6 @@ DEFINE_TRIVIAL_CLEANUP_FUNC(sd_bus_track*, sd_bus_track_unref); SD_BUS_PROPERTY(name, "t", bus_property_get_usec, (offset) + offsetof(struct dual_timestamp, realtime), (flags)), \ SD_BUS_PROPERTY(name "Monotonic", "t", bus_property_get_usec, (offset) + offsetof(struct dual_timestamp, monotonic), (flags)) -int bus_maybe_reply_error(sd_bus_message *m, int r, sd_bus_error *error); - int bus_append_unit_property_assignment(sd_bus_message *m, const char *assignment); typedef struct BusWaitForJobs BusWaitForJobs; diff --git a/src/resolve/resolved-dns-domain.c b/src/shared/dns-domain.c index e1eb3ddfe5..20a44ce4e1 100644 --- a/src/resolve/resolved-dns-domain.c +++ b/src/shared/dns-domain.c @@ -24,7 +24,7 @@ #include <stringprep.h> #endif -#include "resolved-dns-domain.h" +#include "dns-domain.h" int dns_label_unescape(const char **name, char *dest, size_t sz) { const char *n; diff --git a/src/resolve/resolved-dns-domain.h b/src/shared/dns-domain.h index 516d244f7a..00caf5d700 100644 --- a/src/resolve/resolved-dns-domain.h +++ b/src/shared/dns-domain.h @@ -35,6 +35,15 @@ int dns_label_apply_idna(const char *encoded, size_t encoded_size, char *decoded int dns_label_undo_idna(const char *encoded, size_t encoded_size, char *decoded, size_t decoded_max); int dns_name_normalize(const char *s, char **_ret); +static inline int dns_name_is_valid(const char *s) { + int r; + r = dns_name_normalize(s, NULL); + if (r == -EINVAL) + return 0; + if (r < 0) + return r; + return 1; +} unsigned long dns_name_hash_func(const void *s, const uint8_t hash_key[HASH_KEY_SIZE]); int dns_name_compare_func(const void *a, const void *b); diff --git a/src/shared/efivars.c b/src/shared/efivars.c index d34d977b9a..0d6ecf52cf 100644 --- a/src/shared/efivars.c +++ b/src/shared/efivars.c @@ -483,7 +483,7 @@ int efi_add_boot_option(uint16_t id, const char *title, devicep->length = offsetof(struct device_path, drive) + sizeof(struct drive_path); devicep->drive.part_nr = part; devicep->drive.part_start = pstart; - devicep->drive.part_size = psize; + devicep->drive.part_size = psize; devicep->drive.signature_type = SIGNATURE_TYPE_GUID; devicep->drive.mbr_type = MBR_TYPE_EFI_PARTITION_TABLE_HEADER; id128_to_efi_guid(part_uuid, devicep->drive.signature); diff --git a/src/shared/machine-pool.c b/src/shared/machine-pool.c index d27931cb4a..8c64908b1a 100644 --- a/src/shared/machine-pool.c +++ b/src/shared/machine-pool.c @@ -109,8 +109,8 @@ static int setup_machine_raw(uint64_t size, sd_bus_error *error) { /* Child */ - reset_all_signal_handlers(); - reset_signal_mask(); + (void) reset_all_signal_handlers(); + (void) reset_signal_mask(); assert_se(prctl(PR_SET_PDEATHSIG, SIGTERM) == 0); fd = safe_close(fd); diff --git a/src/shared/pager.c b/src/shared/pager.c index 58b62fdccf..13f03e798b 100644 --- a/src/shared/pager.c +++ b/src/shared/pager.c @@ -30,6 +30,7 @@ #include "process-util.h" #include "macro.h" #include "terminal-util.h" +#include "signal-util.h" static pid_t pager_pid = 0; @@ -85,6 +86,9 @@ int pager_open(bool jump_to_end) { if (pager_pid == 0) { const char* less_opts; + (void) reset_all_signal_handlers(); + (void) reset_signal_mask(); + dup2(fd[0], STDIN_FILENO); safe_close_pair(fd); @@ -178,6 +182,10 @@ int show_man_page(const char *desc, bool null_stdio) { if (pid == 0) { /* Child */ + + (void) reset_all_signal_handlers(); + (void) reset_signal_mask(); + if (null_stdio) { r = make_null_stdio(); if (r < 0) { diff --git a/src/shared/pty.c b/src/shared/pty.c index 119d66e9a2..a87b3ce6f0 100644 --- a/src/shared/pty.c +++ b/src/shared/pty.c @@ -239,7 +239,7 @@ int pty_setup_child(Pty *pty) { assert_return(pty_is_child(pty), -EINVAL); assert_return(pty_is_open(pty), -EALREADY); - r = sigprocmask_many(SIG_SETMASK, -1); + r = reset_signal_mask(); if (r < 0) return r; diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index b3d90d2c33..5075e4e176 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -5189,6 +5189,9 @@ static int enable_sysv_units(const char *verb, char **args) { else if (pid == 0) { /* Child */ + (void) reset_all_signal_handlers(); + (void) reset_signal_mask(); + execv(argv[0], (char**) argv); log_error("Failed to execute %s: %m", argv[0]); _exit(EXIT_FAILURE); @@ -5854,6 +5857,9 @@ static int run_editor(char **paths) { unsigned i = 1; size_t argc; + (void) reset_all_signal_handlers(); + (void) reset_signal_mask(); + argc = strv_length(paths)/2 + 1; args = newa(const char*, argc + 1); diff --git a/src/systemd/sd-bus.h b/src/systemd/sd-bus.h index e6e2ecd0b7..57e46ced8e 100644 --- a/src/systemd/sd-bus.h +++ b/src/systemd/sd-bus.h @@ -299,6 +299,7 @@ int sd_bus_get_name_machine_id(sd_bus *bus, const char *name, sd_id128_t *machin /* Convenience calls */ int sd_bus_call_method(sd_bus *bus, const char *destination, const char *path, const char *interface, const char *member, sd_bus_error *ret_error, sd_bus_message **reply, const char *types, ...); +int sd_bus_call_method_async(sd_bus *bus, sd_bus_slot **slot, const char *destination, const char *path, const char *interface, const char *member, sd_bus_message_handler_t callback, void *userdata, const char *types, ...); int sd_bus_get_property(sd_bus *bus, const char *destination, const char *path, const char *interface, const char *member, sd_bus_error *ret_error, sd_bus_message **reply, const char *type); int sd_bus_get_property_trivial(sd_bus *bus, const char *destination, const char *path, const char *interface, const char *member, sd_bus_error *ret_error, char type, void *ret_ptr); int sd_bus_get_property_string(sd_bus *bus, const char *destination, const char *path, const char *interface, const char *member, sd_bus_error *ret_error, char **ret); /* free the result! */ diff --git a/src/test/test-cgroup-util.c b/src/test/test-cgroup-util.c index 4a89f64518..ecc9d70bf4 100644 --- a/src/test/test-cgroup-util.c +++ b/src/test/test-cgroup-util.c @@ -244,16 +244,16 @@ static void test_escape(void) { } static void test_controller_is_valid(void) { - assert_se(cg_controller_is_valid("foobar", false)); - assert_se(cg_controller_is_valid("foo_bar", false)); - assert_se(cg_controller_is_valid("name=foo", true)); - assert_se(!cg_controller_is_valid("", false)); - assert_se(!cg_controller_is_valid("name=", true)); - assert_se(!cg_controller_is_valid("=", false)); - assert_se(!cg_controller_is_valid("cpu,cpuacct", false)); - assert_se(!cg_controller_is_valid("_", false)); - assert_se(!cg_controller_is_valid("_foobar", false)); - assert_se(!cg_controller_is_valid("tatü", false)); + assert_se(cg_controller_is_valid("foobar")); + assert_se(cg_controller_is_valid("foo_bar")); + assert_se(cg_controller_is_valid("name=foo")); + assert_se(!cg_controller_is_valid("")); + assert_se(!cg_controller_is_valid("name=")); + assert_se(!cg_controller_is_valid("=")); + assert_se(!cg_controller_is_valid("cpu,cpuacct")); + assert_se(!cg_controller_is_valid("_")); + assert_se(!cg_controller_is_valid("_foobar")); + assert_se(!cg_controller_is_valid("tatü")); } static void test_slice_to_path_one(const char *unit, const char *path, int error) { diff --git a/src/test/test-copy.c b/src/test/test-copy.c index 403d85bff0..e55ffaa16a 100644 --- a/src/test/test-copy.c +++ b/src/test/test-copy.c @@ -133,10 +133,45 @@ static void test_copy_tree(void) { (void) rm_rf(original_dir, REMOVE_ROOT|REMOVE_PHYSICAL); } +static void test_copy_bytes(void) { + _cleanup_close_pair_ int pipefd[2] = {-1, -1}; + _cleanup_close_ int infd = -1; + int r, r2; + char buf[1024], buf2[1024]; + + infd = open("/etc/os-release", O_RDONLY|O_CLOEXEC); + assert_se(infd >= 0); + + assert_se(pipe2(pipefd, O_CLOEXEC) == 0); + + r = copy_bytes(infd, pipefd[1], (off_t) -1, false); + assert_se(r == 0); + + r = read(pipefd[0], buf, sizeof(buf)); + assert_se(r >= 0); + + assert_se(lseek(infd, 0, SEEK_SET) == 0); + r2 = read(infd, buf2, sizeof(buf2)); + assert_se(r == r2); + + assert_se(strneq(buf, buf2, r)); + + /* test copy_bytes with invalid descriptors */ + r = copy_bytes(pipefd[0], pipefd[0], 1, false); + assert_se(r == -EBADF); + + r = copy_bytes(pipefd[1], pipefd[1], 1, false); + assert_se(r == -EBADF); + + r = copy_bytes(pipefd[1], infd, 1, false); + assert_se(r == -EBADF); +} + int main(int argc, char *argv[]) { test_copy_file(); test_copy_file_fd(); test_copy_tree(); + test_copy_bytes(); return 0; } diff --git a/src/resolve/test-dns-domain.c b/src/test/test-dns-domain.c index c3208abc78..527cdd3b54 100644 --- a/src/resolve/test-dns-domain.c +++ b/src/test/test-dns-domain.c @@ -20,7 +20,7 @@ ***/ #include "macro.h" -#include "resolved-dns-domain.h" +#include "dns-domain.h" static void test_dns_label_unescape_one(const char *what, const char *expect, size_t buffer_sz, int ret) { char buffer[buffer_sz]; diff --git a/src/test/test-path-util.c b/src/test/test-path-util.c index 0045ae6824..fce4e81a09 100644 --- a/src/test/test-path-util.c +++ b/src/test/test-path-util.c @@ -312,9 +312,11 @@ static void test_prefix_root(void) { } static void test_path_is_mount_point(void) { - int fd, rt, rf, rlt, rlf; + int fd; char tmp_dir[] = "/tmp/test-path-is-mount-point-XXXXXX"; _cleanup_free_ char *file1 = NULL, *file2 = NULL, *link1 = NULL, *link2 = NULL; + _cleanup_free_ char *dir1 = NULL, *dir1file = NULL, *dirlink1 = NULL, *dirlink1file = NULL; + _cleanup_free_ char *dir2 = NULL, *dir2file = NULL; assert_se(path_is_mount_point("/", AT_SYMLINK_FOLLOW) > 0); assert_se(path_is_mount_point("/", 0) > 0); @@ -328,6 +330,19 @@ static void test_path_is_mount_point(void) { assert_se(path_is_mount_point("/sys", AT_SYMLINK_FOLLOW) > 0); assert_se(path_is_mount_point("/sys", 0) > 0); + /* we'll create a hierarchy of different kinds of dir/file/link + * layouts: + * + * <tmp>/file1, <tmp>/file2 + * <tmp>/link1 -> file1, <tmp>/link2 -> file2 + * <tmp>/dir1/ + * <tmp>/dir1/file + * <tmp>/dirlink1 -> dir1 + * <tmp>/dirlink1file -> dirlink1/file + * <tmp>/dir2/ + * <tmp>/dir2/file + */ + /* file mountpoints */ assert_se(mkdtemp(tmp_dir) != NULL); file1 = path_join(NULL, tmp_dir, "file1"); @@ -352,8 +367,43 @@ static void test_path_is_mount_point(void) { assert_se(path_is_mount_point(link1, AT_SYMLINK_FOLLOW) == 0); assert_se(path_is_mount_point(link1, 0) == 0); - /* this test will only work as root */ + /* directory mountpoints */ + dir1 = path_join(NULL, tmp_dir, "dir1"); + assert_se(dir1); + assert_se(mkdir(dir1, 0755) == 0); + dirlink1 = path_join(NULL, tmp_dir, "dirlink1"); + assert_se(dirlink1); + assert_se(symlink("dir1", dirlink1) == 0); + dirlink1file = path_join(NULL, tmp_dir, "dirlink1file"); + assert_se(dirlink1file); + assert_se(symlink("dirlink1/file", dirlink1file) == 0); + dir2 = path_join(NULL, tmp_dir, "dir2"); + assert_se(dir2); + assert_se(mkdir(dir2, 0755) == 0); + + assert_se(path_is_mount_point(dir1, AT_SYMLINK_FOLLOW) == 0); + assert_se(path_is_mount_point(dir1, 0) == 0); + assert_se(path_is_mount_point(dirlink1, AT_SYMLINK_FOLLOW) == 0); + assert_se(path_is_mount_point(dirlink1, 0) == 0); + + /* file in subdirectory mountpoints */ + dir1file = path_join(NULL, dir1, "file"); + assert_se(dir1file); + fd = open(dir1file, O_WRONLY|O_CREAT|O_EXCL|O_CLOEXEC, 0664); + assert_se(fd > 0); + close(fd); + + assert_se(path_is_mount_point(dir1file, AT_SYMLINK_FOLLOW) == 0); + assert_se(path_is_mount_point(dir1file, 0) == 0); + assert_se(path_is_mount_point(dirlink1file, AT_SYMLINK_FOLLOW) == 0); + assert_se(path_is_mount_point(dirlink1file, 0) == 0); + + /* these tests will only work as root */ if (mount(file1, file2, NULL, MS_BIND, NULL) >= 0) { + int rt, rf, rlt, rlf, rl1t, rl1f; + + /* files */ + /* capture results in vars, to avoid dangling mounts on failure */ rf = path_is_mount_point(file2, 0); rt = path_is_mount_point(file2, AT_SYMLINK_FOLLOW); rlf = path_is_mount_point(link2, 0); @@ -365,6 +415,33 @@ static void test_path_is_mount_point(void) { assert_se(rt == 1); assert_se(rlf == 0); assert_se(rlt == 1); + + /* dirs */ + dir2file = path_join(NULL, dir2, "file"); + assert_se(dir2file); + fd = open(dir2file, O_WRONLY|O_CREAT|O_EXCL|O_CLOEXEC, 0664); + assert_se(fd > 0); + close(fd); + + assert_se(mount(dir2, dir1, NULL, MS_BIND, NULL) >= 0); + + rf = path_is_mount_point(dir1, 0); + rt = path_is_mount_point(dir1, AT_SYMLINK_FOLLOW); + rlf = path_is_mount_point(dirlink1, 0); + rlt = path_is_mount_point(dirlink1, AT_SYMLINK_FOLLOW); + /* its parent is a mount point, but not /file itself */ + rl1f = path_is_mount_point(dirlink1file, 0); + rl1t = path_is_mount_point(dirlink1file, AT_SYMLINK_FOLLOW); + + assert_se(umount(dir1) == 0); + + assert_se(rf == 1); + assert_se(rt == 1); + assert_se(rlf == 0); + assert_se(rlt == 1); + assert_se(rl1f == 0); + assert_se(rl1t == 0); + } else printf("Skipping bind mount file test: %m\n"); diff --git a/src/timesync/timesyncd-manager.c b/src/timesync/timesyncd-manager.c index 88e9cf98ed..40e0fd31fe 100644 --- a/src/timesync/timesyncd-manager.c +++ b/src/timesync/timesyncd-manager.c @@ -528,7 +528,7 @@ static int manager_receive_response(sd_event_source *source, int fd, uint32_t re } recv_time = NULL; - for (cmsg = CMSG_FIRSTHDR(&msghdr); cmsg; cmsg = CMSG_NXTHDR(&msghdr, cmsg)) { + CMSG_FOREACH(cmsg, &msghdr) { if (cmsg->cmsg_level != SOL_SOCKET) continue; diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c index 4dcf8f2e1c..8d17c5e1e3 100644 --- a/src/udev/udev-event.c +++ b/src/udev/udev-event.c @@ -631,9 +631,9 @@ static int spawn_wait(struct udev_event *event, if (timeout_warn_usec > 0 && timeout_warn_usec < timeout_usec && age_usec < timeout_warn_usec) { spawn.timeout_warn = timeout_warn_usec - age_usec; - r = sd_event_add_time(e, NULL, clock_boottime_or_monotonic(), - usec + spawn.timeout_warn, USEC_PER_SEC, - on_spawn_timeout_warning, &spawn); + r = sd_event_add_time(e, NULL, clock_boottime_or_monotonic(), + usec + spawn.timeout_warn, USEC_PER_SEC, + on_spawn_timeout_warning, &spawn); if (r < 0) return r; } diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c index 915371525f..7be9a2311a 100644 --- a/src/udev/udev-rules.c +++ b/src/udev/udev-rules.c @@ -1941,7 +1941,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, udev_list_entry_foreach(list_entry, udev_device_get_devlinks_list_entry(event->dev)) { const char *devlink; - devlink = udev_list_entry_get_name(list_entry) + strlen("/dev/"); + devlink = udev_list_entry_get_name(list_entry) + strlen("/dev/"); if (match_key(rules, cur, devlink) == 0) { match = true; break; diff --git a/src/udev/udevd.c b/src/udev/udevd.c index eb43091190..2affb5944a 100644 --- a/src/udev/udevd.c +++ b/src/udev/udevd.c @@ -875,7 +875,7 @@ static int on_worker(sd_event_source *s, int fd, uint32_t revents, void *userdat continue; } - for (cmsg = CMSG_FIRSTHDR(&msghdr); cmsg; cmsg = CMSG_NXTHDR(&msghdr, cmsg)) { + CMSG_FOREACH(cmsg, &msghdr) { if (cmsg->cmsg_level == SOL_SOCKET && cmsg->cmsg_type == SCM_CREDENTIALS && cmsg->cmsg_len == CMSG_LEN(sizeof(struct ucred))) @@ -1638,7 +1638,7 @@ int main(int argc, char *argv[]) { arg_children_max = 8; if (sched_getaffinity(0, sizeof (cpu_set), &cpu_set) == 0) { - arg_children_max += CPU_COUNT(&cpu_set) * 2; + arg_children_max += CPU_COUNT(&cpu_set) * 2; } log_debug("set children_max to %u", arg_children_max); diff --git a/src/vconsole/vconsole-setup.c b/src/vconsole/vconsole-setup.c index 6c782b3130..f7728dcfff 100644 --- a/src/vconsole/vconsole-setup.c +++ b/src/vconsole/vconsole-setup.c @@ -37,6 +37,7 @@ #include "fileio.h" #include "process-util.h" #include "terminal-util.h" +#include "signal-util.h" static bool is_vconsole(int fd) { unsigned char data[1]; @@ -122,6 +123,10 @@ static int keyboard_load_and_wait(const char *vc, const char *map, const char *m if (pid < 0) return log_error_errno(errno, "Failed to fork: %m"); else if (pid == 0) { + + (void) reset_all_signal_handlers(); + (void) reset_signal_mask(); + execv(args[0], (char **) args); _exit(EXIT_FAILURE); } @@ -160,6 +165,10 @@ static int font_load_and_wait(const char *vc, const char *font, const char *map, if (pid < 0) return log_error_errno(errno, "Failed to fork: %m"); else if (pid == 0) { + + (void) reset_all_signal_handlers(); + (void) reset_signal_mask(); + execv(args[0], (char **) args); _exit(EXIT_FAILURE); } |