]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3:winbind: Create service principal inside add_ccache_to_list()
authorSamuel Cabrero <scabrero@samba.org>
Thu, 7 Jul 2022 09:22:05 +0000 (11:22 +0200)
committerAndreas Schneider <asn@cryptomilk.org>
Tue, 12 Jul 2022 11:47:30 +0000 (11:47 +0000)
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 <scabrero@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
source3/winbindd/winbindd_cred_cache.c
source3/winbindd/winbindd_pam.c
source3/winbindd/winbindd_proto.h

index 333935fbc0c9f1a019ec0052dd7129d1050f87a3..f113dc7060874e97f8ce3ab621129882912aed75 100644 (file)
@@ -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;
index 07835e9a2633cc7374ff490ba89bca56b92344d4..1963163a865960bc049781690dd3c8dafb1a63d8 100644 (file)
@@ -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,
index 47917cce15436104e31733df2564dc624102a074..6073baca36fb8af5383e5ecf94be12bd9c413cba 100644 (file)
@@ -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,