summaryrefslogtreecommitdiff
path: root/source4
diff options
context:
space:
mode:
authorRalph Boehme <slow@samba.org>2018-10-22 12:43:16 +0200
committerKarolin Seeger <kseeger@samba.org>2018-11-06 09:10:24 +0100
commit0cad5ea4e913840e3b35624ccb29dacab644e23a (patch)
treea90cbff05dd300864b9b60b44d2a2461d0843d01 /source4
parent347c78f901707fca3756eafaa55ccf2648eb2137 (diff)
downloadsamba-0cad5ea4e913840e3b35624ccb29dacab644e23a.tar.gz
s4:torture/vfs/fruit: expand test "setinfo eof stream"
o Adds checks verifying that after setting eof to 0 on a stream, a subsequent open gets ENOENT, before and after closing the handle that had been used to set eof to 0. o Verify that a write to a handle succeeds after that handle has been used to set eof to 0 on a stream. Bug: https://bugzilla.samba.org/show_bug.cgi?id=13646 Signed-off-by: Ralph Boehme <slow@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org> (cherry picked from commit b35d9e74028727da24f349242cb0bc62403a9b09)
Diffstat (limited to 'source4')
-rw-r--r--source4/torture/vfs/fruit.c61
1 files changed, 61 insertions, 0 deletions
diff --git a/source4/torture/vfs/fruit.c b/source4/torture/vfs/fruit.c
index 22a434398e7..7be516593f1 100644
--- a/source4/torture/vfs/fruit.c
+++ b/source4/torture/vfs/fruit.c
@@ -4981,8 +4981,32 @@ static bool test_setinfo_stream_eof(struct torture_context *tctx,
torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
"set eof 0 failed\n");
+ ZERO_STRUCT(create);
+ create.in.desired_access = SEC_FILE_READ_ATTRIBUTE;
+ create.in.share_access = NTCREATEX_SHARE_ACCESS_MASK;
+ create.in.file_attributes = FILE_ATTRIBUTE_NORMAL;
+ create.in.create_disposition = NTCREATEX_DISP_OPEN;
+ create.in.fname = sname;
+
+ status = smb2_create(tree, tctx, &create);
+ torture_assert_ntstatus_equal_goto(
+ tctx, status, NT_STATUS_OBJECT_NAME_NOT_FOUND, ret, done,
+ "Unexpected status\n");
+
smb2_util_close(tree, h1);
+ ZERO_STRUCT(create);
+ create.in.desired_access = SEC_FILE_READ_ATTRIBUTE;
+ create.in.share_access = NTCREATEX_SHARE_ACCESS_MASK;
+ create.in.file_attributes = FILE_ATTRIBUTE_NORMAL;
+ create.in.create_disposition = NTCREATEX_DISP_OPEN;
+ create.in.fname = sname;
+
+ status = smb2_create(tree, tctx, &create);
+ torture_assert_ntstatus_equal_goto(
+ tctx, status, NT_STATUS_OBJECT_NAME_NOT_FOUND, ret, done,
+ "Unexpected status\n");
+
status = torture_smb2_testfile_access(tree, sname, &h1,
SEC_FILE_WRITE_DATA);
torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
@@ -5061,6 +5085,18 @@ static bool test_setinfo_stream_eof(struct torture_context *tctx,
torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
"set eof 0 failed\n");
+ ZERO_STRUCT(create);
+ create.in.desired_access = SEC_FILE_READ_ATTRIBUTE;
+ create.in.share_access = NTCREATEX_SHARE_ACCESS_MASK;
+ create.in.file_attributes = FILE_ATTRIBUTE_NORMAL;
+ create.in.create_disposition = NTCREATEX_DISP_OPEN;
+ create.in.fname = sname;
+
+ status = smb2_create(tree, tctx, &create);
+ torture_assert_ntstatus_equal_goto(
+ tctx, status, NT_STATUS_OBJECT_NAME_NOT_FOUND, ret, done,
+ "Unexpected status\n");
+
smb2_util_close(tree, h1);
ZERO_STRUCT(create);
@@ -5120,6 +5156,31 @@ static bool test_setinfo_stream_eof(struct torture_context *tctx,
torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
"torture_smb2_testfile failed\n");
smb2_util_close(tree, h1);
+
+ torture_comment(tctx, "Writing to stream after setting EOF to 0\n");
+ status = torture_smb2_testfile_access(tree, sname, &h1,
+ SEC_FILE_WRITE_DATA);
+ torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
+ "torture_smb2_testfile failed\n");
+
+ status = smb2_util_write(tree, h1, "1234567890", 0, 10);
+ torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
+ "smb2_util_write failed\n");
+
+ ZERO_STRUCT(sfinfo);
+ sfinfo.generic.in.file.handle = h1;
+ sfinfo.generic.level = RAW_SFILEINFO_END_OF_FILE_INFORMATION;
+ sfinfo.position_information.in.position = 0;
+ status = smb2_setinfo_file(tree, &sfinfo);
+ torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
+ "set eof 0 failed\n");
+
+ status = smb2_util_write(tree, h1, "1234567890", 0, 10);
+ torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
+ "smb2_util_write failed\n");
+
+ smb2_util_close(tree, h1);
+
done:
smb2_util_unlink(tree, fname);
smb2_util_rmdir(tree, BASEDIR);