kerberos: add smb_krb5_keytab_name().
authorGünther Deschner <gd@samba.org>
Wed, 18 Jun 2008 10:48:35 +0000 (12:48 +0200)
committerGünther Deschner <gd@samba.org>
Tue, 24 Jun 2008 21:34:17 +0000 (23:34 +0200)
Guenther
(This used to be commit c273ce8798062d1b55100411f3e92a01bdbf611c)

source3/include/includes.h
source3/libsmb/clikrb5.c

index 61ca937138cdcdd88ea9bd7b128ed2707d5a8107..d3e8b3350d1faffe111d955f741a89c24bf19f6c 100644 (file)
@@ -1221,6 +1221,10 @@ krb5_error_code smb_krb5_open_keytab(krb5_context context,
                                      const char *keytab_name, 
                                      bool write_access, 
                                      krb5_keytab *keytab);
+krb5_error_code smb_krb5_keytab_name(TALLOC_CTX *mem_ctx,
+                                    krb5_context context,
+                                    krb5_keytab keytab,
+                                    const char **keytab_name);
 int smb_krb5_kt_add_entry(krb5_context context,
                          krb5_keytab keytab,
                          krb5_kvno kvno,
index 52c729625c1337a554c1c60eb746ae3a32ac6afa..2aae9df53ed389571954b84dd287dde98c1b0c45 100644 (file)
@@ -1727,6 +1727,28 @@ done:
        return ret;
 }
 
+krb5_error_code smb_krb5_keytab_name(TALLOC_CTX *mem_ctx,
+                                    krb5_context context,
+                                    krb5_keytab keytab,
+                                    const char **keytab_name)
+{
+       char keytab_string[MAX_KEYTAB_NAME_LEN];
+       krb5_error_code ret = 0;
+
+       ret = krb5_kt_get_name(context, keytab,
+                              keytab_string, MAX_KEYTAB_NAME_LEN - 2);
+       if (ret) {
+               return ret;
+       }
+
+       *keytab_name = talloc_strdup(mem_ctx, keytab_string);
+       if (!*keytab_name) {
+               return ENOMEM;
+       }
+
+       return ret;
+}
+
 #else /* HAVE_KRB5 */
  /* this saves a few linking headaches */
  int cli_krb5_get_ticket(const char *principal, time_t time_offset,