ipa:
- Remove unused patches. - Handle new samba exception types. Resolves: RHEL-17623
This commit is contained in:
		
							parent
							
								
									4d6406a1a1
								
							
						
					
					
						commit
						2005990bae
					
				
							
								
								
									
										73
									
								
								0001-Handle-samba-exception-type-change_rhel#17623.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								0001-Handle-samba-exception-type-change_rhel#17623.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,73 @@ | |||||||
|  | From 06b4c61b4484efe2093501caf21b03f1fc14093b Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Florence Blanc-Renaud <flo@redhat.com> | ||||||
|  | Date: Thu, 19 Oct 2023 12:47:03 +0200 | ||||||
|  | Subject: [PATCH] group-add-member fails with an external member | ||||||
|  | 
 | ||||||
|  | The command ipa group-add-member --external aduser@addomain.test | ||||||
|  | fails with an internal error when used with samba 4.19. | ||||||
|  | 
 | ||||||
|  | The command internally calls samba.security.dom_sid(sid) which | ||||||
|  | used to raise a TypeError but now raises a ValueError | ||||||
|  | (commit 9abdd67 on https://github.com/samba-team/samba). | ||||||
|  | 
 | ||||||
|  | IPA source code needs to handle properly both exception types. | ||||||
|  | 
 | ||||||
|  | Fixes: https://pagure.io/freeipa/issue/9466 | ||||||
|  | 
 | ||||||
|  | Signed-off-by: Florence Blanc-Renaud <flo@redhat.com> | ||||||
|  | Reviewed-By: Rob Crittenden <rcritten@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  ipaserver/dcerpc.py | 2 +- | ||||||
|  |  1 file changed, 1 insertion(+), 1 deletion(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/ipaserver/dcerpc.py b/ipaserver/dcerpc.py
 | ||||||
|  | index c1db2f9a499..ee0a229d1f0 100644
 | ||||||
|  | --- a/ipaserver/dcerpc.py
 | ||||||
|  | +++ b/ipaserver/dcerpc.py
 | ||||||
|  | @@ -303,7 +303,7 @@ def get_domain_by_sid(self, sid, exact_match=False):
 | ||||||
|  |          # Parse sid string to see if it is really in a SID format | ||||||
|  |          try: | ||||||
|  |              test_sid = security.dom_sid(sid) | ||||||
|  | -        except TypeError:
 | ||||||
|  | +        except (TypeError, ValueError):
 | ||||||
|  |              raise errors.ValidationError(name='sid', | ||||||
|  |                                           error=_('SID is not valid')) | ||||||
|  |   | ||||||
|  | From aa3397378acf1a03fc8bbe34b9fae33e84588b34 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Florence Blanc-Renaud <flo@redhat.com> | ||||||
|  | Date: Fri, 20 Oct 2023 10:20:57 +0200 | ||||||
|  | Subject: [PATCH] Handle samba changes in samba.security.dom_sid() | ||||||
|  | 
 | ||||||
|  | samba.security.dom_sid() in 4.19 now raises ValueError instead of | ||||||
|  | TypeError. Fix the expected exception. | ||||||
|  | 
 | ||||||
|  | Related: https://pagure.io/freeipa/issue/9466 | ||||||
|  | 
 | ||||||
|  | Signed-off-by: Florence Blanc-Renaud <flo@redhat.com> | ||||||
|  | Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com> | ||||||
|  | ---
 | ||||||
|  |  ipaserver/dcerpc.py | 4 ++-- | ||||||
|  |  1 file changed, 2 insertions(+), 2 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/ipaserver/dcerpc.py b/ipaserver/dcerpc.py
 | ||||||
|  | index ee0a229d1f0..3e4c71d9976 100644
 | ||||||
|  | --- a/ipaserver/dcerpc.py
 | ||||||
|  | +++ b/ipaserver/dcerpc.py
 | ||||||
|  | @@ -97,7 +97,7 @@
 | ||||||
|  |  def is_sid_valid(sid): | ||||||
|  |      try: | ||||||
|  |          security.dom_sid(sid) | ||||||
|  | -    except TypeError:
 | ||||||
|  | +    except (TypeError, ValueError):
 | ||||||
|  |          return False | ||||||
|  |      else: | ||||||
|  |          return True | ||||||
|  | @@ -457,7 +457,7 @@ def get_trusted_domain_object_sid(self, object_name,
 | ||||||
|  |          try: | ||||||
|  |              test_sid = security.dom_sid(sid) | ||||||
|  |              return unicode(test_sid) | ||||||
|  | -        except TypeError:
 | ||||||
|  | +        except (TypeError, ValueError):
 | ||||||
|  |              raise errors.ValidationError(name=_('trusted domain object'), | ||||||
|  |                                           error=_('Trusted domain did not ' | ||||||
|  |                                                   'return a valid SID for ' | ||||||
| @ -1,98 +0,0 @@ | |||||||
| From d394afc1210a21378c018d0ff93d400a57324289 Mon Sep 17 00:00:00 2001 |  | ||||||
| From: Julien Rische <jrische@redhat.com> |  | ||||||
| Date: Mon, 25 Sep 2023 15:14:03 +0200 |  | ||||||
| Subject: [PATCH] ipa-kdb: Make AD-SIGNEDPATH optional with krb5 DAL 8 and |  | ||||||
|  older |  | ||||||
| 
 |  | ||||||
| Since krb5 1.20, the PAC is generated by default, and the AD-SIGNEDPATH |  | ||||||
| authdata is no longer generated. However, on krb5 versions prior to |  | ||||||
| 1.20, the KDC still expects an AD-SIGNEDPATH when verifying a |  | ||||||
| constrained delegation (S4U2Proxy) TGS-REQ. In IPA's case this |  | ||||||
| requirement is not needed, because the PAC signatures are already |  | ||||||
| fulfilling this role. |  | ||||||
| 
 |  | ||||||
| CentOS and RHEL downstream releases of krb5 will include the |  | ||||||
| "optional_ad_signedpath" KDB string attribute allowing to disable the |  | ||||||
| AD-SIGNEDPATH requirement in case the PAC is present. |  | ||||||
| 
 |  | ||||||
| This commit sets the "optional_ad_signedpath" string attribute to "true" |  | ||||||
| systematically on the TGS principal if the database abstract layer (DAL) |  | ||||||
| of krb5 is version 8 or older (prior to krb5 1.20). |  | ||||||
| 
 |  | ||||||
| Fixes: https://pagure.io/freeipa/issue/9448 |  | ||||||
| 
 |  | ||||||
| Signed-off-by: Julien Rische <jrische@redhat.com> |  | ||||||
| Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com> |  | ||||||
| ---
 |  | ||||||
|  daemons/ipa-kdb/ipa_kdb_principals.c | 38 ++++++++++++++++++++++++++-- |  | ||||||
|  1 file changed, 36 insertions(+), 2 deletions(-) |  | ||||||
| 
 |  | ||||||
| diff --git a/daemons/ipa-kdb/ipa_kdb_principals.c b/daemons/ipa-kdb/ipa_kdb_principals.c
 |  | ||||||
| index e95cb453c..fadb132ed 100644
 |  | ||||||
| --- a/daemons/ipa-kdb/ipa_kdb_principals.c
 |  | ||||||
| +++ b/daemons/ipa-kdb/ipa_kdb_principals.c
 |  | ||||||
| @@ -113,6 +113,10 @@ static char *std_principal_obj_classes[] = {
 |  | ||||||
|   |  | ||||||
|  #define DEFAULT_TL_DATA_CONTENT "\x00\x00\x00\x00principal@UNINITIALIZED" |  | ||||||
|   |  | ||||||
| +#ifndef KRB5_KDB_SK_OPTIONAL_AD_SIGNEDPATH
 |  | ||||||
| +#define KRB5_KDB_SK_OPTIONAL_AD_SIGNEDPATH "optional_ad_signedpath"
 |  | ||||||
| +#endif
 |  | ||||||
| +
 |  | ||||||
|  static int ipadb_ldap_attr_to_tl_data(LDAP *lcontext, LDAPMessage *le, |  | ||||||
|                                        char *attrname, |  | ||||||
|                                        krb5_tl_data **result, int *num) |  | ||||||
| @@ -178,6 +182,25 @@ done:
 |  | ||||||
|      return ret; |  | ||||||
|  } |  | ||||||
|   |  | ||||||
| +static bool
 |  | ||||||
| +is_tgs_princ(krb5_context kcontext, krb5_const_principal princ)
 |  | ||||||
| +{
 |  | ||||||
| +    krb5_data *primary;
 |  | ||||||
| +    size_t l_tgs_name;
 |  | ||||||
| +
 |  | ||||||
| +    if (2 != krb5_princ_size(kcontext, princ))
 |  | ||||||
| +        return false;
 |  | ||||||
| +
 |  | ||||||
| +    primary = krb5_princ_component(kcontext, princ, 0);
 |  | ||||||
| +
 |  | ||||||
| +    l_tgs_name = strlen(KRB5_TGS_NAME);
 |  | ||||||
| +
 |  | ||||||
| +    if (l_tgs_name != primary->length)
 |  | ||||||
| +        return false;
 |  | ||||||
| +
 |  | ||||||
| +    return 0 == memcmp(primary->data, KRB5_TGS_NAME, l_tgs_name);
 |  | ||||||
| +}
 |  | ||||||
| +
 |  | ||||||
|  static krb5_error_code ipadb_set_tl_data(krb5_db_entry *entry, |  | ||||||
|                                           krb5_int16 type, |  | ||||||
|                                           krb5_ui_2 length, |  | ||||||
| @@ -1647,11 +1670,22 @@ krb5_error_code ipadb_get_principal(krb5_context kcontext,
 |  | ||||||
|   |  | ||||||
|      /* Lookup local names and aliases first. */ |  | ||||||
|      kerr = dbget_princ(kcontext, ipactx, search_for, flags, entry); |  | ||||||
| -    if (kerr != KRB5_KDB_NOENTRY) {
 |  | ||||||
| +    if (kerr == KRB5_KDB_NOENTRY) {
 |  | ||||||
| +        kerr = dbget_alias(kcontext, ipactx, search_for, flags, entry);
 |  | ||||||
| +    }
 |  | ||||||
| +    if (kerr)
 |  | ||||||
|          return kerr; |  | ||||||
| +
 |  | ||||||
| +#if KRB5_KDB_DAL_MAJOR_VERSION <= 8
 |  | ||||||
| +    /* If TGS principal, some virtual attributes may be added */
 |  | ||||||
| +    if (is_tgs_princ(kcontext, (*entry)->princ)) {
 |  | ||||||
| +        kerr = krb5_dbe_set_string(kcontext, *entry,
 |  | ||||||
| +                                   KRB5_KDB_SK_OPTIONAL_AD_SIGNEDPATH,
 |  | ||||||
| +                                   "true");
 |  | ||||||
|      } |  | ||||||
| +#endif
 |  | ||||||
|   |  | ||||||
| -    return dbget_alias(kcontext, ipactx, search_for, flags, entry);
 |  | ||||||
| +    return kerr;
 |  | ||||||
|  } |  | ||||||
|   |  | ||||||
|  void ipadb_free_principal_e_data(krb5_context kcontext, krb5_octet *e_data) |  | ||||||
| -- 
 |  | ||||||
| 2.41.0 |  | ||||||
| 
 |  | ||||||
							
								
								
									
										7
									
								
								ipa.spec
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								ipa.spec
									
									
									
									
									
								
							| @ -189,7 +189,7 @@ | |||||||
| 
 | 
 | ||||||
| Name:           %{package_name} | Name:           %{package_name} | ||||||
| Version:        %{IPA_VERSION} | Version:        %{IPA_VERSION} | ||||||
| Release:        1%{?rc_version:.%rc_version}%{?dist} | Release:        2%{?rc_version:.%rc_version}%{?dist} | ||||||
| Summary:        The Identity, Policy and Audit system | Summary:        The Identity, Policy and Audit system | ||||||
| 
 | 
 | ||||||
| License:        GPLv3+ | License:        GPLv3+ | ||||||
| @ -208,6 +208,7 @@ Source1:        https://releases.pagure.org/freeipa/freeipa-%{version}%{?rc_vers | |||||||
| 
 | 
 | ||||||
| # RHEL spec file only: START | # RHEL spec file only: START | ||||||
| %if %{NON_DEVELOPER_BUILD} | %if %{NON_DEVELOPER_BUILD} | ||||||
|  | Patch0001:      0001-Handle-samba-exception-type-change_rhel#17623.patch | ||||||
| %if 0%{?rhel} >= 8 | %if 0%{?rhel} >= 8 | ||||||
| Patch1001:      1001-Change-branding-to-IPA-and-Identity-Management.patch | Patch1001:      1001-Change-branding-to-IPA-and-Identity-Management.patch | ||||||
| Patch1002:      1002-Revert-freeipa.spec-depend-on-bind-dnssec-utils.patch | Patch1002:      1002-Revert-freeipa.spec-depend-on-bind-dnssec-utils.patch | ||||||
| @ -1723,6 +1724,10 @@ fi | |||||||
| %endif | %endif | ||||||
| 
 | 
 | ||||||
| %changelog | %changelog | ||||||
|  | * Thu Nov 30 2023 Rafael Jeffman <rjeffman@redhat.com> - 4.9.13-2 | ||||||
|  | - Handle new samba exception types. | ||||||
|  |   Resolves: RHEL-17623 | ||||||
|  | 
 | ||||||
| * Tue Nov 21 2023 Rafael Jeffman <rjeffman@redhat.com> - 4.9.13-1 | * Tue Nov 21 2023 Rafael Jeffman <rjeffman@redhat.com> - 4.9.13-1 | ||||||
| - Rebase ipa to 4.9.13 | - Rebase ipa to 4.9.13 | ||||||
|   Resolves: RHEL-16936 |   Resolves: RHEL-16936 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user