(Merge from 3.0)
authorAndrew Bartlett <abartlet@samba.org>
Sun, 23 Nov 2003 00:23:26 +0000 (00:23 +0000)
committerAndrew Bartlett <abartlet@samba.org>
Sun, 23 Nov 2003 00:23:26 +0000 (00:23 +0000)
Patch by emil@disksites.com <Emil Rasamat> to ensure we always always
free() each auth method. (We had relied on the use of talloc() only,
despite providing the free() callback)

Andrew Bartlett
(This used to be commit 58c4963a8389dff4d925548217fabed1c9932abd)

source3/auth/auth.c
source3/auth/auth_server.c

index 20dccc65924431f974409c8c981a8a080eeb3e97..1b49699fbca5e711f126d2fcfee15c415787292a 100644 (file)
@@ -321,9 +321,20 @@ static NTSTATUS check_ntlm_password(const struct auth_context *auth_context,
 
 static void free_auth_context(struct auth_context **auth_context)
 {
-       if (*auth_context != NULL)
+       auth_methods *auth_method;
+
+       if (*auth_context) {
+               /* Free private data of context's authentication methods */
+               for (auth_method = (*auth_context)->auth_method_list; auth_method; auth_method = auth_method->next) {
+                       if (auth_method->free_private_data) {
+                               auth_method->free_private_data (&auth_method->private_data);
+                               auth_method->private_data = NULL;
+                       }
+               }
+
                talloc_destroy((*auth_context)->mem_ctx);
-       *auth_context = NULL;
+               *auth_context = NULL;
+       }
 }
 
 /***************************************************************************
index b57293943c039346b24053419d1d9e41b3fbeaaa..41adc2178416eee813356d2da5de5d4d6da5c077 100644 (file)
@@ -143,8 +143,10 @@ static void free_server_private_data(void **private_data_pointer)
 {
        struct cli_state **cli = (struct cli_state **)private_data_pointer;
        if (*cli && (*cli)->initialised) {
+               DEBUG(10, ("Shutting down smbserver connection\n"));
                cli_shutdown(*cli);
        }
+       *private_data_pointer = NULL;
 }
 
 /****************************************************************************