*/
#include "includes.h"
-#include "libcli/raw/libcliraw.h"
+#include "librpc/gen_ndr/security.h"
#include "libcli/smb2/smb2.h"
#include "libcli/smb2/smb2_calls.h"
-#include "lib/cmdline/popt_common.h"
-#include "lib/events/events.h"
+#include "torture/torture.h"
+#include "torture/smb2/proto.h"
/*
send a close
TALLOC_CTX *tmp_ctx = talloc_new(tree);
ZERO_STRUCT(io);
- io.in.flags = SMB2_CLOSE_FLAGS_FULL_INFORMATION;
- io.in.handle = handle;
+ io.in.file.handle = handle;
+ io.in.flags = SMB2_CLOSE_FLAGS_FULL_INFORMATION;
status = smb2_close(tree, &io);
if (!NT_STATUS_IS_OK(status)) {
printf("close failed - %s\n", nt_errstr(status));
if (lp_parm_bool(-1, "torture", "dangerous", False)) {
data = data_blob_talloc(tree, NULL, 160000);
+ } else if (lp_parm_bool(-1, "torture", "samba4", False)) {
+ data = data_blob_talloc(tree, NULL, UINT16_MAX);
} else {
data = data_blob_talloc(tree, NULL, 120000);
}
}
ZERO_STRUCT(w);
+ w.in.file.handle = handle;
w.in.offset = 0;
- w.in.handle = handle;
w.in.data = data;
status = smb2_write(tree, &w);
torture_smb2_all_info(tree, handle);
ZERO_STRUCT(f);
- f.in.handle = handle;
+ f.in.file.handle = handle;
status = smb2_flush(tree, &f);
if (!NT_STATUS_IS_OK(status)) {
}
ZERO_STRUCT(r);
+ r.in.file.handle = handle;
r.in.length = data.length;
r.in.offset = 0;
- r.in.handle = handle;
status = smb2_read(tree, tree, &r);
if (!NT_STATUS_IS_OK(status)) {
status = smb2_create(tree, tmp_ctx, &io);
if (!NT_STATUS_IS_OK(status)) {
printf("create1 failed - %s\n", nt_errstr(status));
- return io.out.handle;
+ return io.out.file.handle;
}
if (DEBUGLVL(1)) {
printf("size = %lld\n", (long long)io.out.size);
printf("file_attr = 0x%x\n", io.out.file_attr);
printf("handle = %016llx%016llx\n",
- (long long)io.out.handle.data[0],
- (long long)io.out.handle.data[1]);
+ (long long)io.out.file.handle.data[0],
+ (long long)io.out.file.handle.data[1]);
}
talloc_free(tmp_ctx);
- return io.out.handle;
+ return io.out.file.handle;
}
/*
basic testing of SMB2 connection calls
*/
-BOOL torture_smb2_connect(void)
+BOOL torture_smb2_connect(struct torture_context *torture)
{
TALLOC_CTX *mem_ctx = talloc_new(NULL);
struct smb2_tree *tree;
h1 = torture_smb2_create(tree, "test9.dat");
h2 = torture_smb2_create(tree, "test9.dat");
- torture_smb2_write(tree, h1);
- torture_smb2_close(tree, h1);
- torture_smb2_close(tree, h2);
+ status = torture_smb2_write(tree, h1);
+ if (!NT_STATUS_IS_OK(status)) {
+ printf("Write failed - %s\n", nt_errstr(status));
+ return False;
+ }
+ status = torture_smb2_close(tree, h1);
+ if (!NT_STATUS_IS_OK(status)) {
+ printf("Close failed - %s\n", nt_errstr(status));
+ return False;
+ }
+ status = torture_smb2_close(tree, h2);
+ if (!NT_STATUS_IS_OK(status)) {
+ printf("Close failed - %s\n", nt_errstr(status));
+ return False;
+ }
+
+ status = smb2_util_close(tree, h1);
+ if (!NT_STATUS_EQUAL(status, NT_STATUS_FILE_CLOSED)) {
+ printf("close should have closed the handle - %s\n", nt_errstr(status));
+ return False;
+ }
status = smb2_tdis(tree);
if (!NT_STATUS_IS_OK(status)) {
return False;
}
- status = smb2_logoff(tree);
+ status = smb2_logoff(tree->session);
if (!NT_STATUS_IS_OK(status)) {
printf("Logoff failed - %s\n", nt_errstr(status));
return False;
}
- status = smb2_logoff(tree);
+ status = smb2_logoff(tree->session);
if (!NT_STATUS_EQUAL(status, NT_STATUS_USER_SESSION_DELETED)) {
printf("Logoff should have disabled session - %s\n", nt_errstr(status));
return False;
}
- status = smb2_keepalive(tree);
+ status = smb2_keepalive(tree->session->transport);
if (!NT_STATUS_IS_OK(status)) {
printf("keepalive failed? - %s\n", nt_errstr(status));
return False;