summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2005-06-17 06:30:03 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:18:21 -0500
commitb523bde4998b95c676c01b660511ad77029471d2 (patch)
tree8546b1486954b33a50b80cb3d9f5f02e678de49f
parentb11efd3e505c281bbf5b80aa5d0018134c99eb2d (diff)
downloadsamba-b523bde4998b95c676c01b660511ad77029471d2.tar.gz
samba-b523bde4998b95c676c01b660511ad77029471d2.tar.bz2
samba-b523bde4998b95c676c01b660511ad77029471d2.zip
r7675: Use correct memory context for anonymous session setup auth context
(no need for it to hang around forever). Add test for this behaviour. Andrew Bartlett (This used to be commit 36dc2491d778fbbff32c4abdf95faa9f83024e12)
-rw-r--r--source4/smb_server/sesssetup.c4
-rw-r--r--source4/torture/raw/context.c21
2 files changed, 23 insertions, 2 deletions
diff --git a/source4/smb_server/sesssetup.c b/source4/smb_server/sesssetup.c
index a7005e39c5..6f976f0cc6 100644
--- a/source4/smb_server/sesssetup.c
+++ b/source4/smb_server/sesssetup.c
@@ -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)) {
diff --git a/source4/torture/raw/context.c b/source4/torture/raw/context.c
index 11065648b0..948dc4e3e5 100644
--- a/source4/torture/raw/context.c
+++ b/source4/torture/raw/context.c
@@ -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");