auth/gensec: avoid talloc_reference in gensec_security_mechs()
authorStefan Metzmacher <metze@samba.org>
Mon, 5 Aug 2013 08:39:16 +0000 (10:39 +0200)
committerStefan Metzmacher <metze@samba.org>
Sat, 10 Aug 2013 07:19:03 +0000 (09:19 +0200)
We now always copy.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
auth/gensec/gensec_start.c

index 096ad364868f2d3cf398df9781e712bf5ae55eab..00e27596bfe0691ec0525d3d1a1b4ead906cacf6 100644 (file)
@@ -140,28 +140,19 @@ _PUBLIC_ struct gensec_security_ops **gensec_security_mechs(
                                struct gensec_security *gensec_security,
                                TALLOC_CTX *mem_ctx)
 {
-       struct gensec_security_ops **backends;
-       if (!gensec_security) {
-               backends = gensec_security_all();
-               if (!talloc_reference(mem_ctx, backends)) {
-                       return NULL;
-               }
-               return backends;
-       } else {
-               struct cli_credentials *creds = gensec_get_credentials(gensec_security);
+       struct cli_credentials *creds = NULL;
+       struct gensec_security_ops **backends = gensec_security_all();
+
+       if (gensec_security != NULL) {
+               creds = gensec_get_credentials(gensec_security);
+
                if (gensec_security->settings->backends) {
                        backends = gensec_security->settings->backends;
-               } else {
-                       backends = gensec_security_all();
                }
-               if (!creds) {
-                       if (!talloc_reference(mem_ctx, backends)) {
-                               return NULL;
-                       }
-                       return backends;
-               }
-               return gensec_use_kerberos_mechs(mem_ctx, backends, creds);
        }
+
+       return gensec_use_kerberos_mechs(mem_ctx, backends, creds);
+
 }
 
 static const struct gensec_security_ops *gensec_security_by_authtype(struct gensec_security *gensec_security,