[SCM] Samba Shared Repository - branch master updated
Stefan Metzmacher
metze at samba.org
Wed Jul 25 08:45:02 MDT 2012
The branch, master has been updated
via 5c3a0cb libcli/smb: setup tcon->smb2.should_encrypt in smb2cli_tcon_set_values()
via 0aac3c0 libcli/smb: pass smbXcli_session to smb2cli_tcon_set_values()
via 4d6d783 s4:libcli/smb2: remove unused smb2_session->pid
via bb6761c s3:libsmb: remove unused cli_state->smb2.pid
via e20e84d s4:libcli/smb2: remove unused variable
via 56aa419 libcli/smb: there's no PID field in the SMB2/3 header anymore
via 7de4ae7 libcli/smb: pass smbXcli_tcon to smb2cli_req_create/send()
via 57fda88 s4:libcli/smb2: remove unused elements from smb2_tree
via 56af56d s4:torture/smb2: create temporary smbXcli_tcon/session structures instead of changing them
via 72e047f s4:torture/smb2: use smb2cli_tcon_capabilities()
via a10fe7b libcli/smb: add smb2cli_tcon_capabilities()
via 167d94c s3:libsmb: remove unused tcon specific elements from cli_state->smb2
via d2ba9c3 s3:libsmb: remove cli_state->smb2.tid
via 18bd029 s4:torture: remove unused shm_setup()
via 97b1776 s4:torture: replace shm_setup() with anonymous_shared_allocate()
via b0f1921 s3:torture: remove unused shm_setup()
via e0bc165 s3:torture: replace shm_setup() with anonymous_shared_allocate()
via c66a45d s3:smb2_server: simplify the talloc_pool handling for smbd_smb2_request
from d58aa46 Fix bug 9065: source3/registry/regfio.c: bad call to memcpy Signed-off-by: Jeremy Allison <jra at samba.org>
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 5c3a0cbae0eee6c2c35e2de037380546fc22dd9c
Author: Stefan Metzmacher <metze at samba.org>
Date: Wed Jul 25 12:34:20 2012 +0200
libcli/smb: setup tcon->smb2.should_encrypt in smb2cli_tcon_set_values()
metze
Autobuild-User(master): Stefan Metzmacher <metze at samba.org>
Autobuild-Date(master): Wed Jul 25 16:44:22 CEST 2012 on sn-devel-104
commit 0aac3c09f19875f670ac5f6438bb03f5a296cfab
Author: Stefan Metzmacher <metze at samba.org>
Date: Wed Jul 25 12:33:39 2012 +0200
libcli/smb: pass smbXcli_session to smb2cli_tcon_set_values()
metze
commit 4d6d783afeb64da85f89117324e43e4171df0d02
Author: Stefan Metzmacher <metze at samba.org>
Date: Wed Jul 25 11:40:54 2012 +0200
s4:libcli/smb2: remove unused smb2_session->pid
metze
commit bb6761c127456d56d7d39fffe26ada2e56b0b3ed
Author: Stefan Metzmacher <metze at samba.org>
Date: Wed Jul 25 11:26:22 2012 +0200
s3:libsmb: remove unused cli_state->smb2.pid
metze
commit e20e84d5271577b5e610283d8b07b2ef6230d290
Author: Stefan Metzmacher <metze at samba.org>
Date: Wed Jul 25 10:59:12 2012 +0200
s4:libcli/smb2: remove unused variable
metze
commit 56aa419d87e8f0a82ebe2110b128fa512cd1e2c6
Author: Stefan Metzmacher <metze at samba.org>
Date: Wed Jul 25 10:58:34 2012 +0200
libcli/smb: there's no PID field in the SMB2/3 header anymore
It's a reserved field...
metze
commit 7de4ae7f9fbf642899afd8c89d0b3af72155e022
Author: Stefan Metzmacher <metze at samba.org>
Date: Wed Jul 25 10:36:27 2012 +0200
libcli/smb: pass smbXcli_tcon to smb2cli_req_create/send()
metze
commit 57fda88dfb685ca9ba84cda6799efcc2224e242f
Author: Stefan Metzmacher <metze at samba.org>
Date: Wed Jul 25 09:31:15 2012 +0200
s4:libcli/smb2: remove unused elements from smb2_tree
metze
commit 56af56d041c89bee6dc2a71a9b0faa85a22150d9
Author: Stefan Metzmacher <metze at samba.org>
Date: Wed Jul 25 09:29:00 2012 +0200
s4:torture/smb2: create temporary smbXcli_tcon/session structures instead of changing them
metze
commit 72e047f7c53f4e0481e658a1a683f398f5515bfb
Author: Stefan Metzmacher <metze at samba.org>
Date: Wed Jul 25 09:27:34 2012 +0200
s4:torture/smb2: use smb2cli_tcon_capabilities()
metze
commit a10fe7b25203248e3b7b41248e5bbc86ba9c2ed3
Author: Stefan Metzmacher <metze at samba.org>
Date: Wed Jul 25 09:27:00 2012 +0200
libcli/smb: add smb2cli_tcon_capabilities()
metze
commit 167d94c73dc1b2c79dbc980a2094c90711500fbf
Author: Stefan Metzmacher <metze at samba.org>
Date: Wed Jul 25 09:05:32 2012 +0200
s3:libsmb: remove unused tcon specific elements from cli_state->smb2
metze
commit d2ba9c36f30e175f0715de10e72a34b6e0797718
Author: Stefan Metzmacher <metze at samba.org>
Date: Wed Jul 25 09:01:02 2012 +0200
s3:libsmb: remove cli_state->smb2.tid
metze
commit 18bd029ffb7fae85f245d91081efda5603649d2f
Author: Stefan Metzmacher <metze at samba.org>
Date: Wed Jul 25 08:36:10 2012 +0200
s4:torture: remove unused shm_setup()
metze
commit 97b1776cb6f56a112fe16e747caaad7473c6bb73
Author: Stefan Metzmacher <metze at samba.org>
Date: Wed Jul 25 08:35:44 2012 +0200
s4:torture: replace shm_setup() with anonymous_shared_allocate()
metze
commit b0f1921bd733e9ad4f8fef720fab2fd0ed675f12
Author: Stefan Metzmacher <metze at samba.org>
Date: Wed Jul 25 08:35:17 2012 +0200
s3:torture: remove unused shm_setup()
metze
commit e0bc1650805159645ae2217a81fbf92d656f0e34
Author: Stefan Metzmacher <metze at samba.org>
Date: Wed Jul 25 08:33:31 2012 +0200
s3:torture: replace shm_setup() with anonymous_shared_allocate()
metze
commit c66a45d3f29570a907ef1f9a3e499eb19e804e7e
Author: Stefan Metzmacher <metze at samba.org>
Date: Mon Jul 23 18:22:59 2012 +0200
s3:smb2_server: simplify the talloc_pool handling for smbd_smb2_request
metze
-----------------------------------------------------------------------
Summary of changes:
libcli/smb/smb2cli_close.c | 8 +---
libcli/smb/smb2cli_create.c | 8 +---
libcli/smb/smb2cli_flush.c | 8 +---
libcli/smb/smb2cli_ioctl.c | 8 +---
libcli/smb/smb2cli_query_directory.c | 8 +---
libcli/smb/smb2cli_query_info.c | 8 +---
libcli/smb/smb2cli_read.c | 8 +---
libcli/smb/smb2cli_session.c | 6 +--
libcli/smb/smb2cli_set_info.c | 8 +---
libcli/smb/smb2cli_write.c | 8 +---
libcli/smb/smbXcli_base.c | 54 ++++++++++++++++++-------
libcli/smb/smbXcli_base.h | 8 ++--
source3/include/client.h | 8 ----
source3/libsmb/smb2cli_tcon.c | 37 +++++++++--------
source3/smbd/globals.h | 3 -
source3/smbd/smb2_server.c | 40 ++-----------------
source3/torture/nbio.c | 2 +-
source3/torture/proto.h | 1 -
source3/torture/test_smb2.c | 58 ++++++++++-----------------
source3/torture/torture.c | 61 +---------------------------
source4/libcli/smb2/connect.c | 4 +-
source4/libcli/smb2/request.c | 2 -
source4/libcli/smb2/session.c | 2 -
source4/libcli/smb2/smb2.h | 3 -
source4/libcli/smb2/transport.c | 18 ++++-----
source4/torture/nbench/nbio.c | 2 +-
source4/torture/smb2/compound.c | 68 +++++++++++++++++++++++++-------
source4/torture/smb2/durable_v2_open.c | 8 +++-
source4/torture/smb2/lock.c | 4 --
source4/torture/smb2/notify.c | 8 ++--
source4/torture/smb2/util.c | 4 +-
source4/torture/util.h | 1 -
source4/torture/util_smb.c | 61 +---------------------------
33 files changed, 178 insertions(+), 357 deletions(-)
Changeset truncated at 500 lines:
diff --git a/libcli/smb/smb2cli_close.c b/libcli/smb/smb2cli_close.c
index 42ed65a..fbeee55 100644
--- a/libcli/smb/smb2cli_close.c
+++ b/libcli/smb/smb2cli_close.c
@@ -42,7 +42,6 @@ struct tevent_req *smb2cli_close_send(TALLOC_CTX *mem_ctx,
struct tevent_req *req, *subreq;
struct smb2cli_close_state *state;
uint8_t *fixed;
- uint32_t tcon_id = 0;
req = tevent_req_create(mem_ctx, &state,
struct smb2cli_close_state);
@@ -55,15 +54,10 @@ struct tevent_req *smb2cli_close_send(TALLOC_CTX *mem_ctx,
SBVAL(fixed, 8, fid_persistent);
SBVAL(fixed, 16, fid_volatile);
- if (tcon) {
- tcon_id = smb2cli_tcon_current_id(tcon);
- }
-
subreq = smb2cli_req_send(state, ev, conn, SMB2_OP_CLOSE,
0, 0, /* flags */
timeout_msec,
- 0xFEFF, /* pid */
- tcon_id,
+ tcon,
session,
state->fixed, sizeof(state->fixed),
NULL, 0);
diff --git a/libcli/smb/smb2cli_create.c b/libcli/smb/smb2cli_create.c
index 33af378..4d264ef 100644
--- a/libcli/smb/smb2cli_create.c
+++ b/libcli/smb/smb2cli_create.c
@@ -70,7 +70,6 @@ struct tevent_req *smb2cli_create_send(
size_t blobs_offset;
uint8_t *dyn;
size_t dyn_len;
- uint32_t tcon_id = 0;
req = tevent_req_create(mem_ctx, &state,
struct smb2cli_create_state);
@@ -138,15 +137,10 @@ struct tevent_req *smb2cli_create_send(
data_blob_free(&blob);
}
- if (tcon) {
- tcon_id = smb2cli_tcon_current_id(tcon);
- }
-
subreq = smb2cli_req_send(state, ev, conn, SMB2_OP_CREATE,
0, 0, /* flags */
timeout_msec,
- 0xFEFF, /* pid */
- tcon_id,
+ tcon,
session,
state->fixed, sizeof(state->fixed),
dyn, dyn_len);
diff --git a/libcli/smb/smb2cli_flush.c b/libcli/smb/smb2cli_flush.c
index ca7a0fe..a280e15 100644
--- a/libcli/smb/smb2cli_flush.c
+++ b/libcli/smb/smb2cli_flush.c
@@ -41,7 +41,6 @@ struct tevent_req *smb2cli_flush_send(TALLOC_CTX *mem_ctx,
struct tevent_req *req, *subreq;
struct smb2cli_flush_state *state;
uint8_t *fixed;
- uint32_t tcon_id = 0;
req = tevent_req_create(mem_ctx, &state,
struct smb2cli_flush_state);
@@ -53,15 +52,10 @@ struct tevent_req *smb2cli_flush_send(TALLOC_CTX *mem_ctx,
SBVAL(fixed, 8, fid_persistent);
SBVAL(fixed, 16, fid_volatile);
- if (tcon) {
- tcon_id = smb2cli_tcon_current_id(tcon);
- }
-
subreq = smb2cli_req_send(state, ev, conn, SMB2_OP_FLUSH,
0, 0, /* flags */
timeout_msec,
- 0xFEFF, /* pid */
- tcon_id,
+ tcon,
session,
state->fixed, sizeof(state->fixed),
NULL, 0);
diff --git a/libcli/smb/smb2cli_ioctl.c b/libcli/smb/smb2cli_ioctl.c
index 03296c6..687c9d5 100644
--- a/libcli/smb/smb2cli_ioctl.c
+++ b/libcli/smb/smb2cli_ioctl.c
@@ -61,7 +61,6 @@ struct tevent_req *smb2cli_ioctl_send(TALLOC_CTX *mem_ctx,
uint32_t output_buffer_offset = 0;
uint32_t output_buffer_length = 0;
uint32_t pad_length = 0;
- uint32_t tcon_id = 0;
req = tevent_req_create(mem_ctx, &state,
struct smb2cli_ioctl_state);
@@ -134,15 +133,10 @@ struct tevent_req *smb2cli_ioctl_send(TALLOC_CTX *mem_ctx,
dyn_len = sizeof(state->dyn_pad);
}
- if (tcon) {
- tcon_id = smb2cli_tcon_current_id(tcon);
- }
-
subreq = smb2cli_req_send(state, ev, conn, SMB2_OP_IOCTL,
0, 0, /* flags */
timeout_msec,
- 0xFEFF, /* pid */
- tcon_id,
+ tcon,
session,
state->fixed, sizeof(state->fixed),
dyn, dyn_len);
diff --git a/libcli/smb/smb2cli_query_directory.c b/libcli/smb/smb2cli_query_directory.c
index 4ff93de..3278378 100644
--- a/libcli/smb/smb2cli_query_directory.c
+++ b/libcli/smb/smb2cli_query_directory.c
@@ -52,7 +52,6 @@ struct tevent_req *smb2cli_query_directory_send(TALLOC_CTX *mem_ctx,
uint8_t *fixed;
uint8_t *dyn;
size_t dyn_len;
- uint32_t tcon_id = 0;
req = tevent_req_create(mem_ctx, &state,
struct smb2cli_query_directory_state);
@@ -88,15 +87,10 @@ struct tevent_req *smb2cli_query_directory_send(TALLOC_CTX *mem_ctx,
dyn_len = sizeof(state->dyn_pad);
}
- if (tcon) {
- tcon_id = smb2cli_tcon_current_id(tcon);
- }
-
subreq = smb2cli_req_send(state, ev, conn, SMB2_OP_FIND,
0, 0, /* flags */
timeout_msec,
- 0xFEFF, /* pid */
- tcon_id,
+ tcon,
session,
state->fixed, sizeof(state->fixed),
dyn, dyn_len);
diff --git a/libcli/smb/smb2cli_query_info.c b/libcli/smb/smb2cli_query_info.c
index b5d9e79..80cec9c 100644
--- a/libcli/smb/smb2cli_query_info.c
+++ b/libcli/smb/smb2cli_query_info.c
@@ -55,7 +55,6 @@ struct tevent_req *smb2cli_query_info_send(TALLOC_CTX *mem_ctx,
size_t dyn_len;
uint16_t input_buffer_offset = 0;
uint32_t input_buffer_length = 0;
- uint32_t tcon_id = 0;
req = tevent_req_create(mem_ctx, &state,
struct smb2cli_query_info_state);
@@ -91,15 +90,10 @@ struct tevent_req *smb2cli_query_info_send(TALLOC_CTX *mem_ctx,
dyn_len = sizeof(state->dyn_pad);
}
- if (tcon) {
- tcon_id = smb2cli_tcon_current_id(tcon);
- }
-
subreq = smb2cli_req_send(state, ev, conn, SMB2_OP_GETINFO,
0, 0, /* flags */
timeout_msec,
- 0xFEFF, /* pid */
- tcon_id,
+ tcon,
session,
state->fixed, sizeof(state->fixed),
dyn, dyn_len);
diff --git a/libcli/smb/smb2cli_read.c b/libcli/smb/smb2cli_read.c
index 5ff4b64..e808b0c 100644
--- a/libcli/smb/smb2cli_read.c
+++ b/libcli/smb/smb2cli_read.c
@@ -49,7 +49,6 @@ struct tevent_req *smb2cli_read_send(TALLOC_CTX *mem_ctx,
struct tevent_req *req, *subreq;
struct smb2cli_read_state *state;
uint8_t *fixed;
- uint32_t tcon_id = 0;
req = tevent_req_create(mem_ctx, &state,
struct smb2cli_read_state);
@@ -67,15 +66,10 @@ struct tevent_req *smb2cli_read_send(TALLOC_CTX *mem_ctx,
SBVAL(fixed, 32, minimum_count);
SBVAL(fixed, 40, remaining_bytes);
- if (tcon) {
- tcon_id = smb2cli_tcon_current_id(tcon);
- }
-
subreq = smb2cli_req_send(state, ev, conn, SMB2_OP_READ,
0, 0, /* flags */
timeout_msec,
- 0xFEFF, /* pid */
- tcon_id,
+ tcon,
session,
state->fixed, sizeof(state->fixed),
state->dyn_pad, sizeof(state->dyn_pad));
diff --git a/libcli/smb/smb2cli_session.c b/libcli/smb/smb2cli_session.c
index 640eb95..d34fbd4 100644
--- a/libcli/smb/smb2cli_session.c
+++ b/libcli/smb/smb2cli_session.c
@@ -99,8 +99,7 @@ struct tevent_req *smb2cli_session_setup_send(TALLOC_CTX *mem_ctx,
conn, SMB2_OP_SESSSETUP,
0, 0, /* flags */
timeout_msec,
- 0xFEFF,
- 0, /* tid */
+ NULL, /* tcon */
session,
state->fixed, sizeof(state->fixed),
dyn, dyn_len);
@@ -256,8 +255,7 @@ struct tevent_req *smb2cli_logoff_send(TALLOC_CTX *mem_ctx,
conn, SMB2_OP_LOGOFF,
0, 0, /* flags */
timeout_msec,
- 0xFEFF, /* pid */
- 0, /* tid */
+ NULL, /* tcon */
session,
state->fixed, sizeof(state->fixed),
NULL, 0);
diff --git a/libcli/smb/smb2cli_set_info.c b/libcli/smb/smb2cli_set_info.c
index e33ba83..41fe83e 100644
--- a/libcli/smb/smb2cli_set_info.c
+++ b/libcli/smb/smb2cli_set_info.c
@@ -50,7 +50,6 @@ struct tevent_req *smb2cli_set_info_send(TALLOC_CTX *mem_ctx,
size_t dyn_len;
uint16_t input_buffer_offset = 0;
uint32_t input_buffer_length = 0;
- uint32_t tcon_id = 0;
req = tevent_req_create(mem_ctx, &state,
struct smb2cli_set_info_state);
@@ -83,15 +82,10 @@ struct tevent_req *smb2cli_set_info_send(TALLOC_CTX *mem_ctx,
dyn_len = sizeof(state->dyn_pad);
}
- if (tcon) {
- tcon_id = smb2cli_tcon_current_id(tcon);
- }
-
subreq = smb2cli_req_send(state, ev, conn, SMB2_OP_SETINFO,
0, 0, /* flags */
timeout_msec,
- 0xFEFF, /* pid */
- tcon_id,
+ tcon,
session,
state->fixed, sizeof(state->fixed),
dyn, dyn_len);
diff --git a/libcli/smb/smb2cli_write.c b/libcli/smb/smb2cli_write.c
index cd98e5e..a149924 100644
--- a/libcli/smb/smb2cli_write.c
+++ b/libcli/smb/smb2cli_write.c
@@ -49,7 +49,6 @@ struct tevent_req *smb2cli_write_send(TALLOC_CTX *mem_ctx,
uint8_t *fixed;
const uint8_t *dyn;
size_t dyn_len;
- uint32_t tcon_id = 0;
req = tevent_req_create(mem_ctx, &state,
struct smb2cli_write_state);
@@ -76,15 +75,10 @@ struct tevent_req *smb2cli_write_send(TALLOC_CTX *mem_ctx,
dyn_len = sizeof(state->dyn_pad);
}
- if (tcon) {
- tcon_id = smb2cli_tcon_current_id(tcon);
- }
-
subreq = smb2cli_req_send(state, ev, conn, SMB2_OP_WRITE,
0, 0, /* flags */
timeout_msec,
- 0xFEFF, /* pid */
- tcon_id,
+ tcon,
session,
state->fixed, sizeof(state->fixed),
dyn, dyn_len);
diff --git a/libcli/smb/smbXcli_base.c b/libcli/smb/smbXcli_base.c
index 037c0dd..7a5a0b0 100644
--- a/libcli/smb/smbXcli_base.c
+++ b/libcli/smb/smbXcli_base.c
@@ -167,6 +167,7 @@ struct smbXcli_tcon {
uint32_t flags;
uint32_t capabilities;
uint32_t maximal_access;
+ bool should_encrypt;
} smb2;
};
@@ -2365,10 +2366,9 @@ static bool smb2cli_req_cancel(struct tevent_req *req)
tevent_req_data(req,
struct smbXcli_req_state);
uint32_t flags = IVAL(state->smb2.hdr, SMB2_HDR_FLAGS);
- uint32_t pid = IVAL(state->smb2.hdr, SMB2_HDR_PID);
- uint32_t tid = IVAL(state->smb2.hdr, SMB2_HDR_TID);
uint64_t mid = BVAL(state->smb2.hdr, SMB2_HDR_MESSAGE_ID);
uint64_t aid = BVAL(state->smb2.hdr, SMB2_HDR_ASYNC_ID);
+ struct smbXcli_tcon *tcon = state->tcon;
struct smbXcli_session *session = state->session;
uint8_t *fixed = state->smb2.pad;
uint16_t fixed_len = 4;
@@ -2384,7 +2384,7 @@ static bool smb2cli_req_cancel(struct tevent_req *req)
SMB2_OP_CANCEL,
flags, 0,
0, /* timeout */
- pid, tid, session,
+ tcon, session,
fixed, fixed_len,
NULL, 0);
if (subreq == NULL) {
@@ -2397,8 +2397,6 @@ static bool smb2cli_req_cancel(struct tevent_req *req)
}
SIVAL(substate->smb2.hdr, SMB2_HDR_FLAGS, flags);
- SIVAL(substate->smb2.hdr, SMB2_HDR_PID, pid);
- SIVAL(substate->smb2.hdr, SMB2_HDR_TID, tid);
SBVAL(substate->smb2.hdr, SMB2_HDR_MESSAGE_ID, mid);
SBVAL(substate->smb2.hdr, SMB2_HDR_ASYNC_ID, aid);
@@ -2426,8 +2424,7 @@ struct tevent_req *smb2cli_req_create(TALLOC_CTX *mem_ctx,
uint32_t additional_flags,
uint32_t clear_flags,
uint32_t timeout_msec,
- uint32_t pid,
- uint32_t tid,
+ struct smbXcli_tcon *tcon,
struct smbXcli_session *session,
const uint8_t *fixed,
uint16_t fixed_len,
@@ -2437,6 +2434,7 @@ struct tevent_req *smb2cli_req_create(TALLOC_CTX *mem_ctx,
struct tevent_req *req;
struct smbXcli_req_state *state;
uint32_t flags = 0;
+ uint32_t tid = 0;
uint64_t uid = 0;
req = tevent_req_create(mem_ctx, &state,
@@ -2448,6 +2446,7 @@ struct tevent_req *smb2cli_req_create(TALLOC_CTX *mem_ctx,
state->ev = ev;
state->conn = conn;
state->session = session;
+ state->tcon = tcon;
if (session) {
uid = session->smb2.session_id;
@@ -2455,8 +2454,6 @@ struct tevent_req *smb2cli_req_create(TALLOC_CTX *mem_ctx,
state->smb2.should_sign = session->smb2.should_sign;
state->smb2.should_encrypt = session->smb2.should_encrypt;
- /* TODO: turn on encryption based on the tree connect. */
-
if (cmd == SMB2_OP_SESSSETUP &&
session->smb2.signing_key.length != 0) {
state->smb2.should_sign = true;
@@ -2466,12 +2463,20 @@ struct tevent_req *smb2cli_req_create(TALLOC_CTX *mem_ctx,
session->smb2.channel_signing_key.length == 0) {
state->smb2.should_encrypt = false;
}
+ }
- if (state->smb2.should_encrypt) {
- state->smb2.should_sign = false;
+ if (tcon) {
+ tid = tcon->smb2.tcon_id;
+
+ if (tcon->smb2.should_encrypt) {
+ state->smb2.should_encrypt = true;
}
}
+ if (state->smb2.should_encrypt) {
+ state->smb2.should_sign = false;
+ }
+
state->smb2.recv_iov = talloc_zero_array(state, struct iovec, 3);
if (state->smb2.recv_iov == NULL) {
TALLOC_FREE(req);
@@ -2495,7 +2500,7 @@ struct tevent_req *smb2cli_req_create(TALLOC_CTX *mem_ctx,
SSVAL(state->smb2.hdr, SMB2_HDR_LENGTH, SMB2_HDR_BODY);
SSVAL(state->smb2.hdr, SMB2_HDR_OPCODE, cmd);
SIVAL(state->smb2.hdr, SMB2_HDR_FLAGS, flags);
- SIVAL(state->smb2.hdr, SMB2_HDR_PID, pid);
+ SIVAL(state->smb2.hdr, SMB2_HDR_PID, 0); /* reserved */
SIVAL(state->smb2.hdr, SMB2_HDR_TID, tid);
SBVAL(state->smb2.hdr, SMB2_HDR_SESSION_ID, uid);
@@ -2794,8 +2799,7 @@ struct tevent_req *smb2cli_req_send(TALLOC_CTX *mem_ctx,
uint32_t additional_flags,
uint32_t clear_flags,
uint32_t timeout_msec,
- uint32_t pid,
- uint32_t tid,
+ struct smbXcli_tcon *tcon,
struct smbXcli_session *session,
const uint8_t *fixed,
uint16_t fixed_len,
@@ -2808,7 +2812,7 @@ struct tevent_req *smb2cli_req_send(TALLOC_CTX *mem_ctx,
req = smb2cli_req_create(mem_ctx, ev, conn, cmd,
additional_flags, clear_flags,
timeout_msec,
- pid, tid, session,
+ tcon, session,
fixed, fixed_len, dyn, dyn_len);
if (req == NULL) {
return NULL;
@@ -3999,7 +4003,7 @@ static struct tevent_req *smbXcli_negprot_smb2_subreq(struct smbXcli_negprot_sta
state->conn, SMB2_OP_NEGPROT,
0, 0, /* flags */
state->timeout_msec,
- 0xFEFF, 0, NULL, /* pid, tid, session */
+ NULL, NULL, /* tcon, session */
state->smb2.fixed, sizeof(state->smb2.fixed),
state->smb2.dyn, dialect_count*2);
}
@@ -4617,7 +4621,13 @@ uint32_t smb2cli_tcon_current_id(struct smbXcli_tcon *tcon)
return tcon->smb2.tcon_id;
}
+uint32_t smb2cli_tcon_capabilities(struct smbXcli_tcon *tcon)
+{
+ return tcon->smb2.capabilities;
+}
+
void smb2cli_tcon_set_values(struct smbXcli_tcon *tcon,
+ struct smbXcli_session *session,
uint32_t tcon_id,
uint8_t type,
uint32_t flags,
@@ -4629,4 +4639,16 @@ void smb2cli_tcon_set_values(struct smbXcli_tcon *tcon,
tcon->smb2.flags = flags;
tcon->smb2.capabilities = capabilities;
tcon->smb2.maximal_access = maximal_access;
+
+ tcon->smb2.should_encrypt = false;
+
+ if (session == NULL) {
+ return;
+ }
+
+ tcon->smb2.should_encrypt = session->smb2.should_encrypt;
+
+ if (flags & SMB2_SHAREFLAG_ENCRYPT_DATA) {
+ tcon->smb2.should_encrypt = true;
+ }
}
diff --git a/libcli/smb/smbXcli_base.h b/libcli/smb/smbXcli_base.h
index 60ef272..804fe44 100644
--- a/libcli/smb/smbXcli_base.h
+++ b/libcli/smb/smbXcli_base.h
@@ -200,8 +200,7 @@ struct tevent_req *smb2cli_req_create(TALLOC_CTX *mem_ctx,
uint32_t additional_flags,
uint32_t clear_flags,
uint32_t timeout_msec,
- uint32_t pid,
- uint32_t tid,
+ struct smbXcli_tcon *tcon,
struct smbXcli_session *session,
const uint8_t *fixed,
uint16_t fixed_len,
@@ -224,8 +223,7 @@ struct tevent_req *smb2cli_req_send(TALLOC_CTX *mem_ctx,
uint32_t additional_flags,
uint32_t clear_flags,
uint32_t timeout_msec,
- uint32_t pid,
- uint32_t tid,
+ struct smbXcli_tcon *tcon,
struct smbXcli_session *session,
const uint8_t *fixed,
uint16_t fixed_len,
@@ -284,7 +282,9 @@ bool smb1cli_tcon_set_values(struct smbXcli_tcon *tcon,
const char *service,
const char *fs_type);
uint32_t smb2cli_tcon_current_id(struct smbXcli_tcon *tcon);
+uint32_t smb2cli_tcon_capabilities(struct smbXcli_tcon *tcon);
void smb2cli_tcon_set_values(struct smbXcli_tcon *tcon,
+ struct smbXcli_session *session,
uint32_t tcon_id,
uint8_t type,
uint32_t flags,
diff --git a/source3/include/client.h b/source3/include/client.h
index 00a7e1b..748f78e 100644
--- a/source3/include/client.h
+++ b/source3/include/client.h
@@ -108,16 +108,8 @@ struct cli_state {
} smb1;
struct {
- uint32_t pid;
- uint32_t tid;
struct smbXcli_session *session;
struct smbXcli_tcon *tcon;
-
--
Samba Shared Repository
More information about the samba-cvs
mailing list