commit:     35dcfcc83b7e325672f9167b5417d67deb4e3270
Author:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
AuthorDate: Sun Aug 11 16:27:41 2019 +0000
Commit:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
CommitDate: Sun Aug 11 16:27:41 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=35dcfcc8

sys-apps/systemd: backport fixes

Closes: https://bugs.gentoo.org/691232
Closes: https://bugs.gentoo.org/691280
Closes: https://bugs.gentoo.org/691502
Package-Manager: Portage-2.3.71, Repoman-2.3.16_p24
Signed-off-by: Mike Gilbert <floppym <AT> gentoo.org>

 sys-apps/systemd/files/243-rc1-cryptsetup.patch    | 148 +++++++++++++++++++++
 ...243-rc1-revert-logind-remove-unused-check.patch |  31 +++++
 .../systemd/files/243-rc1-udev-properties.patch    |  53 ++++++++
 ...243_rc1-r1.ebuild => systemd-243_rc1-r2.ebuild} |   3 +
 4 files changed, 235 insertions(+)

diff --git a/sys-apps/systemd/files/243-rc1-cryptsetup.patch 
b/sys-apps/systemd/files/243-rc1-cryptsetup.patch
new file mode 100644
index 00000000000..e922d4d29cb
--- /dev/null
+++ b/sys-apps/systemd/files/243-rc1-cryptsetup.patch
@@ -0,0 +1,148 @@
+From f4ea8432e67110b73b07dd0e47a5339d83b350fb Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <[email protected]>
+Date: Wed, 31 Jul 2019 09:38:15 +0200
+Subject: [PATCH] cryptsetup-generator: fix coverity issue
+
+Fixes coverity issue 1403772
+---
+ src/cryptsetup/cryptsetup-generator.c | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/src/cryptsetup/cryptsetup-generator.c 
b/src/cryptsetup/cryptsetup-generator.c
+index c51bb9ae189..960f4762b7d 100644
+--- a/src/cryptsetup/cryptsetup-generator.c
++++ b/src/cryptsetup/cryptsetup-generator.c
+@@ -46,30 +46,30 @@ STATIC_DESTRUCTOR_REGISTER(arg_disks, hashmap_freep);
+ STATIC_DESTRUCTOR_REGISTER(arg_default_options, freep);
+ STATIC_DESTRUCTOR_REGISTER(arg_default_keyfile, freep);
+ 
+-static int split_keyspec(const char *keyspec, char **keyfile, char **keydev) {
++static int split_keyspec(const char *keyspec, char **ret_keyfile, char 
**ret_keydev) {
+         _cleanup_free_ char *kfile = NULL, *kdev = NULL;
+-        char *c;
++        const char *c;
+ 
+         assert(keyspec);
+-        assert(keyfile);
+-        assert(keydev);
++        assert(ret_keyfile);
++        assert(ret_keydev);
+ 
+         c = strrchr(keyspec, ':');
+         if (c) {
+                 kfile = strndup(keyspec, c-keyspec);
+                 kdev = strdup(c + 1);
+-                if (!*kfile || !*kdev)
++                if (!kfile || !kdev)
+                         return log_oom();
+         } else {
+                 /* No keydev specified */
+                 kfile = strdup(keyspec);
+                 kdev = NULL;
+-                if (!*kfile)
++                if (!kfile)
+                         return log_oom();
+         }
+ 
+-        *keyfile = TAKE_PTR(kfile);
+-        *keydev = TAKE_PTR(kdev);
++        *ret_keyfile = TAKE_PTR(kfile);
++        *ret_keydev = TAKE_PTR(kdev);
+ 
+         return 0;
+ }
+From 5d2100dc4c32abbce4109e75cbfbbef6e1b2b7b1 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <[email protected]>
+Date: Thu, 1 Aug 2019 08:13:13 +0200
+Subject: [PATCH] cryptsetup: use unabbrieviated variable names
+
+Now that "ret_" has been added to the output variables, we can name
+the internal variables without artificial abbrevs.
+---
+ src/cryptsetup/cryptsetup-generator.c | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/src/cryptsetup/cryptsetup-generator.c 
b/src/cryptsetup/cryptsetup-generator.c
+index 960f4762b7d..84483143945 100644
+--- a/src/cryptsetup/cryptsetup-generator.c
++++ b/src/cryptsetup/cryptsetup-generator.c
+@@ -47,7 +47,7 @@ STATIC_DESTRUCTOR_REGISTER(arg_default_options, freep);
+ STATIC_DESTRUCTOR_REGISTER(arg_default_keyfile, freep);
+ 
+ static int split_keyspec(const char *keyspec, char **ret_keyfile, char 
**ret_keydev) {
+-        _cleanup_free_ char *kfile = NULL, *kdev = NULL;
++        _cleanup_free_ char *keyfile = NULL, *keydev = NULL;
+         const char *c;
+ 
+         assert(keyspec);
+@@ -56,20 +56,20 @@ static int split_keyspec(const char *keyspec, char 
**ret_keyfile, char **ret_key
+ 
+         c = strrchr(keyspec, ':');
+         if (c) {
+-                kfile = strndup(keyspec, c-keyspec);
+-                kdev = strdup(c + 1);
+-                if (!kfile || !kdev)
++                keyfile = strndup(keyspec, c-keyspec);
++                keydev = strdup(c + 1);
++                if (!keyfile || !keydev)
+                         return log_oom();
+         } else {
+                 /* No keydev specified */
+-                kfile = strdup(keyspec);
+-                kdev = NULL;
+-                if (!kfile)
++                keyfile = strdup(keyspec);
++                keydev = NULL;
++                if (!keyfile)
+                         return log_oom();
+         }
+ 
+-        *ret_keyfile = TAKE_PTR(kfile);
+-        *ret_keydev = TAKE_PTR(kdev);
++        *ret_keyfile = TAKE_PTR(keyfile);
++        *ret_keydev = TAKE_PTR(keydev);
+ 
+         return 0;
+ }
+From fef716b28be6e866b8afe995805d5ebe2af6bbfa Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <[email protected]>
+Date: Thu, 1 Aug 2019 08:15:43 +0200
+Subject: [PATCH] cryptsetup: don't assert on variable which is optional
+
+https://github.com/systemd/systemd/commit/50d2eba27b9bfc77ef6b40e5721713846815418b#commitcomment-34519739
+
+In add_crypttab_devices() split_keyspec is called on the keyfile argument,
+which may be NULL.
+---
+ src/cryptsetup/cryptsetup-generator.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/src/cryptsetup/cryptsetup-generator.c 
b/src/cryptsetup/cryptsetup-generator.c
+index 84483143945..4815ded753f 100644
+--- a/src/cryptsetup/cryptsetup-generator.c
++++ b/src/cryptsetup/cryptsetup-generator.c
+@@ -50,10 +50,14 @@ static int split_keyspec(const char *keyspec, char 
**ret_keyfile, char **ret_key
+         _cleanup_free_ char *keyfile = NULL, *keydev = NULL;
+         const char *c;
+ 
+-        assert(keyspec);
+         assert(ret_keyfile);
+         assert(ret_keydev);
+ 
++        if (!keyspec) {
++                *ret_keyfile = *ret_keydev = NULL;
++                return 0;
++        }
++
+         c = strrchr(keyspec, ':');
+         if (c) {
+                 keyfile = strndup(keyspec, c-keyspec);
+@@ -567,7 +571,7 @@ static int add_crypttab_devices(void) {
+         }
+ 
+         for (;;) {
+-                _cleanup_free_ char *line = NULL, *name = NULL, *device = 
NULL, *keydev = NULL, *keyfile = NULL, *keyspec = NULL, *options = NULL;
++                _cleanup_free_ char *line = NULL, *name = NULL, *device = 
NULL, *keyspec = NULL, *options = NULL, *keyfile = NULL, *keydev = NULL;
+                 crypto_device *d = NULL;
+                 char *l, *uuid;
+                 int k;

diff --git 
a/sys-apps/systemd/files/243-rc1-revert-logind-remove-unused-check.patch 
b/sys-apps/systemd/files/243-rc1-revert-logind-remove-unused-check.patch
new file mode 100644
index 00000000000..30a20c17661
--- /dev/null
+++ b/sys-apps/systemd/files/243-rc1-revert-logind-remove-unused-check.patch
@@ -0,0 +1,31 @@
+From 18f689b1fa35c53580da62bfce875fb15d20d448 Mon Sep 17 00:00:00 2001
+From: Yu Watanabe <[email protected]>
+Date: Sun, 4 Aug 2019 05:43:34 +0900
+Subject: [PATCH] Revert "logind: remove unused check"
+
+This reverts commit f2330acda408a34451d5e15380fcdd225a672473.
+
+Fixes #13255.
+---
+ src/login/logind-action.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/src/login/logind-action.c b/src/login/logind-action.c
+index fa92f4870a2..140953eec10 100644
+--- a/src/login/logind-action.c
++++ b/src/login/logind-action.c
+@@ -61,8 +61,12 @@ int manager_handle_action(
+         int r;
+ 
+         assert(m);
+-        /* We should be called only with valid actions different than 
HANDLE_IGNORE. */
+-        assert(handle > HANDLE_IGNORE && handle < _HANDLE_ACTION_MAX);
++
++        /* If the key handling is turned off, don't do anything */
++        if (handle == HANDLE_IGNORE) {
++                log_debug("Refusing operation, as it is turned off.");
++                return 0;
++        }
+ 
+         if (inhibit_key == INHIBIT_HANDLE_LID_SWITCH) {
+                 /* If the last system suspend or startup is too close,

diff --git a/sys-apps/systemd/files/243-rc1-udev-properties.patch 
b/sys-apps/systemd/files/243-rc1-udev-properties.patch
new file mode 100644
index 00000000000..5e2ffa1868a
--- /dev/null
+++ b/sys-apps/systemd/files/243-rc1-udev-properties.patch
@@ -0,0 +1,53 @@
+From 41c81c4a626fda0969fc09ddeb8addb7aae6e4d9 Mon Sep 17 00:00:00 2001
+From: Yu Watanabe <[email protected]>
+Date: Sun, 4 Aug 2019 06:08:06 +0900
+Subject: [PATCH] udev: do not try to import properties on commented out lines
+
+Fixes #13257.
+---
+ src/udev/udev-rules.c | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c
+index 3473a7eb7e5..1642f105354 100644
+--- a/src/udev/udev-rules.c
++++ b/src/udev/udev-rules.c
+@@ -1401,8 +1401,10 @@ static int get_property_from_string(char *line, char 
**ret_key, char **ret_value
+         key = skip_leading_chars(line, NULL);
+ 
+         /* comment or empty line */
+-        if (IN_SET(key[0], '#', '\0'))
++        if (IN_SET(key[0], '#', '\0')) {
++                *ret_key = *ret_value = NULL;
+                 return 0;
++        }
+ 
+         /* split key/value */
+         val = strchr(key, '=');
+@@ -1429,7 +1431,7 @@ static int get_property_from_string(char *line, char 
**ret_key, char **ret_value
+ 
+         *ret_key = key;
+         *ret_value = val;
+-        return 0;
++        return 1;
+ }
+ 
+ static int import_parent_into_properties(sd_device *dev, const char *filter) {
+@@ -1681,6 +1683,8 @@ static int udev_rule_apply_token_to_event(
+                                                      line);
+                                 continue;
+                         }
++                        if (r == 0)
++                                continue;
+ 
+                         r = device_add_property(dev, key, value);
+                         if (r < 0)
+@@ -1719,6 +1723,8 @@ static int udev_rule_apply_token_to_event(
+                                                      line);
+                                 continue;
+                         }
++                        if (r == 0)
++                                continue;
+ 
+                         r = device_add_property(dev, key, value);
+                         if (r < 0)

diff --git a/sys-apps/systemd/systemd-243_rc1-r1.ebuild 
b/sys-apps/systemd/systemd-243_rc1-r2.ebuild
similarity index 98%
rename from sys-apps/systemd/systemd-243_rc1-r1.ebuild
rename to sys-apps/systemd/systemd-243_rc1-r2.ebuild
index 34b6587a0db..d67b45ec87d 100644
--- a/sys-apps/systemd/systemd-243_rc1-r1.ebuild
+++ b/sys-apps/systemd/systemd-243_rc1-r2.ebuild
@@ -186,6 +186,9 @@ src_prepare() {
        # Add local patches here
        PATCHES+=(
                "${FILESDIR}"/243-rc1-analyze.patch
+               "${FILESDIR}"/243-rc1-cryptsetup.patch
+               "${FILESDIR}"/243-rc1-revert-logind-remove-unused-check.patch
+               "${FILESDIR}"/243-rc1-udev-properties.patch
        )
 
        if ! use vanilla; then

Reply via email to