s3:auth/auth_generic: make use of gensec_spnego in the server
authorStefan Metzmacher <metze@samba.org>
Thu, 12 Jan 2012 15:12:02 +0000 (16:12 +0100)
committerStefan Metzmacher <metze@samba.org>
Tue, 31 Jan 2012 19:17:09 +0000 (20:17 +0100)
metze

source3/auth/auth_generic.c

index 38968a790a2311ebdfb793f04fa7fb5674fb6c1c..ca5a2afd47fd68d2ecd32b84f954c2044518aab6 100644 (file)
@@ -181,7 +181,7 @@ NTSTATUS auth_generic_prepare(TALLOC_CTX *mem_ctx,
        } else {
                struct gensec_settings *gensec_settings;
                struct loadparm_context *lp_ctx;
-
+               size_t idx = 0;
                struct cli_credentials *server_credentials;
                struct auth4_context *auth4_context = talloc_zero(tmp_ctx, struct auth4_context);
                if (auth4_context == NULL) {
@@ -205,18 +205,23 @@ NTSTATUS auth_generic_prepare(TALLOC_CTX *mem_ctx,
                        return NT_STATUS_NO_MEMORY;
                }
 
-               gensec_settings->backends = talloc_zero_array(gensec_settings, struct gensec_security_ops *, 3);
+               gensec_settings->backends = talloc_zero_array(gensec_settings,
+                                               struct gensec_security_ops *, 4);
                if (gensec_settings->backends == NULL) {
                        TALLOC_FREE(tmp_ctx);
                        return NT_STATUS_NO_MEMORY;
                }
 
-               gensec_settings->backends[0] = &gensec_ntlmssp3_server_ops;
+               gensec_settings->backends[idx++] = &gensec_ntlmssp3_server_ops;
 
 #if defined(HAVE_KRB5) && defined(HAVE_GSS_WRAP_IOV)
-               gensec_settings->backends[1] = &gensec_gse_krb5_security_ops;
+               gensec_settings->backends[idx++] = &gensec_gse_krb5_security_ops;
 #endif
 
+               gensec_init();
+               gensec_settings->backends[idx++] = gensec_security_by_oid(NULL,
+                                                       GENSEC_OID_SPNEGO);
+
                /*
                 * This is anonymous for now, because we just use it
                 * to set the kerberos state at the moment