s3-libads: Support for MIT Kerberos ntstatus from init_creds
authorAndreas Schneider <asn@samba.org>
Tue, 30 Aug 2016 10:38:46 +0000 (12:38 +0200)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 31 Aug 2016 18:59:17 +0000 (20:59 +0200)
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
source3/libads/kerberos.c

index 99028f8959bec56186ce53f0eec954abf81c8d7b..1203153a3bb1a7c2ea1779a28c68c749ced6ebcb 100644 (file)
@@ -203,12 +203,14 @@ static bool smb_krb5_get_ntstatus_from_init_creds(krb5_context ctx,
                                                  krb5_get_init_creds_opt *opt,
                                                  NTSTATUS *nt_status)
 {
-#ifdef HAVE_E_DATA_POINTER_IN_KRB5_ERROR
-       /* HEIMDAL */
-
        krb5_init_creds_context icc;
        krb5_error_code code;
+#ifdef HAVE_E_DATA_POINTER_IN_KRB5_ERROR
+       /* HEIMDAL */
        krb5_error error;
+#else
+       krb5_error *error = NULL;
+#endif
        bool ok;
 
        code = krb5_init_creds_init(ctx,
@@ -234,14 +236,17 @@ static bool smb_krb5_get_ntstatus_from_init_creds(krb5_context ctx,
        }
        krb5_init_creds_free(ctx, icc);
 
+#ifdef HAVE_E_DATA_POINTER_IN_KRB5_ERROR
        ok = smb_krb5_get_ntstatus_from_krb5_error(&error, nt_status);
 
        krb5_free_error_contents(ctx, &error);
-
-       return ok;
 #else
-       return false;
+       ok = smb_krb5_get_ntstatus_from_krb5_error(error, nt_status);
+
+       krb5_free_error(ctx, error);
 #endif
+
+       return ok;
 }
 
 /*