s3: Extract the guest_login field in sesssetup
authorVolker Lendecke <vl@samba.org>
Sun, 29 May 2011 08:58:05 +0000 (10:58 +0200)
committerVolker Lendecke <vl@samba.org>
Sun, 29 May 2011 10:49:34 +0000 (12:49 +0200)
source3/include/client.h
source3/libsmb/cliconnect.c

index b51da909732cff04eb5d8d181a5e32e0274ea1e7..7d66bf912cd14ca84538cad2980f20a6e526df2a 100644 (file)
@@ -109,6 +109,7 @@ struct cli_state {
        int initialised;
        int win95;
        bool is_samba;
+       bool is_guestlogin;
        uint32 capabilities;
        /* What the server offered. */
        uint32_t server_posix_capabilities;
index 0917886752228c21c125dee61734bd1898a0594c..bc220280ebb0fa2e5f8a050a5805df5c90848939 100644 (file)
@@ -260,8 +260,10 @@ static void cli_session_setup_lanman2_done(struct tevent_req *subreq)
        uint8_t *p;
        NTSTATUS status;
        ssize_t ret;
+       uint8_t wct;
+       uint16_t *vwv;
 
-       status = cli_smb_recv(subreq, state, &in, 0, NULL, NULL,
+       status = cli_smb_recv(subreq, state, &in, 3, &wct, &vwv,
                              &num_bytes, &bytes);
        TALLOC_FREE(subreq);
        if (!NT_STATUS_IS_OK(status)) {
@@ -273,6 +275,7 @@ static void cli_session_setup_lanman2_done(struct tevent_req *subreq)
        p = bytes;
 
        cli->vuid = SVAL(inbuf, smb_uid);
+       cli->is_guestlogin = ((SVAL(vwv+2, 0) & 1) != 0);
 
        status = smb_bytes_talloc_string(cli,
                                        inbuf,
@@ -485,8 +488,10 @@ static void cli_session_setup_guest_done(struct tevent_req *subreq)
        uint8_t *p;
        NTSTATUS status;
        ssize_t ret;
+       uint8_t wct;
+       uint16_t *vwv;
 
-       status = cli_smb_recv(subreq, state, &in, 0, NULL, NULL,
+       status = cli_smb_recv(subreq, state, &in, 3, &wct, &vwv,
                              &num_bytes, &bytes);
        TALLOC_FREE(subreq);
        if (!NT_STATUS_IS_OK(status)) {
@@ -498,6 +503,7 @@ static void cli_session_setup_guest_done(struct tevent_req *subreq)
        p = bytes;
 
        cli->vuid = SVAL(inbuf, smb_uid);
+       cli->is_guestlogin = ((SVAL(vwv+2, 0) & 1) != 0);
 
        status = smb_bytes_talloc_string(cli,
                                        inbuf,
@@ -690,8 +696,10 @@ static void cli_session_setup_plain_done(struct tevent_req *subreq)
        uint8_t *p;
        NTSTATUS status;
        ssize_t ret;
+       uint8_t wct;
+       uint16_t *vwv;
 
-       status = cli_smb_recv(subreq, state, &in, 0, NULL, NULL,
+       status = cli_smb_recv(subreq, state, &in, 3, &wct, &vwv,
                              &num_bytes, &bytes);
        TALLOC_FREE(subreq);
        if (tevent_req_nterror(req, status)) {
@@ -702,6 +710,7 @@ static void cli_session_setup_plain_done(struct tevent_req *subreq)
        p = bytes;
 
        cli->vuid = SVAL(inbuf, smb_uid);
+       cli->is_guestlogin = ((SVAL(vwv+2, 0) & 1) != 0);
 
        status = smb_bytes_talloc_string(cli,
                                        inbuf,
@@ -1043,8 +1052,10 @@ static void cli_session_setup_nt1_done(struct tevent_req *subreq)
        uint8_t *p;
        NTSTATUS status;
        ssize_t ret;
+       uint8_t wct;
+       uint16_t *vwv;
 
-       status = cli_smb_recv(subreq, state, &in, 0, NULL, NULL,
+       status = cli_smb_recv(subreq, state, &in, 3, &wct, &vwv,
                              &num_bytes, &bytes);
        TALLOC_FREE(subreq);
        if (!NT_STATUS_IS_OK(status)) {
@@ -1056,6 +1067,7 @@ static void cli_session_setup_nt1_done(struct tevent_req *subreq)
        p = bytes;
 
        cli->vuid = SVAL(inbuf, smb_uid);
+       cli->is_guestlogin = ((SVAL(vwv+2, 0) & 1) != 0);
 
        status = smb_bytes_talloc_string(cli,
                                        inbuf,
@@ -1294,6 +1306,7 @@ static void cli_sesssetup_blob_done(struct tevent_req *subreq)
 
        state->inbuf = (char *)inbuf;
        cli->vuid = SVAL(state->inbuf, smb_uid);
+       cli->is_guestlogin = ((SVAL(vwv+2, 0) & 1) != 0);
 
        blob_length = SVAL(vwv+3, 0);
        if (blob_length > num_bytes) {