summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Iooss2015-02-22 09:17:22 +0800
committerNicolas Iooss2015-06-27 11:44:59 +0800
commit8090a768165b77f07e81eacd0c64d90614127bfc (patch)
tree4e724a2b7200c1253bfb31e573dc378c8701fc07
parentbb5a76b47a420e5d9c40e5509b81fb667a7cad39 (diff)
downloadaur-8090a768165b77f07e81eacd0c64d90614127bfc.tar.gz
systemd-selinux 218-2 update
-rw-r--r--.SRCINFO46
-rw-r--r--0001-journal-fix-dangling-else-ambiguity.patch44
-rw-r--r--0002-nspawn-properly-validate-machine-names.patch35
-rw-r--r--0003-systemctl-fix-argument-handling-when-invoked-as-shut.patch34
-rw-r--r--0004-systemctl-properly-iterate-through-service-array-whe.patch31
-rw-r--r--0005-nss-myhostname-always-will-in-canonical-hostname-fie.patch113
-rw-r--r--0010-log-fix-log_full_errno-with-custom-facilities.patch29
-rw-r--r--0014-timesyncd-consider-too-long-packets-as-invalid.patch31
-rw-r--r--0016-logind-fix-sd_eviocrevoke-ioctl-call.patch30
-rw-r--r--0019-sd-bus-fix-handling-of-double-parameters-in-sd_bus_m.patch91
-rw-r--r--0021-units-fix-all-TTY-paths-for-container-gettys.patch30
-rw-r--r--0024-sd-dhcp-chop-of-trailing-dot-of-DHCP-supplied-host-a.patch55
-rw-r--r--0025-logind-handle-closing-sessions-over-daemon-restarts.patch103
-rw-r--r--0026-core-make-setting-the-shutdown-watchdog-configuratio.patch27
-rw-r--r--0027-sd-rtnl-don-t-fail-event-handler-when-callback-fails.patch67
-rw-r--r--0029-config_parse_set_status-put-signals-in-the-correct-s.patch53
-rw-r--r--0030-network-address-test-network-avoid-undefined-behavio.patch44
-rw-r--r--0033-core-disarm-shutdown-watchdog-if-we-fail-to-set-time.patch31
-rw-r--r--0034-exit-on-idle-only-exit-if-actually-idle.patch29
-rw-r--r--PKGBUILD51
-rw-r--r--systemd.install6
21 files changed, 967 insertions, 13 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 1bb584f38d07..86b52f9c1bce 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,6 +1,6 @@
pkgbase = systemd-selinux
pkgver = 218
- pkgrel = 1
+ pkgrel = 2
url = http://www.freedesktop.org/wiki/Software/systemd
arch = i686
arch = x86_64
@@ -35,10 +35,46 @@ pkgbase = systemd-selinux
source = initcpio-hook-udev
source = initcpio-install-systemd
source = initcpio-install-udev
+ source = 0001-journal-fix-dangling-else-ambiguity.patch
+ source = 0002-nspawn-properly-validate-machine-names.patch
+ source = 0003-systemctl-fix-argument-handling-when-invoked-as-shut.patch
+ source = 0004-systemctl-properly-iterate-through-service-array-whe.patch
+ source = 0005-nss-myhostname-always-will-in-canonical-hostname-fie.patch
+ source = 0010-log-fix-log_full_errno-with-custom-facilities.patch
+ source = 0014-timesyncd-consider-too-long-packets-as-invalid.patch
+ source = 0016-logind-fix-sd_eviocrevoke-ioctl-call.patch
+ source = 0019-sd-bus-fix-handling-of-double-parameters-in-sd_bus_m.patch
+ source = 0021-units-fix-all-TTY-paths-for-container-gettys.patch
+ source = 0024-sd-dhcp-chop-of-trailing-dot-of-DHCP-supplied-host-a.patch
+ source = 0025-logind-handle-closing-sessions-over-daemon-restarts.patch
+ source = 0026-core-make-setting-the-shutdown-watchdog-configuratio.patch
+ source = 0027-sd-rtnl-don-t-fail-event-handler-when-callback-fails.patch
+ source = 0029-config_parse_set_status-put-signals-in-the-correct-s.patch
+ source = 0030-network-address-test-network-avoid-undefined-behavio.patch
+ source = 0033-core-disarm-shutdown-watchdog-if-we-fail-to-set-time.patch
+ source = 0034-exit-on-idle-only-exit-if-actually-idle.patch
md5sums = 4e2c511b0a7932d7fc9d79822273aac6
md5sums = 90ea67a7bb237502094914622a39e281
md5sums = c9db3010602913559295de3481019681
md5sums = bde43090d4ac0ef048e3eaee8202a407
+ md5sums = 22920ff32e345a26a9c05662ec274314
+ md5sums = 6960b43aaec4f899fdf0fe87d0457901
+ md5sums = 715cefd0e803d8b441811688fd4da1c3
+ md5sums = 3bb57f2812572ee999928ba33b489afe
+ md5sums = 5d42fda1f10c02861ee454277b516716
+ md5sums = a079c6e5c8d0184adf47794aaf338ac4
+ md5sums = c9b4e7bff3d1c073852c3d1b3bb8002e
+ md5sums = ae4d820582570ceb7b7c80b6810596f1
+ md5sums = 5b212435622f69c2a24b01ef7380bc94
+ md5sums = 0523c9ae27abdd30b847625b1c9c7a03
+ md5sums = c0d236b41dd4afad3f91dee72bb296a8
+ md5sums = 25e191463fb877fd5dabecb95f15ee8f
+ md5sums = 5911ef7d3ab5c5a06076fdea221ea27e
+ md5sums = ab7baf675e224cf19b9194fc1e4ea5ff
+ md5sums = 1d6cb563b3864fd8d724982bc2007f16
+ md5sums = 529c4fba7e0a709fda9e108e658e76c3
+ md5sums = 9d0d909507294afb879965e74fef79c8
+ md5sums = c0b68cefe7f00ea5ec856c64f799cca4
pkgname = systemd-selinux
pkgdesc = system and service manager with SELinux support
@@ -73,7 +109,7 @@ pkgname = systemd-selinux
provides = nss-myhostname
provides = systemd-tools=218
provides = udev=218
- provides = systemd=218-1
+ provides = systemd=218-2
conflicts = nss-myhostname
conflicts = systemd-tools
conflicts = udev
@@ -115,15 +151,15 @@ pkgname = libsystemd-selinux
provides = libsystemd-journal.so
provides = libsystemd-login.so
provides = libudev.so
- provides = libsystemd=218-1
+ provides = libsystemd=218-2
conflicts = libsystemd
pkgname = systemd-sysvcompat-selinux
pkgdesc = sysvinit compat for systemd with SELinux support
license = GPL2
depends = systemd-selinux
- provides = systemd-sysvcompat=218-1
- provides = selinux-systemd-sysvcompat=218-1
+ provides = systemd-sysvcompat=218-2
+ provides = selinux-systemd-sysvcompat=218-2
conflicts = sysvinit
conflicts = systemd-sysvcompat
conflicts = selinux-systemd-sysvcompat
diff --git a/0001-journal-fix-dangling-else-ambiguity.patch b/0001-journal-fix-dangling-else-ambiguity.patch
new file mode 100644
index 000000000000..d05e8c295a32
--- /dev/null
+++ b/0001-journal-fix-dangling-else-ambiguity.patch
@@ -0,0 +1,44 @@
+From 8d1c8bd746a6a14dec7470f93f843bcb0699f4b8 Mon Sep 17 00:00:00 2001
+From: David Herrmann <dh.herrmann@gmail.com>
+Date: Fri, 12 Dec 2014 09:52:06 +0100
+Subject: [PATCH] journal: fix dangling 'else' ambiguity
+
+Rework the sd-journal iterators to avoid dangling 'else' ambiguity. For a
+detailed explanation, see:
+
+ commit bff686e2a981ccd0888cdf1981977d24320f1770
+ Author: David Herrmann <dh.herrmann@gmail.com>
+ Date: Fri Dec 12 09:43:54 2014 +0100
+
+ hwdb: fix dangling 'else' ambuguity
+---
+ src/systemd/sd-journal.h | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/src/systemd/sd-journal.h b/src/systemd/sd-journal.h
+index eb24372..00237a2 100644
+--- a/src/systemd/sd-journal.h
++++ b/src/systemd/sd-journal.h
+@@ -138,13 +138,15 @@ int sd_journal_reliable_fd(sd_journal *j);
+ int sd_journal_get_catalog(sd_journal *j, char **text);
+ int sd_journal_get_catalog_for_message_id(sd_id128_t id, char **text);
+
++/* the inverse condition avoids ambiguity of danling 'else' after the macro */
+ #define SD_JOURNAL_FOREACH(j) \
+- if (sd_journal_seek_head(j) >= 0) \
+- while (sd_journal_next(j) > 0)
++ if (sd_journal_seek_head(j) < 0) { } \
++ else while (sd_journal_next(j) > 0)
+
++/* the inverse condition avoids ambiguity of danling 'else' after the macro */
+ #define SD_JOURNAL_FOREACH_BACKWARDS(j) \
+- if (sd_journal_seek_tail(j) >= 0) \
+- while (sd_journal_previous(j) > 0)
++ if (sd_journal_seek_tail(j) < 0) { } \
++ else while (sd_journal_previous(j) > 0)
+
+ #define SD_JOURNAL_FOREACH_DATA(j, data, l) \
+ for (sd_journal_restart_data(j); sd_journal_enumerate_data((j), &(data), &(l)) > 0; )
+--
+2.3.0
+
diff --git a/0002-nspawn-properly-validate-machine-names.patch b/0002-nspawn-properly-validate-machine-names.patch
new file mode 100644
index 000000000000..ae404bd24d6c
--- /dev/null
+++ b/0002-nspawn-properly-validate-machine-names.patch
@@ -0,0 +1,35 @@
+From 0c3c42847da2f614f1a3f93c7cc96cd241e17e3a Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 12 Dec 2014 02:49:40 +0100
+Subject: [PATCH] nspawn: properly validate machine names
+
+---
+ src/nspawn/nspawn.c | 8 +++-----
+ 1 file changed, 3 insertions(+), 5 deletions(-)
+
+diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
+index 0466ddb..e1e1c36 100644
+--- a/src/nspawn/nspawn.c
++++ b/src/nspawn/nspawn.c
+@@ -369,15 +369,13 @@ static int parse_argv(int argc, char *argv[]) {
+ free(arg_machine);
+ arg_machine = NULL;
+ } else {
+-
+- if (!hostname_is_valid(optarg)) {
++ if (!machine_name_is_valid(optarg)) {
+ log_error("Invalid machine name: %s", optarg);
+ return -EINVAL;
+ }
+
+- free(arg_machine);
+- arg_machine = strdup(optarg);
+- if (!arg_machine)
++ r = free_and_strdup(&arg_machine, optarg);
++ if (r < 0)
+ return log_oom();
+
+ break;
+--
+2.3.0
+
diff --git a/0003-systemctl-fix-argument-handling-when-invoked-as-shut.patch b/0003-systemctl-fix-argument-handling-when-invoked-as-shut.patch
new file mode 100644
index 000000000000..d961b1699913
--- /dev/null
+++ b/0003-systemctl-fix-argument-handling-when-invoked-as-shut.patch
@@ -0,0 +1,34 @@
+From 75836b9d2071aab978ee78d7d797126a18a32052 Mon Sep 17 00:00:00 2001
+From: Jan Synacek <jsynacek@redhat.com>
+Date: Mon, 15 Dec 2014 10:39:00 +0100
+Subject: [PATCH] systemctl: fix argument handling when invoked as "shutdown"
+
+---
+ src/systemctl/systemctl.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
+index 649fb5c..4c4648f 100644
+--- a/src/systemctl/systemctl.c
++++ b/src/systemctl/systemctl.c
+@@ -6926,7 +6926,7 @@ static int shutdown_parse_argv(int argc, char *argv[]) {
+ assert(argc >= 0);
+ assert(argv);
+
+- while ((c = getopt_long(argc, argv, "HPrhkt:afFc", options, NULL)) >= 0)
++ while ((c = getopt_long(argc, argv, "HPrhkKt:afFc", options, NULL)) >= 0)
+ switch (c) {
+
+ case ARG_HELP:
+@@ -6967,6 +6967,8 @@ static int shutdown_parse_argv(int argc, char *argv[]) {
+
+ case 't':
+ case 'a':
++ case 'f':
++ case 'F':
+ /* Compatibility nops */
+ break;
+
+--
+2.3.0
+
diff --git a/0004-systemctl-properly-iterate-through-service-array-whe.patch b/0004-systemctl-properly-iterate-through-service-array-whe.patch
new file mode 100644
index 000000000000..c04fb75b15b0
--- /dev/null
+++ b/0004-systemctl-properly-iterate-through-service-array-whe.patch
@@ -0,0 +1,31 @@
+From aba843317d8acc4634417becebaedcfe5805d49d Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Mon, 5 Jan 2015 01:56:47 +0100
+Subject: [PATCH] systemctl: properly iterate through service array when
+ dispatching to sysv
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1175734
+---
+ src/systemctl/systemctl.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
+index 9c4b9ed..3d939f0 100644
+--- a/src/systemctl/systemctl.c
++++ b/src/systemctl/systemctl.c
+@@ -5188,8 +5188,10 @@ static int enable_sysv_units(const char *verb, char **args) {
+ return -EPROTO;
+
+ /* Remove this entry, so that we don't try enabling it as native unit */
+- assert(f > 0 && streq(args[f-1], name));
+- assert_se(strv_remove(args + f - 1, name));
++ assert(f > 0);
++ f--;
++ assert(args[f] == name);
++ strv_remove(args, name);
+ }
+
+ #endif
+--
+2.3.0
+
diff --git a/0005-nss-myhostname-always-will-in-canonical-hostname-fie.patch b/0005-nss-myhostname-always-will-in-canonical-hostname-fie.patch
new file mode 100644
index 000000000000..acb1ed82830a
--- /dev/null
+++ b/0005-nss-myhostname-always-will-in-canonical-hostname-fie.patch
@@ -0,0 +1,113 @@
+From 3fdcecc87eb381ef300719e419d5863dd8a64a97 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Mon, 5 Jan 2015 16:23:21 +0100
+Subject: [PATCH] nss-myhostname: always will in canonical hostname field when
+ resolving addresses to hostnames
+
+https://bugs.freedesktop.org/show_bug.cgi?id=87634
+---
+ src/nss-myhostname/nss-myhostname.c | 36 +++++++++++++++++++-----------------
+ 1 file changed, 19 insertions(+), 17 deletions(-)
+
+diff --git a/src/nss-myhostname/nss-myhostname.c b/src/nss-myhostname/nss-myhostname.c
+index dcf7c1f..a939bb2 100644
+--- a/src/nss-myhostname/nss-myhostname.c
++++ b/src/nss-myhostname/nss-myhostname.c
+@@ -38,7 +38,7 @@
+ /* We use 127.0.0.2 as IPv4 address. This has the advantage over
+ * 127.0.0.1 that it can be translated back to the local hostname. For
+ * IPv6 we use ::1 which unfortunately will not translate back to the
+- * hostname but instead something like "localhost6" or so. */
++ * hostname but instead something like "localhost" or so. */
+
+ #define LOCALADDRESS_IPV4 (htonl(0x7F000002))
+ #define LOCALADDRESS_IPV6 &in6addr_loopback
+@@ -415,6 +415,7 @@ enum nss_status _nss_myhostname_gethostbyaddr2_r(
+ _cleanup_free_ char *hn = NULL;
+ int n_addresses = 0;
+ struct local_address *a;
++ bool additional_from_hostname = false;
+ unsigned n;
+
+ assert(addr);
+@@ -436,7 +437,6 @@ enum nss_status _nss_myhostname_gethostbyaddr2_r(
+ }
+
+ if (af == AF_INET) {
+-
+ if ((*(uint32_t*) addr) == LOCALADDRESS_IPV4)
+ goto found;
+
+@@ -450,10 +450,10 @@ enum nss_status _nss_myhostname_gethostbyaddr2_r(
+ assert(af == AF_INET6);
+
+ if (memcmp(addr, LOCALADDRESS_IPV6, 16) == 0) {
+- additional = "localhost";
++ canonical = "localhost";
++ additional_from_hostname = true;
+ goto found;
+ }
+-
+ }
+
+ n_addresses = local_addresses(NULL, 0, AF_UNSPEC, &addresses);
+@@ -462,18 +462,8 @@ enum nss_status _nss_myhostname_gethostbyaddr2_r(
+ if (af != a->family)
+ continue;
+
+- if (memcmp(addr, &a->address, FAMILY_ADDRESS_SIZE(af)) == 0) {
+-
+- hn = gethostname_malloc();
+- if (!hn) {
+- *errnop = ENOMEM;
+- *h_errnop = NO_RECOVERY;
+- return NSS_STATUS_TRYAGAIN;
+- }
+-
+- canonical = hn;
++ if (memcmp(addr, &a->address, FAMILY_ADDRESS_SIZE(af)) == 0)
+ goto found;
+- }
+ }
+ }
+
+@@ -487,7 +477,6 @@ enum nss_status _nss_myhostname_gethostbyaddr2_r(
+ continue;
+
+ if (memcmp(addr, &a->address, FAMILY_ADDRESS_SIZE(af)) == 0) {
+-
+ canonical = "gateway";
+ goto found;
+ }
+@@ -500,6 +489,20 @@ enum nss_status _nss_myhostname_gethostbyaddr2_r(
+ return NSS_STATUS_NOTFOUND;
+
+ found:
++ if (!canonical || (!additional && additional_from_hostname)) {
++ hn = gethostname_malloc();
++ if (!hn) {
++ *errnop = ENOMEM;
++ *h_errnop = NO_RECOVERY;
++ return NSS_STATUS_TRYAGAIN;
++ }
++
++ if (!canonical)
++ canonical = hn;
++
++ if (!additional && additional_from_hostname)
++ additional = hn;
++ }
+
+ return fill_in_hostent(
+ canonical, additional,
+@@ -511,7 +514,6 @@ found:
+ errnop, h_errnop,
+ ttlp,
+ NULL);
+-
+ }
+
+ NSS_GETHOSTBYNAME_FALLBACKS(myhostname);
+--
+2.3.0
+
diff --git a/0010-log-fix-log_full_errno-with-custom-facilities.patch b/0010-log-fix-log_full_errno-with-custom-facilities.patch
new file mode 100644
index 000000000000..4bbf937b6d4f
--- /dev/null
+++ b/0010-log-fix-log_full_errno-with-custom-facilities.patch
@@ -0,0 +1,29 @@
+From 24b759c5d79c1a4993c05c1ef7f44f9ff6d7f463 Mon Sep 17 00:00:00 2001
+From: David Herrmann <dh.herrmann@gmail.com>
+Date: Sun, 11 Jan 2015 03:13:46 +0100
+Subject: [PATCH] log: fix log_full_errno() with custom facilities
+
+Make sure to extract the log-priority when comparing against
+max-log-level, otherwise, we will always drop those messages.
+
+This fixes bus-proxyd to properly send warnings on policy blocks.
+---
+ src/shared/log.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/shared/log.h b/src/shared/log.h
+index 2b6971f..d15d7c8 100644
+--- a/src/shared/log.h
++++ b/src/shared/log.h
+@@ -158,7 +158,7 @@ void log_assert_failed_return(
+ #define log_full_errno(level, error, ...) \
+ ({ \
+ int _l = (level), _e = (error); \
+- (log_get_max_level() >= _l) \
++ (log_get_max_level() >= LOG_PRI(_l)) \
+ ? log_internal(_l, _e, __FILE__, __LINE__, __func__, __VA_ARGS__) \
+ : -abs(_e); \
+ })
+--
+2.3.0
+
diff --git a/0014-timesyncd-consider-too-long-packets-as-invalid.patch b/0014-timesyncd-consider-too-long-packets-as-invalid.patch
new file mode 100644
index 000000000000..b940d2d2e729
--- /dev/null
+++ b/0014-timesyncd-consider-too-long-packets-as-invalid.patch
@@ -0,0 +1,31 @@
+From 43fcd650e5cb0836cfc9f667ed74b3bc0283a81c Mon Sep 17 00:00:00 2001
+From: Topi Miettinen <toiwoton@gmail.com>
+Date: Sun, 18 Jan 2015 16:01:25 +0200
+Subject: [PATCH] timesyncd: consider too long packets as invalid
+
+If the received NTP message from server didn't fit to our buffer, either
+it is doing something nasty or we don't know the protocol. Consider the
+packet as invalid.
+
+(David: add parantheses around conditional)
+---
+ src/timesync/timesyncd-manager.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/timesync/timesyncd-manager.c b/src/timesync/timesyncd-manager.c
+index 117ea8c..bc35662 100644
+--- a/src/timesync/timesyncd-manager.c
++++ b/src/timesync/timesyncd-manager.c
+@@ -525,7 +525,8 @@ static int manager_receive_response(sd_event_source *source, int fd, uint32_t re
+ return manager_connect(m);
+ }
+
+- if (iov.iov_len < sizeof(struct ntp_msg)) {
++ /* Too short or too long packet? */
++ if (iov.iov_len < sizeof(struct ntp_msg) || (msghdr.msg_flags & MSG_TRUNC)) {
+ log_warning("Invalid response from server. Disconnecting.");
+ return manager_connect(m);
+ }
+--
+2.3.0
+
diff --git a/0016-logind-fix-sd_eviocrevoke-ioctl-call.patch b/0016-logind-fix-sd_eviocrevoke-ioctl-call.patch
new file mode 100644
index 000000000000..f32ba066098e
--- /dev/null
+++ b/0016-logind-fix-sd_eviocrevoke-ioctl-call.patch
@@ -0,0 +1,30 @@
+From 8dbce34b0373923c7aa7d795024bbedb0a85c7ea Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Thu, 22 Jan 2015 11:36:02 +1000
+Subject: [PATCH] logind: fix sd_eviocrevoke ioctl call
+
+If the third argument is non-null, the kernel will always error out with
+EINVAL and devices won't get revoked.
+
+Reported-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
+Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ src/login/logind-session-device.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/login/logind-session-device.c b/src/login/logind-session-device.c
+index 932abb8..c2de862 100644
+--- a/src/login/logind-session-device.c
++++ b/src/login/logind-session-device.c
+@@ -107,7 +107,7 @@ static int sd_eviocrevoke(int fd) {
+
+ assert(fd >= 0);
+
+- r = ioctl(fd, EVIOCREVOKE, 1);
++ r = ioctl(fd, EVIOCREVOKE, NULL);
+ if (r < 0) {
+ r = -errno;
+ if (r == -EINVAL && !warned) {
+--
+2.3.0
+
diff --git a/0019-sd-bus-fix-handling-of-double-parameters-in-sd_bus_m.patch b/0019-sd-bus-fix-handling-of-double-parameters-in-sd_bus_m.patch
new file mode 100644
index 000000000000..35fd52ec1f3d
--- /dev/null
+++ b/0019-sd-bus-fix-handling-of-double-parameters-in-sd_bus_m.patch
@@ -0,0 +1,91 @@
+From 6cd37a5e59e01f4a2b3f02d9746b3e7417d424e6 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 23 Jan 2015 01:13:09 +0100
+Subject: [PATCH] sd-bus: fix handling of double parameters in
+ sd_bus_message_append()
+
+We really need to use va_arg() with the right type here as uint64_t and
+double might have the same size, but are passed differently as
+arguments.
+---
+ src/libsystemd/sd-bus/bus-message.c | 11 +++++++++--
+ src/libsystemd/sd-bus/test-bus-marshal.c | 13 +++++++++++++
+ 2 files changed, 22 insertions(+), 2 deletions(-)
+
+diff --git a/src/libsystemd/sd-bus/bus-message.c b/src/libsystemd/sd-bus/bus-message.c
+index 23076d2..9ae65be 100644
+--- a/src/libsystemd/sd-bus/bus-message.c
++++ b/src/libsystemd/sd-bus/bus-message.c
+@@ -2350,8 +2350,7 @@ int bus_message_append_ap(
+ }
+
+ case SD_BUS_TYPE_INT64:
+- case SD_BUS_TYPE_UINT64:
+- case SD_BUS_TYPE_DOUBLE: {
++ case SD_BUS_TYPE_UINT64: {
+ uint64_t x;
+
+ x = va_arg(ap, uint64_t);
+@@ -2359,6 +2358,14 @@ int bus_message_append_ap(
+ break;
+ }
+
++ case SD_BUS_TYPE_DOUBLE: {
++ double x;
++
++ x = va_arg(ap, double);
++ r = sd_bus_message_append_basic(m, *t, &x);
++ break;
++ }
++
+ case SD_BUS_TYPE_STRING:
+ case SD_BUS_TYPE_OBJECT_PATH:
+ case SD_BUS_TYPE_SIGNATURE: {
+diff --git a/src/libsystemd/sd-bus/test-bus-marshal.c b/src/libsystemd/sd-bus/test-bus-marshal.c
+index 8cefc7a..d95a03c 100644
+--- a/src/libsystemd/sd-bus/test-bus-marshal.c
++++ b/src/libsystemd/sd-bus/test-bus-marshal.c
+@@ -22,6 +22,7 @@
+ #include <assert.h>
+ #include <stdlib.h>
+ #include <byteswap.h>
++#include <math.h>
+
+ #ifdef HAVE_GLIB
+ #include <gio/gio.h>
+@@ -94,6 +95,8 @@ int main(int argc, char *argv[]) {
+ _cleanup_fclose_ FILE *ms = NULL;
+ size_t first_size = 0, second_size = 0, third_size = 0;
+ _cleanup_bus_unref_ sd_bus *bus = NULL;
++ double dbl;
++ uint64_t u64;
+
+ r = sd_bus_default_system(&bus);
+ if (r < 0)
+@@ -145,6 +148,9 @@ int main(int argc, char *argv[]) {
+ r = sd_bus_message_append_array(m, 'u', NULL, 0);
+ assert_se(r >= 0);
+
++ r = sd_bus_message_append(m, "a(stdo)", 1, "foo", 815ULL, 47.0, "/");
++ assert_se(r >= 0);
++
+ r = bus_message_seal(m, 4711, 0);
+ assert_se(r >= 0);
+
+@@ -268,6 +274,13 @@ int main(int argc, char *argv[]) {
+ assert_se(r > 0);
+ assert_se(sz == 0);
+
++ r = sd_bus_message_read(m, "a(stdo)", 1, &x, &u64, &dbl, &y);
++ assert_se(r > 0);
++ assert_se(streq(x, "foo"));
++ assert_se(u64 == 815ULL);
++ assert_se(fabs(dbl - 47.0) < 0.1);
++ assert_se(streq(y, "/"));
++
+ r = sd_bus_message_peek_type(m, NULL, NULL);
+ assert_se(r == 0);
+
+--
+2.3.0
+
diff --git a/0021-units-fix-all-TTY-paths-for-container-gettys.patch b/0021-units-fix-all-TTY-paths-for-container-gettys.patch
new file mode 100644
index 000000000000..aefc34311623
--- /dev/null
+++ b/0021-units-fix-all-TTY-paths-for-container-gettys.patch
@@ -0,0 +1,30 @@
+From e87bc3ef67a892e2b3dba753190675e5f9b592b5 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 27 Jan 2015 14:28:45 +0100
+Subject: [PATCH] units: fix all TTY paths for container gettys
+
+Spotted by Christian Seiler:
+
+http://lists.freedesktop.org/archives/systemd-devel/2015-January/027441.html
+---
+ units/container-getty@.service.m4.in | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/units/container-getty@.service.m4.in b/units/container-getty@.service.m4.in
+index 5120466..e126f3a 100644
+--- a/units/container-getty@.service.m4.in
++++ b/units/container-getty@.service.m4.in
+@@ -21,8 +21,8 @@ ExecStart=-/sbin/agetty --noclear --keep-baud pts/%I 115200,38400,9600 $TERM
+ Type=idle
+ Restart=always
+ RestartSec=0
+-UtmpIdentifier=%I
+-TTYPath=/dev/%I
++UtmpIdentifier=pts/%I
++TTYPath=/dev/pts/%I
+ TTYReset=yes
+ TTYVHangup=yes
+ KillMode=process
+--
+2.3.0
+
diff --git a/0024-sd-dhcp-chop-of-trailing-dot-of-DHCP-supplied-host-a.patch b/0024-sd-dhcp-chop-of-trailing-dot-of-DHCP-supplied-host-a.patch
new file mode 100644
index 000000000000..113d20ef497d
--- /dev/null
+++ b/0024-sd-dhcp-chop-of-trailing-dot-of-DHCP-supplied-host-a.patch
@@ -0,0 +1,55 @@
+From f50f01f4b738f2f00b30d0e02e8cf54ab99a9f27 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 28 Jan 2015 17:47:37 +0100
+Subject: [PATCH] sd-dhcp: chop of trailing dot of DHCP supplied host and
+ domain nams
+
+---
+ src/libsystemd-network/sd-dhcp-lease.c | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+diff --git a/src/libsystemd-network/sd-dhcp-lease.c b/src/libsystemd-network/sd-dhcp-lease.c
+index 00fef16..34aa36c 100644
+--- a/src/libsystemd-network/sd-dhcp-lease.c
++++ b/src/libsystemd-network/sd-dhcp-lease.c
+@@ -497,11 +497,20 @@ int dhcp_lease_parse_options(uint8_t code, uint8_t len, const uint8_t *option,
+ case DHCP_OPTION_DOMAIN_NAME:
+ {
+ _cleanup_free_ char *domainname = NULL;
++ char *e;
+
+ r = lease_parse_string(option, len, &domainname);
+ if (r < 0)
+ return r;
+
++ /* Chop off trailing dot of domain name that some DHCP
++ * servers send us back. Internally we want to store
++ * host names without trailing dots and
++ * host_name_is_valid() doesn't accept them. */
++ e = endswith(domainname, ".");
++ if (e)
++ *e = 0;
++
+ if (!hostname_is_valid(domainname) || is_localhost(domainname))
+ break;
+
+@@ -514,11 +523,16 @@ int dhcp_lease_parse_options(uint8_t code, uint8_t len, const uint8_t *option,
+ case DHCP_OPTION_HOST_NAME:
+ {
+ _cleanup_free_ char *hostname = NULL;
++ char *e;
+
+ r = lease_parse_string(option, len, &hostname);
+ if (r < 0)
+ return r;
+
++ e = endswith(hostname, ".");
++ if (e)
++ *e = 0;
++
+ if (!hostname_is_valid(hostname) || is_localhost(hostname))
+ break;
+
+--
+2.3.0
+
diff --git a/0025-logind-handle-closing-sessions-over-daemon-restarts.patch b/0025-logind-handle-closing-sessions-over-daemon-restarts.patch
new file mode 100644
index 000000000000..01d8507f2806
--- /dev/null
+++ b/0025-logind-handle-closing-sessions-over-daemon-restarts.patch
@@ -0,0 +1,103 @@
+From be94d95499bf9c63fe9331e9b9ecc64f32fe9d79 Mon Sep 17 00:00:00 2001
+From: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Wed, 28 Jan 2015 18:14:01 +0100
+Subject: [PATCH] logind: handle closing sessions over daemon restarts
+
+It may happen that you have several sessions with the same VT:
+
+ - Open a session c1 which leaves some processes around, and log out. The
+ session will stay in State=closing and become Active=no.
+ - Log back in on the same VT, get a new session "c2" which is State=active and
+ Active=yes.
+
+When restarting logind after that, the first session that matches the current
+VT becomes Active=yes, which will be c1; c2 thus is Active=no and does not get
+the usual polkit/device ACL privileges.
+
+Restore the "closing" state in session_load(), to avoid treating all restored
+sessions as State=active. In seat_active_vt_changed(), prefer active sessions
+over closing ones if more than one session matches the current VT.
+
+Finally, fix the confusing comment in session_load() and explain it a bit
+better.
+
+https://launchpad.net/bugs/1415104
+---
+ src/login/logind-seat.c | 14 +++++++++++++-
+ src/login/logind-session.c | 11 +++++++++--
+ 2 files changed, 22 insertions(+), 3 deletions(-)
+
+diff --git a/src/login/logind-seat.c b/src/login/logind-seat.c
+index 197138c..126c5b8 100644
+--- a/src/login/logind-seat.c
++++ b/src/login/logind-seat.c
+@@ -340,12 +340,24 @@ int seat_active_vt_changed(Seat *s, unsigned int vtnr) {
+
+ log_debug("VT changed to %u", vtnr);
+
++ /* we might have earlier closing sessions on the same VT, so try to
++ * find a running one first */
+ LIST_FOREACH(sessions_by_seat, i, s->sessions)
+- if (i->vtnr == vtnr) {
++ if (i->vtnr == vtnr && !i->stopping) {
+ new_active = i;
+ break;
+ }
+
++ if (!new_active) {
++ /* no running one? then we can't decide which one is the
++ * active one, let the first one win */
++ LIST_FOREACH(sessions_by_seat, i, s->sessions)
++ if (i->vtnr == vtnr) {
++ new_active = i;
++ break;
++ }
++ }
++
+ r = seat_set_active(s, new_active);
+ manager_spawn_autovt(s->manager, vtnr);
+
+diff --git a/src/login/logind-session.c b/src/login/logind-session.c
+index a51f9f3..a02a537 100644
+--- a/src/login/logind-session.c
++++ b/src/login/logind-session.c
+@@ -301,6 +301,7 @@ int session_load(Session *s) {
+ _cleanup_free_ char *remote = NULL,
+ *seat = NULL,
+ *vtnr = NULL,
++ *state = NULL,
+ *pos = NULL,
+ *leader = NULL,
+ *type = NULL,
+@@ -327,6 +328,7 @@ int session_load(Session *s) {
+ "SERVICE", &s->service,
+ "DESKTOP", &s->desktop,
+ "VTNR", &vtnr,
++ "STATE", &state,
+ "POS", &pos,
+ "LEADER", &leader,
+ "TYPE", &type,
+@@ -415,13 +417,18 @@ int session_load(Session *s) {
+ s->class = c;
+ }
+
++ if (state && streq(state, "closing"))
++ s->stopping = true;
++
+ if (s->fifo_path) {
+ int fd;
+
+ /* If we open an unopened pipe for reading we will not
+ get an EOF. to trigger an EOF we hence open it for
+- reading, but close it right-away which then will
+- trigger the EOF. */
++ writing, but close it right away which then will
++ trigger the EOF. This will happen immediately if no
++ other process has the FIFO open for writing, i. e.
++ when the session died before logind (re)started. */
+
+ fd = session_create_fifo(s);
+ safe_close(fd);
+--
+2.3.0
+
diff --git a/0026-core-make-setting-the-shutdown-watchdog-configuratio.patch b/0026-core-make-setting-the-shutdown-watchdog-configuratio.patch
new file mode 100644
index 000000000000..2f3758b1ec20
--- /dev/null
+++ b/0026-core-make-setting-the-shutdown-watchdog-configuratio.patch
@@ -0,0 +1,27 @@
+From 81f5fc2d43800c23a4440ed94cfe38d579e896fe Mon Sep 17 00:00:00 2001
+From: Maxim Mikityanskiy <maxtram95@gmail.com>
+Date: Thu, 29 Jan 2015 01:23:07 +0100
+Subject: [PATCH] core: make setting the shutdown watchdog configuration via
+ dbus work
+
+https://bugs.freedesktop.org/show_bug.cgi?id=88284
+---
+ src/core/main.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/core/main.c b/src/core/main.c
+index ce37c59..0df1f64 100644
+--- a/src/core/main.c
++++ b/src/core/main.c
+@@ -1829,6 +1829,8 @@ int main(int argc, char *argv[]) {
+ finish:
+ pager_close();
+
++ if (m)
++ arg_shutdown_watchdog = m->shutdown_watchdog;
+ m = manager_free(m);
+
+ for (j = 0; j < ELEMENTSOF(arg_default_rlimit); j++) {
+--
+2.3.0
+
diff --git a/0027-sd-rtnl-don-t-fail-event-handler-when-callback-fails.patch b/0027-sd-rtnl-don-t-fail-event-handler-when-callback-fails.patch
new file mode 100644
index 000000000000..a03367d08536
--- /dev/null
+++ b/0027-sd-rtnl-don-t-fail-event-handler-when-callback-fails.patch
@@ -0,0 +1,67 @@
+From 233ba5c3a0f73e01fe6149fd8c377826a83c2a0a Mon Sep 17 00:00:00 2001
+From: Tom Gundersen <teg@jklm.no>
+Date: Thu, 29 Jan 2015 07:26:58 +0100
+Subject: [PATCH] sd-rtnl: don't fail event handler when callback fails
+
+As in sd-bus, simply log at debug level when a callback fails, but don't fail the event handler.
+Otherwise any error returned by any callback will disable the rtnl event handler. We should
+only do that on serious internal errors in sd-rtnl that we know cannot be recovered from.
+---
+ src/libsystemd/sd-rtnl/sd-rtnl.c | 20 +++++++++++++++-----
+ 1 file changed, 15 insertions(+), 5 deletions(-)
+
+diff --git a/src/libsystemd/sd-rtnl/sd-rtnl.c b/src/libsystemd/sd-rtnl/sd-rtnl.c
+index 5778ea5..7f1ec30 100644
+--- a/src/libsystemd/sd-rtnl/sd-rtnl.c
++++ b/src/libsystemd/sd-rtnl/sd-rtnl.c
+@@ -379,9 +379,12 @@ static int process_timeout(sd_rtnl *rtnl) {
+ hashmap_remove(rtnl->reply_callbacks, &c->serial);
+
+ r = c->callback(rtnl, m, c->userdata);
++ if (r < 0)
++ log_debug_errno(r, "sd-rtnl: timedout callback failed: %m");
++
+ free(c);
+
+- return r < 0 ? r : 1;
++ return 1;
+ }
+
+ static int process_reply(sd_rtnl *rtnl, sd_rtnl_message *m) {
+@@ -404,9 +407,12 @@ static int process_reply(sd_rtnl *rtnl, sd_rtnl_message *m) {
+ prioq_remove(rtnl->reply_callbacks_prioq, c, &c->prioq_idx);
+
+ r = c->callback(rtnl, m, c->userdata);
++ if (r < 0)
++ log_debug_errno(r, "sd-rtnl: callback failed: %m");
++
+ free(c);
+
+- return r;
++ return 1;
+ }
+
+ static int process_match(sd_rtnl *rtnl, sd_rtnl_message *m) {
+@@ -424,12 +430,16 @@ static int process_match(sd_rtnl *rtnl, sd_rtnl_message *m) {
+ LIST_FOREACH(match_callbacks, c, rtnl->match_callbacks) {
+ if (type == c->type) {
+ r = c->callback(rtnl, m, c->userdata);
+- if (r != 0)
+- return r;
++ if (r != 0) {
++ if (r < 0)
++ log_debug_errno(r, "sd-rtnl: match callback failed: %m");
++
++ break;
++ }
+ }
+ }
+
+- return 0;
++ return 1;
+ }
+
+ static int process_running(sd_rtnl *rtnl, sd_rtnl_message **ret) {
+--
+2.3.0
+
diff --git a/0029-config_parse_set_status-put-signals-in-the-correct-s.patch b/0029-config_parse_set_status-put-signals-in-the-correct-s.patch
new file mode 100644
index 000000000000..a0553469929f
--- /dev/null
+++ b/0029-config_parse_set_status-put-signals-in-the-correct-s.patch
@@ -0,0 +1,53 @@
+From 615938651d3a4fd9253b08da00db22d451a8cef8 Mon Sep 17 00:00:00 2001
+From: Michael Olbrich <m.olbrich@pengutronix.de>
+Date: Fri, 30 Jan 2015 09:49:55 +0100
+Subject: [PATCH] config_parse_set_status: put signals in the correct set
+
+This was broken when the code was rearranged in "1e2fd62d70ff
+core/load-fragment.c: correct argument sign and split up long lines"
+---
+ src/core/load-fragment.c | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c
+index 98794bf..90bf563 100644
+--- a/src/core/load-fragment.c
++++ b/src/core/load-fragment.c
+@@ -3150,6 +3150,7 @@ int config_parse_set_status(
+ FOREACH_WORD(word, l, rvalue, state) {
+ _cleanup_free_ char *temp;
+ int val;
++ Set **set;
+
+ temp = strndup(word, l);
+ if (!temp)
+@@ -3162,21 +3163,23 @@ int config_parse_set_status(
+ if (val <= 0) {
+ log_syntax(unit, LOG_ERR, filename, line, -val,
+ "Failed to parse value, ignoring: %s", word);
+- return 0;
++ continue;
+ }
++ set = &status_set->signal;
+ } else {
+ if (val < 0 || val > 255) {
+ log_syntax(unit, LOG_ERR, filename, line, ERANGE,
+ "Value %d is outside range 0-255, ignoring", val);
+ continue;
+ }
++ set = &status_set->status;
+ }
+
+- r = set_ensure_allocated(&status_set->status, NULL);
++ r = set_ensure_allocated(set, NULL);
+ if (r < 0)
+ return log_oom();
+
+- r = set_put(status_set->status, INT_TO_PTR(val));
++ r = set_put(*set, INT_TO_PTR(val));
+ if (r < 0) {
+ log_syntax(unit, LOG_ERR, filename, line, -r,
+ "Unable to store: %s", word);
+--
+2.3.0
+
diff --git a/0030-network-address-test-network-avoid-undefined-behavio.patch b/0030-network-address-test-network-avoid-undefined-behavio.patch
new file mode 100644
index 000000000000..640fa5a17c81
--- /dev/null
+++ b/0030-network-address-test-network-avoid-undefined-behavio.patch
@@ -0,0 +1,44 @@
+From 6cb8e687f038424ef54b5c5c3c433be974fbe371 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Mon, 2 Feb 2015 21:32:28 -0500
+Subject: [PATCH] network-address,test-network: avoid undefined behaviour
+
+---
+ src/network/networkd-address.c | 4 ++++
+ src/network/test-network.c | 3 +--
+ 2 files changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c
+index ce0e923..47033ac 100644
+--- a/src/network/networkd-address.c
++++ b/src/network/networkd-address.c
+@@ -592,6 +592,10 @@ bool address_equal(Address *a1, Address *a2) {
+ case AF_INET:
+ if (a1->prefixlen != a2->prefixlen)
+ return false;
++ else if (a1->prefixlen == 0)
++ /* make sure we don't try to shift by 32.
++ * See ISO/IEC 9899:TC3 ยง 6.5.7.3. */
++ return true;
+ else {
+ uint32_t b1, b2;
+
+diff --git a/src/network/test-network.c b/src/network/test-network.c
+index ea9f938..b4a7be0 100644
+--- a/src/network/test-network.c
++++ b/src/network/test-network.c
+@@ -158,10 +158,9 @@ static void test_address_equality(void) {
+ assert_se(address_equal(a1, a2));
+
+ assert_se(inet_pton(AF_INET, "192.168.3.9", &a1->in_addr.in));
+- assert_se(!address_equal(a1, a2));
++ assert_se(address_equal(a1, a2));
+ assert_se(inet_pton(AF_INET, "192.168.3.9", &a2->in_addr.in));
+ assert_se(address_equal(a1, a2));
+-
+ a1->prefixlen = 10;
+ assert_se(!address_equal(a1, a2));
+ a2->prefixlen = 10;
+--
+2.3.0
+
diff --git a/0033-core-disarm-shutdown-watchdog-if-we-fail-to-set-time.patch b/0033-core-disarm-shutdown-watchdog-if-we-fail-to-set-time.patch
new file mode 100644
index 000000000000..a10627aabdf6
--- /dev/null
+++ b/0033-core-disarm-shutdown-watchdog-if-we-fail-to-set-time.patch
@@ -0,0 +1,31 @@
+From c2cc6b9aefb6f2085d3ca7eb9743093a17f751da Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Thu, 12 Feb 2015 12:28:48 +0100
+Subject: [PATCH] core: disarm shutdown watchdog if we fail to set timeout
+
+Better safe than sorry, if drivers are stupid, and reset immediately on
+device closing if the timeout could not be initialized.
+
+https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=777735
+---
+ src/core/main.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/core/main.c b/src/core/main.c
+index 0749f04..ba2de85 100644
+--- a/src/core/main.c
++++ b/src/core/main.c
+@@ -2021,8 +2021,8 @@ finish:
+ /* If we reboot let's set the shutdown
+ * watchdog and tell the shutdown binary to
+ * repeatedly ping it */
+- watchdog_set_timeout(&arg_shutdown_watchdog);
+- watchdog_close(false);
++ r = watchdog_set_timeout(&arg_shutdown_watchdog);
++ watchdog_close(r < 0);
+
+ /* Tell the binary how often to ping, ignore failure */
+ if (asprintf(&e, "WATCHDOG_USEC="USEC_FMT, arg_shutdown_watchdog) > 0)
+--
+2.3.0
+
diff --git a/0034-exit-on-idle-only-exit-if-actually-idle.patch b/0034-exit-on-idle-only-exit-if-actually-idle.patch
new file mode 100644
index 000000000000..3a22433cea51
--- /dev/null
+++ b/0034-exit-on-idle-only-exit-if-actually-idle.patch
@@ -0,0 +1,29 @@
+From a8ba6cd15d3a5edf1f9fbb4fd08dc428c3939072 Mon Sep 17 00:00:00 2001
+From: Tom Gundersen <teg@jklm.no>
+Date: Fri, 13 Feb 2015 16:20:45 +0100
+Subject: [PATCH] exit-on-idle: only exit if actually idle
+
+sd_event_wait() returning 0 usually means that it timed out, which means it must
+have been idle. However, sd_event_wait() may return 0 in case an event was triggered
+but it turned out there was nothing to do. Make the check for idle explicit to avoid
+this edge-case.
+---
+ src/libsystemd/sd-bus/bus-util.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/libsystemd/sd-bus/bus-util.c b/src/libsystemd/sd-bus/bus-util.c
+index c9d8713..52d4ebe 100644
+--- a/src/libsystemd/sd-bus/bus-util.c
++++ b/src/libsystemd/sd-bus/bus-util.c
+@@ -123,7 +123,7 @@ int bus_event_loop_with_idle(
+ if (r < 0)
+ return r;
+
+- if (r == 0 && !exiting) {
++ if (r == 0 && !exiting && idle) {
+
+ r = sd_bus_try_close(bus);
+ if (r == -EBUSY)
+--
+2.3.0
+
diff --git a/PKGBUILD b/PKGBUILD
index 174b21173c46..36f63b969beb 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -7,7 +7,7 @@
pkgbase=systemd-selinux
pkgname=('systemd-selinux' 'libsystemd-selinux' 'systemd-sysvcompat-selinux')
pkgver=218
-pkgrel=1
+pkgrel=2
arch=('i686' 'x86_64')
url="http://www.freedesktop.org/wiki/Software/systemd"
groups=('selinux')
@@ -19,11 +19,56 @@ options=('strip' 'debug')
source=("http://www.freedesktop.org/software/${pkgname/-selinux}/${pkgname/-selinux}-$pkgver.tar.xz"
'initcpio-hook-udev'
'initcpio-install-systemd'
- 'initcpio-install-udev')
+ 'initcpio-install-udev'
+ 0001-journal-fix-dangling-else-ambiguity.patch
+ 0002-nspawn-properly-validate-machine-names.patch
+ 0003-systemctl-fix-argument-handling-when-invoked-as-shut.patch
+ 0004-systemctl-properly-iterate-through-service-array-whe.patch
+ 0005-nss-myhostname-always-will-in-canonical-hostname-fie.patch
+ 0010-log-fix-log_full_errno-with-custom-facilities.patch
+ 0014-timesyncd-consider-too-long-packets-as-invalid.patch
+ 0016-logind-fix-sd_eviocrevoke-ioctl-call.patch
+ 0019-sd-bus-fix-handling-of-double-parameters-in-sd_bus_m.patch
+ 0021-units-fix-all-TTY-paths-for-container-gettys.patch
+ 0024-sd-dhcp-chop-of-trailing-dot-of-DHCP-supplied-host-a.patch
+ 0025-logind-handle-closing-sessions-over-daemon-restarts.patch
+ 0026-core-make-setting-the-shutdown-watchdog-configuratio.patch
+ 0027-sd-rtnl-don-t-fail-event-handler-when-callback-fails.patch
+ 0029-config_parse_set_status-put-signals-in-the-correct-s.patch
+ 0030-network-address-test-network-avoid-undefined-behavio.patch
+ 0033-core-disarm-shutdown-watchdog-if-we-fail-to-set-time.patch
+ 0034-exit-on-idle-only-exit-if-actually-idle.patch)
md5sums=('4e2c511b0a7932d7fc9d79822273aac6'
'90ea67a7bb237502094914622a39e281'
'c9db3010602913559295de3481019681'
- 'bde43090d4ac0ef048e3eaee8202a407')
+ 'bde43090d4ac0ef048e3eaee8202a407'
+ '22920ff32e345a26a9c05662ec274314'
+ '6960b43aaec4f899fdf0fe87d0457901'
+ '715cefd0e803d8b441811688fd4da1c3'
+ '3bb57f2812572ee999928ba33b489afe'
+ '5d42fda1f10c02861ee454277b516716'
+ 'a079c6e5c8d0184adf47794aaf338ac4'
+ 'c9b4e7bff3d1c073852c3d1b3bb8002e'
+ 'ae4d820582570ceb7b7c80b6810596f1'
+ '5b212435622f69c2a24b01ef7380bc94'
+ '0523c9ae27abdd30b847625b1c9c7a03'
+ 'c0d236b41dd4afad3f91dee72bb296a8'
+ '25e191463fb877fd5dabecb95f15ee8f'
+ '5911ef7d3ab5c5a06076fdea221ea27e'
+ 'ab7baf675e224cf19b9194fc1e4ea5ff'
+ '1d6cb563b3864fd8d724982bc2007f16'
+ '529c4fba7e0a709fda9e108e658e76c3'
+ '9d0d909507294afb879965e74fef79c8'
+ 'c0b68cefe7f00ea5ec856c64f799cca4')
+
+prepare() {
+ cd "${pkgname/-selinux}-$pkgver"
+
+ for p in "${source[@]}"; do
+ [[ $p = *.patch ]] || continue
+ patch -Np1 <"../$p"
+ done
+}
build() {
cd "${pkgname/-selinux}-$pkgver"
diff --git a/systemd.install b/systemd.install
index 8957a3336fea..3e510c5361e9 100644
--- a/systemd.install
+++ b/systemd.install
@@ -147,11 +147,7 @@ _216_2_changes() {
}
post_install() {
- # because systemd can't sanely manage this meanial task...
- uuidgen | {
- read
- echo "${REPLY//-}">etc/machine-id
- }
+ systemd-machine-id-setup
post_common "$@"