s3:torture: test smb2cli_logoff and smb2cli_tdis
authorStefan Metzmacher <metze@samba.org>
Thu, 24 Nov 2011 11:33:19 +0000 (12:33 +0100)
committerStefan Metzmacher <metze@samba.org>
Thu, 24 Nov 2011 19:36:31 +0000 (20:36 +0100)
metze

Autobuild-User: Stefan Metzmacher <metze@samba.org>
Autobuild-Date: Thu Nov 24 20:36:31 CET 2011 on sn-devel-104

source3/torture/test_smb2.c

index d33b7ab3cd33c71ee1d9b9da35844c6731db897e..34fac4d958d1bba177b0ca7756c2a59028d37413 100644 (file)
@@ -38,6 +38,8 @@ bool run_smb2_basic(int dummy)
        uint32_t nread;
        uint8_t *dir_data;
        uint32_t dir_data_length;
+       uint32_t saved_tid = 0;
+       uint64_t saved_uid = 0;
 
        printf("Starting SMB2-BASIC\n");
 
@@ -156,6 +158,41 @@ bool run_smb2_basic(int dummy)
                return false;
        }
 
+       saved_tid = cli->smb2.tid;
+       status = smb2cli_tdis(cli);
+       if (!NT_STATUS_IS_OK(status)) {
+               printf("smb2cli_tdis returned %s\n", nt_errstr(status));
+               return false;
+       }
+       cli->smb2.tid = saved_tid;
+
+       status = smb2cli_tdis(cli);
+       if (!NT_STATUS_EQUAL(status, NT_STATUS_NETWORK_NAME_DELETED)) {
+               printf("2nd smb2cli_tdis returned %s\n", nt_errstr(status));
+               return false;
+       }
+
+       saved_uid = smb2cli_session_current_id(cli->smb2.session);
+       status = smb2cli_logoff(cli);
+       if (!NT_STATUS_IS_OK(status)) {
+               printf("smb2cli_logoff returned %s\n", nt_errstr(status));
+               return false;
+       }
+
+       cli->smb2.session = smbXcli_session_create(cli, cli->conn);
+       if (cli->smb2.session == NULL) {
+               printf("smbXcli_session_create() returned NULL\n");
+               return false;
+       }
+
+       smb2cli_session_set_id_and_flags(cli->smb2.session, saved_uid, 0);
+
+       status = smb2cli_logoff(cli);
+       if (!NT_STATUS_EQUAL(status, NT_STATUS_USER_SESSION_DELETED)) {
+               printf("2nd smb2cli_logoff returned %s\n", nt_errstr(status));
+               return false;
+       }
+
        return true;
 }