r7675: Use correct memory context for anonymous session setup auth context
authorAndrew Bartlett <abartlet@samba.org>
Fri, 17 Jun 2005 06:30:03 +0000 (06:30 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:18:21 +0000 (13:18 -0500)
(no need for it to hang around forever).

Add test for this behaviour.

Andrew Bartlett
(This used to be commit 36dc2491d778fbbff32c4abdf95faa9f83024e12)

source4/smb_server/sesssetup.c
source4/torture/raw/context.c

index a7005e39c50a29aa7b96ccd02161a7852d5915f5..6f976f0cc6b81504f6f84d9025ab09a11e76ff14 100644 (file)
@@ -142,14 +142,14 @@ static NTSTATUS sesssetup_nt1(struct smbsrv_request *req, union smb_sesssetup *s
                        return NT_STATUS_ACCESS_DENIED;
                }
 
-               status = make_user_info_anonymous(req->smb_conn, &user_info);
+               status = make_user_info_anonymous(mem_ctx, &user_info);
                if (!NT_STATUS_IS_OK(status)) {
                        talloc_free(mem_ctx);
                        return status;
                }
 
                /* TODO: should we use just "anonymous" here? */
-               status = auth_context_create(req->smb_conn, lp_auth_methods(), 
+               status = auth_context_create(mem_ctx, lp_auth_methods(), 
                                             &auth_context, 
                                             req->smb_conn->connection->event.ctx);
                if (!NT_STATUS_IS_OK(status)) {
index 11065648b05ee6de4e3c95d7894fdf6bf7dc4f34..948dc4e3e5cc23d1f8ab14ee32b9ae046efe2225 100644 (file)
@@ -62,6 +62,8 @@ static BOOL test_session(struct smbcli_state *cli, TALLOC_CTX *mem_ctx)
        struct smbcli_session *session;
        struct smbcli_session *session2;
        struct smbcli_session *session3;
+       struct smbcli_session *session4;
+       struct cli_credentials *anon_creds;
        struct smbcli_session *sessions[15];
        struct composite_context *composite_contexts[15];
        struct smbcli_tree *tree;
@@ -137,6 +139,25 @@ static BOOL test_session(struct smbcli_state *cli, TALLOC_CTX *mem_ctx)
                CHECK_STATUS(status, NT_STATUS_ACCESS_DENIED);
 
                talloc_free(session3);
+
+               printf("create a fouth anonymous security context on the same transport, without extended security\n");
+               session4 = smbcli_session_init(cli->transport, mem_ctx, False);
+
+               session4->vuid = session->vuid;
+               setup.in.sesskey = cli->transport->negotiate.sesskey;
+               setup.in.capabilities = 0; /* force a non extended security login (should fail) */
+               setup.in.workgroup = lp_workgroup();
+               
+               anon_creds = cli_credentials_init(mem_ctx);
+               cli_credentials_set_conf(anon_creds);
+               cli_credentials_set_anonymous(anon_creds);
+
+               setup.in.credentials = anon_creds;
+       
+               status = smb_composite_sesssetup(session3, &setup);
+               CHECK_STATUS(status, NT_STATUS_OK);
+
+               talloc_free(session4);
        }
                
        printf("use the same tree as the existing connection\n");