s3:libads: make use of kerberos_secrets_fetch_salt_princ() in ads_keytab_add_entry()
authorStefan Metzmacher <metze@samba.org>
Fri, 19 May 2017 15:08:24 +0000 (17:08 +0200)
committerStefan Metzmacher <metze@samba.org>
Tue, 27 Jun 2017 14:57:44 +0000 (16:57 +0200)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=12782

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
source3/libads/kerberos_keytab.c

index 96df10fcf658bd98b35ff2914aaa796e9ae73e73..ff12ec04af689b3f27de563138045824a64ca0f4 100644 (file)
@@ -237,10 +237,14 @@ int ads_keytab_add_entry(ADS_STRUCT *ads, const char *srvPrinc)
                goto out;
        }
 
+       salt_princ_s = kerberos_secrets_fetch_salt_princ();
+       if (salt_princ_s == NULL) {
+               DBG_WARNING("kerberos_secrets_fetch_salt_princ() failed\n");
+               ret = -1;
+               goto out;
+       }
+
        for (i = 0; enctypes[i]; i++) {
-               salt_princ_s = kerberos_fetch_salt_princ_for_host_princ(context,
-                                                                       princ_s,
-                                                                       enctypes[i]);
 
                /* add the fqdn principal to the keytab */
                ret = smb_krb5_kt_add_entry(context,
@@ -254,7 +258,6 @@ int ads_keytab_add_entry(ADS_STRUCT *ads, const char *srvPrinc)
                                            false);
                if (ret) {
                        DEBUG(1, (__location__ ": Failed to add entry to keytab\n"));
-                       SAFE_FREE(salt_princ_s);
                        goto out;
                }
 
@@ -272,14 +275,13 @@ int ads_keytab_add_entry(ADS_STRUCT *ads, const char *srvPrinc)
                        if (ret) {
                                DEBUG(1, (__location__
                                          ": Failed to add short entry to keytab\n"));
-                               SAFE_FREE(salt_princ_s);
                                goto out;
                        }
                }
-               SAFE_FREE(salt_princ_s);
        }
 
 out:
+       SAFE_FREE(salt_princ_s);
        TALLOC_FREE(tmpctx);
 
        if (keytab) {