From: Samuel Cabrero Date: Thu, 7 Jul 2022 09:22:05 +0000 (+0200) Subject: s3:winbind: Create service principal inside add_ccache_to_list() X-Git-Tag: tevent-0.13.0~180 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8bef8e3de9fc96ff45319f80529e878977563f3a;p=thirdparty%2Fsamba.git s3:winbind: Create service principal inside add_ccache_to_list() The function can build the service principal itself, there is no need to do it in the caller. This removes code duplication. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14979 Signed-off-by: Samuel Cabrero Reviewed-by: Andreas Schneider --- diff --git a/source3/winbindd/winbindd_cred_cache.c b/source3/winbindd/winbindd_cred_cache.c index 333935fbc0c..f113dc70608 100644 --- a/source3/winbindd/winbindd_cred_cache.c +++ b/source3/winbindd/winbindd_cred_cache.c @@ -493,7 +493,6 @@ bool ccache_entry_identical(const char *username, NTSTATUS add_ccache_to_list(const char *princ_name, const char *ccname, - const char *service, const char *username, const char *pass, const char *realm, @@ -613,12 +612,6 @@ NTSTATUS add_ccache_to_list(const char *princ_name, goto no_mem; } } - if (service) { - entry->service = talloc_strdup(entry, service); - if (!entry->service) { - goto no_mem; - } - } if (canon_principal != NULL) { entry->canon_principal = talloc_strdup(entry, canon_principal); if (entry->canon_principal == NULL) { @@ -642,6 +635,15 @@ NTSTATUS add_ccache_to_list(const char *princ_name, goto no_mem; } + entry->service = talloc_asprintf(entry, + "%s/%s@%s", + KRB5_TGS_NAME, + realm, + realm); + if (entry->service == NULL) { + goto no_mem; + } + entry->create_time = create_time; entry->renew_until = renew_until; entry->uid = uid; diff --git a/source3/winbindd/winbindd_pam.c b/source3/winbindd/winbindd_pam.c index 07835e9a263..1963163a865 100644 --- a/source3/winbindd/winbindd_pam.c +++ b/source3/winbindd/winbindd_pam.c @@ -730,7 +730,6 @@ static NTSTATUS winbindd_raw_kerberos_login(TALLOC_CTX *mem_ctx, krb5_error_code krb5_ret; const char *cc = NULL; const char *principal_s = NULL; - const char *service = NULL; char *realm = NULL; fstring name_namespace, name_domain, name_user; time_t ticket_lifetime = 0; @@ -817,11 +816,6 @@ static NTSTATUS winbindd_raw_kerberos_login(TALLOC_CTX *mem_ctx, return NT_STATUS_NO_MEMORY; } - service = talloc_asprintf(mem_ctx, "%s/%s@%s", KRB5_TGS_NAME, realm, realm); - if (service == NULL) { - return NT_STATUS_NO_MEMORY; - } - local_service = talloc_asprintf(mem_ctx, "%s$@%s", lp_netbios_name(), lp_realm()); if (local_service == NULL) { @@ -912,7 +906,6 @@ static NTSTATUS winbindd_raw_kerberos_login(TALLOC_CTX *mem_ctx, result = add_ccache_to_list(principal_s, cc, - service, user, pass, realm, @@ -1285,7 +1278,6 @@ static NTSTATUS winbindd_dual_pam_auth_cached(struct winbindd_domain *domain, const char *cc = NULL; char *realm = NULL; const char *principal_s = NULL; - const char *service = NULL; const char *user_ccache_file; if (domain->alt_name == NULL) { @@ -1325,12 +1317,6 @@ static NTSTATUS winbindd_dual_pam_auth_cached(struct winbindd_domain *domain, goto out; } - service = talloc_asprintf(tmp_ctx, "%s/%s@%s", KRB5_TGS_NAME, realm, realm); - if (service == NULL) { - result = NT_STATUS_NO_MEMORY; - goto out; - } - if (user_ccache_file != NULL) { if (_krb5ccname != NULL) { @@ -1340,7 +1326,6 @@ static NTSTATUS winbindd_dual_pam_auth_cached(struct winbindd_domain *domain, result = add_ccache_to_list(principal_s, cc, - service, user, pass, realm, diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h index 47917cce154..6073baca36f 100644 --- a/source3/winbindd/winbindd_proto.h +++ b/source3/winbindd/winbindd_proto.h @@ -230,7 +230,6 @@ void ccache_remove_all_after_fork(void); void ccache_regain_all_now(void); NTSTATUS add_ccache_to_list(const char *princ_name, const char *ccname, - const char *service, const char *username, const char *password, const char *realm,