r13353: Fix a crash bug in rootdse when we do not pass in credentials
[abartlet/samba.git/.git] / source4 / dsdb / samdb / ldb_modules / rootdse.c
index 0bf63f30aecf6128bfcd5d5adb7e9630d4e6eba4..5f5b362c536a0c2fd9a3662a88b1e9f161e43bdd 100644 (file)
@@ -82,8 +82,12 @@ static int rootdse_add_dynamic(struct ldb_module *module, struct ldb_request *re
 
        server_creds = talloc_get_type(ldb_get_opaque(module->ldb, "server_credentials"), 
                                       struct cli_credentials);
-       if (do_attribute(s->attrs, "supportedSASLMechanisms")) {
-               const struct gensec_security_ops **ops = cli_credentials_gensec_list(server_creds);
+       if (server_creds && do_attribute(s->attrs, "supportedSASLMechanisms")) {
+               struct gensec_security_ops **backends = gensec_security_all();
+               enum credentials_use_kerberos use_kerberos
+                       = cli_credentials_get_kerberos_state(server_creds);
+               struct gensec_security_ops **ops
+                       = gensec_use_kerberos_mechs(req, backends, use_kerberos);
                int i;
                for (i = 0; ops && ops[i]; i++) {
                        if (ops[i]->sasl_name) {