r4358: At metze's request, the Christmas elves have removed gensec_end in
authorAndrew Bartlett <abartlet@samba.org>
Fri, 24 Dec 2004 23:02:39 +0000 (23:02 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:07:37 +0000 (13:07 -0500)
favor of talloc_free().

Andrew Bartlett
(This used to be commit 1933cd12fbaed56e13f2386b19de6ade99bf9478)

source4/libcli/auth/gensec.c
source4/libcli/auth/spnego.c
source4/librpc/rpc/dcerpc.c
source4/librpc/rpc/dcerpc_auth.c
source4/librpc/rpc/dcerpc_schannel.c
source4/rpc_server/dcerpc_server.c
source4/smb_server/sesssetup.c
source4/utils/ntlm_auth.c

index 7e33a159f94624569426d89844be14464eef33c0..75086f928112b891c273fba22bd86a2837865fd7 100644 (file)
@@ -440,16 +440,6 @@ NTSTATUS gensec_update(struct gensec_security *gensec_security, TALLOC_CTX *out_
        return gensec_security->ops->update(gensec_security, out_mem_ctx, in, out);
 }
 
-void gensec_end(struct gensec_security **gensec_security)
-{
-       if (!*gensec_security) {
-               return;
-       }
-
-       talloc_free(*gensec_security);
-       *gensec_security = NULL;
-}
-
 /** 
  * Set the requirement for a certain feature on the connection
  *
index 988d0b32a564c37267ca1a380b46cc0d076c0534..5cce0f9e17909b273d6e74a6d316c16f4e08bc49 100644 (file)
@@ -45,16 +45,6 @@ struct spnego_state {
 };
 
 
-static int gensec_spnego_destroy(void *ptr)
-{
-       struct spnego_state *spnego_state = ptr;
-
-       if (spnego_state->sub_sec_security) {
-               gensec_end(&spnego_state->sub_sec_security);
-       }
-       return 0;
-}
-
 static NTSTATUS gensec_spnego_client_start(struct gensec_security *gensec_security)
 {
        struct spnego_state *spnego_state;
@@ -68,8 +58,6 @@ static NTSTATUS gensec_spnego_client_start(struct gensec_security *gensec_securi
        spnego_state->state_position = SPNEGO_CLIENT_START;
        spnego_state->sub_sec_security = NULL;
 
-       talloc_set_destructor(spnego_state, gensec_spnego_destroy);
-
        gensec_security->private_data = spnego_state;
        return NT_STATUS_OK;
 }
@@ -87,8 +75,6 @@ static NTSTATUS gensec_spnego_server_start(struct gensec_security *gensec_securi
        spnego_state->state_position = SPNEGO_SERVER_START;
        spnego_state->sub_sec_security = NULL;
 
-       talloc_set_destructor(spnego_state, gensec_spnego_destroy);
-
        gensec_security->private_data = spnego_state;
        return NT_STATUS_OK;
 }
@@ -246,8 +232,9 @@ static NTSTATUS gensec_spnego_server_try_fallback(struct gensec_security *gensec
                nt_status = gensec_start_mech_by_oid(spnego_state->sub_sec_security,
                                                     all_ops[i]->oid);
                if (!NT_STATUS_IS_OK(nt_status)) {
-                       gensec_end(&spnego_state->sub_sec_security);
-                                       continue;
+                       talloc_free(spnego_state->sub_sec_security);
+                       spnego_state->sub_sec_security = NULL;
+                       continue;
                }
                nt_status = gensec_update(spnego_state->sub_sec_security,
                                                          out_mem_ctx, in, out);
@@ -255,7 +242,8 @@ static NTSTATUS gensec_spnego_server_try_fallback(struct gensec_security *gensec
                        spnego_state->state_position = SPNEGO_FALLBACK;
                        return nt_status;
                }
-               gensec_end(&spnego_state->sub_sec_security);
+               talloc_free(spnego_state->sub_sec_security);
+               spnego_state->sub_sec_security = NULL;
        }
        DEBUG(1, ("Failed to parse SPNEGO request\n"));
        return NT_STATUS_INVALID_PARAMETER;
@@ -283,7 +271,8 @@ static NTSTATUS gensec_spnego_parse_negTokenInit(struct gensec_security *gensec_
                nt_status = gensec_start_mech_by_oid(spnego_state->sub_sec_security,
                                                     mechType[i]);
                if (!NT_STATUS_IS_OK(nt_status)) {
-                       gensec_end(&spnego_state->sub_sec_security);
+                       talloc_free(spnego_state->sub_sec_security);
+                       spnego_state->sub_sec_security = NULL;
                        continue;
                }
                
@@ -302,7 +291,8 @@ static NTSTATUS gensec_spnego_parse_negTokenInit(struct gensec_security *gensec_
                if (!NT_STATUS_EQUAL(nt_status, NT_STATUS_MORE_PROCESSING_REQUIRED) && !NT_STATUS_IS_OK(nt_status)) {
                        DEBUG(1, ("SPNEGO(%s) NEG_TOKEN_INIT failed: %s\n", 
                                  spnego_state->sub_sec_security->ops->name, nt_errstr(nt_status)));
-                       gensec_end(&spnego_state->sub_sec_security);
+                       talloc_free(spnego_state->sub_sec_security);
+                       spnego_state->sub_sec_security = NULL;
                }
                return nt_status;
        }
@@ -344,8 +334,9 @@ static NTSTATUS gensec_spnego_client_negTokenInit(struct gensec_security *gensec
        nt_status = gensec_start_mech_by_oid(spnego_state->sub_sec_security,
                                             mechTypes[0]);
        if (!NT_STATUS_IS_OK(nt_status)) {
-               gensec_end(&spnego_state->sub_sec_security);
-                       return nt_status;
+               talloc_free(spnego_state->sub_sec_security);
+               spnego_state->sub_sec_security = NULL;
+               return nt_status;
        }
        nt_status = gensec_update(spnego_state->sub_sec_security,
                                  out_mem_ctx, in, &unwrapped_out);
@@ -367,7 +358,8 @@ static NTSTATUS gensec_spnego_client_negTokenInit(struct gensec_security *gensec
                spnego_state->state_position = SPNEGO_CLIENT_TARG;
                return nt_status;
        }
-       gensec_end(&spnego_state->sub_sec_security);
+       talloc_free(spnego_state->sub_sec_security);
+       spnego_state->sub_sec_security = NULL;
 
        DEBUG(1, ("Failed to setup SPNEGO netTokenInit request\n"));
        return NT_STATUS_INVALID_PARAMETER;
@@ -515,7 +507,8 @@ static NTSTATUS gensec_spnego_update(struct gensec_security *gensec_security, TA
 
                if (!in.length) {
                        /* client to produce negTokenInit */
-                       return gensec_spnego_client_negTokenInit(gensec_security, spnego_state, out_mem_ctx, in, out);
+                       return gensec_spnego_client_negTokenInit(gensec_security, spnego_state, 
+                                                                out_mem_ctx, in, out);
                }
                
                len = spnego_read_data(in, &spnego);
index 9217c90e0e99959325b55318b6a6eba3d25320d7..f6c0ebc41328dff7801c5581c6f0ea8a84967b82 100644 (file)
@@ -85,9 +85,6 @@ void dcerpc_pipe_close(struct dcerpc_pipe *p)
        if (!p) return;
        p->reference_count--;
        if (p->reference_count <= 0) {
-               if (p->security_state.generic_state) {
-                       gensec_end(&p->security_state.generic_state);
-               }
                p->transport.shutdown_pipe(p);
                talloc_free(p);
        }
index 844746e3223198d167b623c141b06b6b024e923b..1c5556ccee3a931c429efb0b2150c81470673fe1 100644 (file)
@@ -113,7 +113,7 @@ done:
        talloc_destroy(mem_ctx);
 
        if (!NT_STATUS_IS_OK(status)) {
-               gensec_end(&p->security_state.generic_state);
+               talloc_free(p->security_state.generic_state);
                ZERO_STRUCT(p->security_state);
        } else {
                /* Authenticated connections use the generic session key */
index 635735a55d656ba0324f9aa3c92234deeafb8e3b..6df48b7dd34d976b450d510a3261b89c1179ca7d 100644 (file)
@@ -436,14 +436,16 @@ NTSTATUS dcerpc_bind_auth_schannel_withkey(struct dcerpc_pipe *p,
        status = gensec_set_username(p->security_state.generic_state, username);
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(1, ("Failed to set schannel username to %s: %s\n", username, nt_errstr(status)));
-               gensec_end(&p->security_state.generic_state);
+               talloc_free(p->security_state.generic_state);
+               p->security_state.generic_state = NULL;
                return status;
        }
        
        status = gensec_set_domain(p->security_state.generic_state, domain);
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(1, ("Failed to set schannel domain to %s: %s\n", domain, nt_errstr(status)));
-               gensec_end(&p->security_state.generic_state);
+               talloc_free(p->security_state.generic_state);
+               p->security_state.generic_state = NULL;
                return status;
        }
        
@@ -451,7 +453,8 @@ NTSTATUS dcerpc_bind_auth_schannel_withkey(struct dcerpc_pipe *p,
 
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(1, ("Failed to start SCHANNEL GENSEC backend: %s\n", nt_errstr(status)));
-               gensec_end(&p->security_state.generic_state);
+               talloc_free(p->security_state.generic_state);
+               p->security_state.generic_state = NULL;
                return status;
        }
 
@@ -463,7 +466,8 @@ NTSTATUS dcerpc_bind_auth_schannel_withkey(struct dcerpc_pipe *p,
 
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(1, ("Failed to bind to pipe with SCHANNEL: %s\n", nt_errstr(status)));
-               gensec_end(&p->security_state.generic_state);
+               talloc_free(p->security_state.generic_state);
+               p->security_state.generic_state = NULL;
                return status;
        }
 
index 231778247fdad27bcff3b056f562c24b0c71ab34..cf4ea8bea8f1e7687e5a8315444eb3c613ce64da 100644 (file)
@@ -274,7 +274,8 @@ static int dcesrv_endpoint_destructor(void *ptr)
        }
 
        if (p->auth_state.gensec_security) {
-               gensec_end(&p->auth_state.gensec_security);
+               talloc_free(p->auth_state.gensec_security);
+               p->auth_state.gensec_security = NULL;
        }
 
        return 0;
index 85fac5680bb4c6b896dad2dba02d1f3ac25f70c6..dcecc1327cd179f0679b66b26b662156eb0b246f 100644 (file)
@@ -287,7 +287,8 @@ static NTSTATUS sesssetup_spnego(struct smbsrv_request *req, union smb_sesssetup
                status = nt_status_squash(status);
                if (smb_sess->gensec_ctx && 
                    !NT_STATUS_EQUAL(status, NT_STATUS_MORE_PROCESSING_REQUIRED)) {
-                       gensec_end(&smb_sess->gensec_ctx);
+                       talloc_free(smb_sess->gensec_ctx);
+                       smb_sess->gensec_ctx = NULL;
                }
        }
 
index c99dcb1b7a1989697a6bac19f517bb443d80c3f1..f741999ac9fa65885f06269c4ce3e5a19d74dd6e 100644 (file)
@@ -320,7 +320,7 @@ static void manage_gensec_request(enum stdio_helper_mode stdio_helper_mode,
 
        if (strncmp(buf, "YR", 2) == 0) {
                if (gensec_state && *gensec_state) {
-                       gensec_end(gensec_state);
+                       talloc_free(*gensec_state);
                        *gensec_state = NULL;
                }
        } else if ( (strncmp(buf, "OK", 2) == 0)) {