From 38293c2b0c391a5e57d4aac1ecaa6c61b04b084f Mon Sep 17 00:00:00 2001 From: Adam Williamson Date: Tue, 27 Nov 2018 17:13:12 -0800 Subject: [PATCH] Backport PR #2610 to fix for authselect 1.0.2+ (see #1645708) --- 2610.patch | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++ freeipa.spec | 8 +++++++- 2 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 2610.patch diff --git a/2610.patch b/2610.patch new file mode 100644 index 0000000..a33cd3f --- /dev/null +++ b/2610.patch @@ -0,0 +1,55 @@ +From 349955624e55e5afe23776a2c4f269da80cf917f Mon Sep 17 00:00:00 2001 +From: Adam Williamson +Date: Tue, 27 Nov 2018 16:21:06 -0800 +Subject: [PATCH] Fix authselect invocations to work with 1.0.2 + +Since authselect 1.0.2, invoking an authselect command sequence +like this: + +['authselect', 'sssd', '', '--force'] + +does not work: authselect barfs on the empty string arg and +errors out. We must only pass a features arg if we actually have +some text to go in it. + +This broke uninstallation. + +I don't know for sure whether the fix in `restore` is needed - +it may be that `cfg[1]` is never an empty sequence - but it +seems sensible to do it just in case. + +Signed-off-by: Adam Williamson +--- + ipaplatform/redhat/authconfig.py | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +diff --git a/ipaplatform/redhat/authconfig.py b/ipaplatform/redhat/authconfig.py +index a512345202..3de42cc365 100644 +--- a/ipaplatform/redhat/authconfig.py ++++ b/ipaplatform/redhat/authconfig.py +@@ -166,7 +166,10 @@ def unconfigure( + statestore.restore_state('authselect', 'features_list') or '' + statestore.delete_state('authselect', 'mkhomedir') + +- cmd = [paths.AUTHSELECT, "select", profile, features, "--force"] ++ cmd = [paths.AUTHSELECT, "select", profile] ++ if features: ++ cmd.append(features) ++ cmd.append("--force") + ipautil.run(cmd) + + def backup(self, path): +@@ -187,9 +190,10 @@ def restore(self, path): + if cfg: + profile = cfg[0] + +- cmd = [ +- paths.AUTHSELECT, "select", profile, +- " ".join(cfg[1]), "--force"] ++ cmd = [paths.AUTHSELECT, "select", profile] ++ if cfg[1]: ++ cmd.append(" ".join(cfg[1])) ++ cmd.append("--force") + ipautil.run(cmd) + + def set_nisdomain(self, nisdomain): diff --git a/freeipa.spec b/freeipa.spec index 948550e..82c7194 100644 --- a/freeipa.spec +++ b/freeipa.spec @@ -132,7 +132,7 @@ Name: %{package_name} Version: %{IPA_VERSION} -Release: 2%{?dist} +Release: 3%{?dist} Summary: The Identity, Policy and Audit system Group: System Environment/Base @@ -140,6 +140,9 @@ License: GPLv3+ URL: http://www.freeipa.org/ Source0: https://releases.pagure.org/freeipa/freeipa-%{version}.tar.gz Source1: https://releases.pagure.org/freeipa/freeipa-%{version}.tar.gz.asc +# Fix authselect command invocation (breaks with authselect 1.0.2) +# https://github.com/freeipa/freeipa/pull/2610 +Patch0: 2610.patch # For the timestamp trick in patch application BuildRequires: diffstat BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) @@ -1733,6 +1736,9 @@ fi %changelog +* Tue Nov 27 2018 Adam Williamson - 4.7.1-3 +- Backport PR #2610 to fix for authselect 1.0.2+ (see #1645708) + * Sun Nov 11 2018 Alexander Bokovoy - 4.7.1-2 - Rebuild for krb5-1.17 (#1648673) - Bump required SSSD version to 2.0.0-4 to get back pysss.getgrouplist() API