s3:libsmb:smb2: pass previous session ID to session setup, not previous session
authorMichael Adam <obnox@samba.org>
Sun, 26 Feb 2012 16:35:28 +0000 (17:35 +0100)
committerMichael Adam <obnox@samba.org>
Mon, 27 Feb 2012 23:08:52 +0000 (00:08 +0100)
We only need the session, and under some circumstances, it might complicate
things for the caller to have to cope with the whole structure (talloc...).

source3/libsmb/cliconnect.c
source3/libsmb/smb2cli.h
source3/libsmb/smb2cli_session.c
source3/torture/test_smb2.c
source4/libcli/smb2/session.c

index 79b9496f8bf756511f4c52b31c454c4fd2cbcf35..9d4e4e1f9962eb517e47c5616f6d54a686fb7821 100644 (file)
@@ -1232,7 +1232,7 @@ static bool cli_sesssetup_blob_next(struct cli_sesssetup_blob_state *state,
                                                    0, /* in_flags */
                                                    SMB2_CAP_DFS, /* in_capabilities */
                                                    0, /* in_channel */
-                                                   NULL, /* in_previous_session */
+                                                   0, /* in_previous_session_id */
                                                    &state->smb2_blob);
                if (subreq == NULL) {
                        return false;
index 65e2f71aa771c16de7788f124b07f3f6ae9a76a1..184bd10fa009bbbe44fd870fadb4b4d2df2631ca 100644 (file)
@@ -32,7 +32,7 @@ struct tevent_req *smb2cli_session_setup_send(TALLOC_CTX *mem_ctx,
                                uint8_t in_flags,
                                uint32_t in_capabilities,
                                uint32_t in_channel,
-                               struct smbXcli_session *in_previous_session,
+                               uint64_t in_previous_session_id,
                                const DATA_BLOB *in_security_buffer);
 NTSTATUS smb2cli_session_setup_recv(struct tevent_req *req,
                                    TALLOC_CTX *mem_ctx,
index d1d65f3f43d625f98858d1151515867f8b3b8301..13412d1606d2d5e5c6f276a6779d22efb9ddd448 100644 (file)
@@ -46,7 +46,7 @@ struct tevent_req *smb2cli_session_setup_send(TALLOC_CTX *mem_ctx,
                                uint8_t in_flags,
                                uint32_t in_capabilities,
                                uint32_t in_channel,
-                               struct smbXcli_session *in_previous_session,
+                               uint64_t in_previous_session_id,
                                const DATA_BLOB *in_security_buffer)
 {
        struct tevent_req *req, *subreq;
@@ -57,7 +57,6 @@ struct tevent_req *smb2cli_session_setup_send(TALLOC_CTX *mem_ctx,
        uint8_t security_mode;
        uint16_t security_buffer_offset = 0;
        uint16_t security_buffer_length = 0;
-       uint64_t previous_session_id = 0;
 
        req = tevent_req_create(mem_ctx, &state,
                                struct smb2cli_session_setup_state);
@@ -81,11 +80,6 @@ struct tevent_req *smb2cli_session_setup_send(TALLOC_CTX *mem_ctx,
                security_buffer_length = in_security_buffer->length;
        }
 
-       if (in_previous_session) {
-               previous_session_id =
-                       smb2cli_session_current_id(in_previous_session);
-       }
-
        buf = state->fixed;
 
        SSVAL(buf,  0, 25);
@@ -95,7 +89,7 @@ struct tevent_req *smb2cli_session_setup_send(TALLOC_CTX *mem_ctx,
        SIVAL(buf,  8, in_channel);
        SSVAL(buf, 12, security_buffer_offset);
        SSVAL(buf, 14, security_buffer_length);
-       SBVAL(buf, 16, previous_session_id);
+       SBVAL(buf, 16, in_previous_session_id);
 
        if (security_buffer_length > 0) {
                dyn = in_security_buffer->data;
index 5b37213f129b54b07316ce323585aed754805681..9334ab73bcc344940d63f0301f3bc3a6d90d18a6 100644 (file)
@@ -426,7 +426,8 @@ bool run_smb2_session_reconnect(int dummy)
                                            0x0, /* in_flags */
                                            SMB2_CAP_DFS, /* in_capabilities */
                                            0, /* in_channel */
-                                           cli1->smb2.session, /* in_previous_session */
+                                           /* in_previous_session_id: */
+                                           smb2cli_session_current_id(cli1->smb2.session),
                                            &in_blob); /* in_security_buffer */
        if (subreq == NULL) {
                printf("smb2cli_session_setup_send() returned NULL\n");
@@ -460,7 +461,8 @@ bool run_smb2_session_reconnect(int dummy)
                                            0x0, /* in_flags */
                                            SMB2_CAP_DFS, /* in_capabilities */
                                            0, /* in_channel */
-                                           cli1->smb2.session, /* in_previous_session */
+                                           /* in_previous_session_id: */
+                                           smb2cli_session_current_id(cli1->smb2.session),
                                            &in_blob); /* in_security_buffer */
        if (subreq == NULL) {
                printf("smb2cli_session_setup_send() returned NULL\n");
@@ -881,7 +883,7 @@ bool run_smb2_multi_channel(int dummy)
                                            0x01, /* in_flags */
                                            SMB2_CAP_DFS, /* in_capabilities */
                                            0, /* in_channel */
-                                           NULL, /* in_previous_session */
+                                           0, /* in_previous_session_id */
                                            &in_blob); /* in_security_buffer */
        if (subreq == NULL) {
                printf("smb2cli_session_setup_send() returned NULL\n");
@@ -915,7 +917,7 @@ bool run_smb2_multi_channel(int dummy)
                                            0x01, /* in_flags */
                                            SMB2_CAP_DFS, /* in_capabilities */
                                            0, /* in_channel */
-                                           NULL, /* in_previous_session */
+                                           0, /* in_previous_session_id */
                                            &in_blob); /* in_security_buffer */
        if (subreq == NULL) {
                printf("smb2cli_session_setup_send() returned NULL\n");
@@ -1143,7 +1145,7 @@ bool run_smb2_session_reauth(int dummy)
                                            0x0, /* in_flags */
                                            SMB2_CAP_DFS, /* in_capabilities */
                                            0, /* in_channel */
-                                           NULL, /* in_previous_session */
+                                           0, /* in_previous_session_id */
                                            &in_blob); /* in_security_buffer */
        if (subreq == NULL) {
                printf("smb2cli_session_setup_send() returned NULL\n");
@@ -1199,7 +1201,7 @@ bool run_smb2_session_reauth(int dummy)
                                            0x0, /* in_flags */
                                            SMB2_CAP_DFS, /* in_capabilities */
                                            0, /* in_channel */
-                                           NULL, /* in_previous_session */
+                                           0, /* in_previous_session_id */
                                            &in_blob); /* in_security_buffer */
        if (subreq == NULL) {
                printf("smb2cli_session_setup_send() returned NULL\n");
index 097411813adc860c5a79dcb816847258aa0a180a..e26a65be3393ce675daf219c6d22435ff509bac4 100644 (file)
@@ -159,7 +159,7 @@ struct tevent_req *smb2_session_setup_spnego_send(TALLOC_CTX *mem_ctx,
                                            0, /* in_flags */
                                            0, /* in_capabilities */
                                            0, /* in_channel */
-                                           NULL, /* in_previous_session */
+                                           0, /* in_previous_session_id */
                                            &state->in_secblob);
        if (tevent_req_nomem(subreq, req)) {
                return tevent_req_post(req, ev);
@@ -239,7 +239,7 @@ static void smb2_session_setup_spnego_done(struct tevent_req *subreq)
                                            0, /* in_flags */
                                            0, /* in_capabilities */
                                            0, /* in_channel */
-                                           NULL, /* in_previous_session */
+                                           0, /* in_previous_session_id */
                                            &state->in_secblob);
        if (tevent_req_nomem(subreq, req)) {
                return;