summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2018-08-07 15:11:22 +0200
committerStefan Metzmacher <metze@samba.org>2018-09-05 13:35:28 +0200
commit3d8fdc38453adb7a323b342c40226686bc9f3b41 (patch)
treef0e8cdc406ac744ebf52c3f18bbdc57be0c089c4
parent0e8298e565657feee4fedec9e029d51504b903d8 (diff)
downloadsamba-3d8fdc38453adb7a323b342c40226686bc9f3b41.tar.gz
torture: Make sure that fruit_ftruncate only unlinks streams
Follow-up to Bug: https://bugzilla.samba.org/show_bug.cgi?id=13441 Signed-off-by: Volker Lendecke <vl@samba.org> Reviewed-by: Ralph Boehme <slow@samba.org> (cherry picked from commit c39ec64231b261fe4ada02f1f1b9aa344cf35bb5)
-rw-r--r--selftest/knownfail.d/samba3.vfs.fruit1
-rw-r--r--source4/torture/vfs/fruit.c45
2 files changed, 46 insertions, 0 deletions
diff --git a/selftest/knownfail.d/samba3.vfs.fruit b/selftest/knownfail.d/samba3.vfs.fruit
index 8df25bccb79..d858452eb52 100644
--- a/selftest/knownfail.d/samba3.vfs.fruit
+++ b/selftest/knownfail.d/samba3.vfs.fruit
@@ -1 +1,2 @@
^samba3.vfs.fruit streams_depot.OS X AppleDouble file conversion\(nt4_dc\)
+^samba3.vfs.fruit .*.setinfo eof stream\(nt4_dc\)
diff --git a/source4/torture/vfs/fruit.c b/source4/torture/vfs/fruit.c
index 9dec2546da7..31be116f71e 100644
--- a/source4/torture/vfs/fruit.c
+++ b/source4/torture/vfs/fruit.c
@@ -4768,6 +4768,51 @@ static bool test_setinfo_stream_eof(struct torture_context *tctx,
tctx, status, NT_STATUS_OBJECT_NAME_NOT_FOUND, ret, done,
"Unexpected status\n");
+ torture_comment(
+ tctx, "Setting main file EOF to 1 to force 0-truncate\n");
+
+ status = torture_smb2_testfile_access(
+ tree,
+ fname,
+ &h1,
+ SEC_FILE_WRITE_DATA);
+ torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
+ "torture_smb2_testfile 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 = 1;
+ status = smb2_setinfo_file(tree, &sfinfo);
+ torture_assert_ntstatus_ok_goto(
+ tctx,
+ status,
+ ret,
+ done,
+ "set eof 1 failed\n");
+
+ 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");
+
+ 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 = fname;
+
+ status = smb2_create(tree, tctx, &create);
+ torture_assert_ntstatus_ok_goto(tctx, status, ret, done,
+ "torture_smb2_testfile failed\n");
+ smb2_util_close(tree, h1);
done:
smb2_util_unlink(tree, fname);
smb2_util_rmdir(tree, BASEDIR);