The Samba-Bugzilla – Attachment 11006 Details for
Bug 11240
Incorrect file size returned in the response of "FILE_SUPERSEDE Create"
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
git-am fix for 4.2.next.
bug-11240-4.2 (text/plain), 7.67 KB, created by
Jeremy Allison
on 2015-04-30 22:22:39 UTC
(
hide
)
Description:
git-am fix for 4.2.next.
Filename:
MIME Type:
Creator:
Jeremy Allison
Created:
2015-04-30 22:22:39 UTC
Size:
7.67 KB
patch
obsolete
>From 492f5eef8aca76af94d0759700c468764ed62cf2 Mon Sep 17 00:00:00 2001 >From: Jeremy Allison <jra@samba.org> >Date: Tue, 28 Apr 2015 14:22:42 -0700 >Subject: [PATCH 1/2] s3: smbd: Incorrect file size returned in the response of > "FILE_SUPERSEDE Create" >MIME-Version: 1.0 >Content-Type: text/plain; charset=UTF-8 >Content-Transfer-Encoding: 8bit > >https://bugzilla.samba.org/show_bug.cgi?id=11240 > >Signed-off-by: Kenny Dinh <kdinh@peaxy.net> >Reviewed-by: Jeremy Allison <jra@samba.org> >Reviewed-by: Ralph Böhme <rb@sernet.de> >(cherry picked from commit d68383e9638254d1b6805b3d3ea3e5e897908374) >--- > source3/modules/vfs_default.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > >diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c >index 46589bf..b13ad14 100644 >--- a/source3/modules/vfs_default.c >+++ b/source3/modules/vfs_default.c >@@ -1904,8 +1904,6 @@ static int vfswrap_ftruncate(vfs_handle_struct *handle, files_struct *fsp, off_t > ftruncate extend but ext2 can. */ > > result = ftruncate(fsp->fh->fd, len); >- if (result == 0) >- goto done; > > /* According to W. R. Stevens advanced UNIX prog. Pure 4.3 BSD cannot > extend a file with ftruncate. Provide alternate implementation >@@ -1919,6 +1917,12 @@ static int vfswrap_ftruncate(vfs_handle_struct *handle, files_struct *fsp, off_t > if (!NT_STATUS_IS_OK(status)) { > goto done; > } >+ >+ /* We need to update the files_struct after successful ftruncate */ >+ if (result == 0) { >+ goto done; >+ } >+ > pst = &fsp->fsp_name->st; > > #ifdef S_ISFIFO >-- >2.2.0.rc0.207.ga3a616c > > >From fc6bb3e7d2f9803b3ae953cdb063932f16180050 Mon Sep 17 00:00:00 2001 >From: Jeremy Allison <jra@samba.org> >Date: Tue, 28 Apr 2015 16:33:30 -0700 >Subject: [PATCH 2/2] s4: torture: Test for incorrect file size returned in the > response of "FILE_SUPERSEDE Create". >MIME-Version: 1.0 >Content-Type: text/plain; charset=UTF-8 >Content-Transfer-Encoding: 8bit > >https://bugzilla.samba.org/show_bug.cgi?id=11240 > >Signed-off-by: Kenny Dinh <kdinh@peaxy.net> >Reviewed-by: Jeremy Allison <jra@samba.org> >Reviewed-by: Ralph Böhme <rb@sernet.de> > >Autobuild-User(master): Jeremy Allison <jra@samba.org> >Autobuild-Date(master): Thu Apr 30 22:12:22 CEST 2015 on sn-devel-104 > >(cherry picked from commit 9d7ecb9fc3a1dcce0d71bc0c4f02f9c7dd9408ab) >--- > selftest/knownfail | 1 + > source4/torture/raw/open.c | 102 +++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 103 insertions(+) > >diff --git a/selftest/knownfail b/selftest/knownfail >index af7e7fd..2c35a58 100644 >--- a/selftest/knownfail >+++ b/selftest/knownfail >@@ -128,6 +128,7 @@ > # some operations don't work over the CIFS NTVFS backend yet (eg. root_fid) > ^samba4.ntvfs.cifs.*.base.createx_sharemodes_dir > ^samba4.raw.lock.*.async # bug 6960 >+^samba4.raw.open.ntcreatex_supersede > ^samba4.smb2.lock.*.multiple-unlock # bug 6959 > ^samba4.raw.sfileinfo.*.end-of-file\(.*\)$ # bug 6962 > ^samba4.raw.oplock.*.batch22 # bug 6963 >diff --git a/source4/torture/raw/open.c b/source4/torture/raw/open.c >index 679a7c2..60b73f6 100644 >--- a/source4/torture/raw/open.c >+++ b/source4/torture/raw/open.c >@@ -2118,6 +2118,107 @@ done: > return ret; > } > >+/** >+ * Test for file size to be 0 after create with FILE_SUPERSEDE >+ */ >+static bool test_ntcreatex_supersede(struct torture_context *tctx, struct smbcli_state *cli) >+{ >+ union smb_open io; >+ union smb_setfileinfo sfi; >+ union smb_fileinfo finfo; >+ const char *fname = BASEDIR "\\torture_ntcreatex_supersede.txt"; >+ NTSTATUS status; >+ int fnum = -1; >+ bool ret = true; >+ >+ torture_assert(tctx, torture_setup_dir(cli, BASEDIR), "Failed to setup up test directory: " BASEDIR); >+ >+ /* reasonable default parameters */ >+ io.generic.level = RAW_OPEN_NTCREATEX; >+ io.ntcreatex.in.flags = 0; >+ io.ntcreatex.in.root_fid.fnum = 0; >+ io.ntcreatex.in.access_mask = SEC_RIGHTS_FILE_ALL; >+ io.ntcreatex.in.alloc_size = 0; >+ io.ntcreatex.in.file_attr = FILE_ATTRIBUTE_NORMAL; >+ io.ntcreatex.in.share_access = NTCREATEX_SHARE_ACCESS_NONE; >+ io.ntcreatex.in.open_disposition = NTCREATEX_DISP_CREATE; >+ io.ntcreatex.in.create_options = 0; >+ io.ntcreatex.in.impersonation = NTCREATEX_IMPERSONATION_ANONYMOUS; >+ io.ntcreatex.in.security_flags = 0; >+ io.ntcreatex.in.fname = fname; >+ >+ status = smb_raw_open(cli->tree, tctx, &io); >+ CHECK_STATUS(status, NT_STATUS_OK); >+ fnum = io.ntcreatex.out.file.fnum; >+ >+ CHECK_VAL(io.ntcreatex.out.oplock_level, 0); >+ CHECK_VAL(io.ntcreatex.out.create_action, NTCREATEX_ACTION_CREATED); >+ CHECK_NTTIME(io.ntcreatex.out.create_time, create_time); >+ CHECK_NTTIME(io.ntcreatex.out.access_time, access_time); >+ CHECK_NTTIME(io.ntcreatex.out.write_time, write_time); >+ CHECK_NTTIME(io.ntcreatex.out.change_time, change_time); >+ CHECK_ALL_INFO(io.ntcreatex.out.attrib, attrib); >+ CHECK_ALL_INFO(io.ntcreatex.out.alloc_size, alloc_size); >+ CHECK_ALL_INFO(io.ntcreatex.out.size, size); >+ CHECK_ALL_INFO(io.ntcreatex.out.is_directory, directory); >+ CHECK_VAL(io.ntcreatex.out.file_type, FILE_TYPE_DISK); >+ >+ /* extend the file size */ >+ ZERO_STRUCT(sfi); >+ sfi.generic.level = RAW_SFILEINFO_END_OF_FILE_INFO; >+ sfi.generic.in.file.fnum = fnum; >+ sfi.end_of_file_info.in.size = 512; >+ status = smb_raw_setfileinfo(cli->tree, &sfi); >+ CHECK_STATUS(status, NT_STATUS_OK); >+ >+ /* close the file and re-open with to verify new size */ >+ smbcli_close(cli->tree, fnum); >+ io.ntcreatex.in.open_disposition = NTCREATEX_DISP_OPEN; >+ io.ntcreatex.in.access_mask = SEC_RIGHTS_FILE_READ; >+ status = smb_raw_open(cli->tree, tctx, &io); >+ CHECK_STATUS(status, NT_STATUS_OK); >+ fnum = io.ntcreatex.out.file.fnum; >+ >+ CHECK_VAL(io.ntcreatex.out.oplock_level, 0); >+ CHECK_VAL(io.ntcreatex.out.create_action, NTCREATEX_ACTION_EXISTED); >+ CHECK_NTTIME(io.ntcreatex.out.create_time, create_time); >+ CHECK_NTTIME(io.ntcreatex.out.access_time, access_time); >+ CHECK_NTTIME(io.ntcreatex.out.write_time, write_time); >+ CHECK_NTTIME(io.ntcreatex.out.change_time, change_time); >+ CHECK_ALL_INFO(io.ntcreatex.out.attrib, attrib); >+ CHECK_ALL_INFO(io.ntcreatex.out.alloc_size, alloc_size); >+ CHECK_VAL(io.ntcreatex.out.size, 512); >+ CHECK_ALL_INFO(io.ntcreatex.out.is_directory, directory); >+ CHECK_VAL(io.ntcreatex.out.file_type, FILE_TYPE_DISK); >+ >+ /* close and re-open the file with SUPERSEDE flag */ >+ smbcli_close(cli->tree, fnum); >+ io.ntcreatex.in.open_disposition = NTCREATEX_DISP_SUPERSEDE; >+ io.ntcreatex.in.access_mask = SEC_RIGHTS_FILE_READ; >+ io.ntcreatex.in.file_attr = FILE_ATTRIBUTE_NORMAL; >+ io.ntcreatex.in.share_access = NTCREATEX_SHARE_ACCESS_NONE; >+ io.ntcreatex.in.create_options = 0; >+ >+ status = smb_raw_open(cli->tree, tctx, &io); >+ CHECK_STATUS(status, NT_STATUS_OK); >+ fnum = io.ntcreatex.out.file.fnum; >+ >+ /* The file size in the superseded create response should be 0 */ >+ CHECK_VAL(io.ntcreatex.out.size, 0); >+ CHECK_VAL(io.ntcreatex.out.oplock_level, 0); >+ CHECK_VAL(io.ntcreatex.out.create_action, FILE_WAS_SUPERSEDED); >+ CHECK_NTTIME(io.ntcreatex.out.create_time, create_time); >+ CHECK_NTTIME(io.ntcreatex.out.access_time, access_time); >+ CHECK_ALL_INFO(io.ntcreatex.out.attrib, attrib); >+ CHECK_ALL_INFO(io.ntcreatex.out.alloc_size, alloc_size); >+ CHECK_ALL_INFO(io.ntcreatex.out.is_directory, directory); >+ CHECK_VAL(io.ntcreatex.out.file_type, FILE_TYPE_DISK); >+done: >+ smbcli_close(cli->tree, fnum); >+ smbcli_deltree(cli->tree, BASEDIR); >+ >+ return ret; >+} > > /* basic testing of all RAW_OPEN_* calls > */ >@@ -2143,6 +2244,7 @@ struct torture_suite *torture_raw_open(TALLOC_CTX *mem_ctx) > torture_suite_add_1smb_test(suite, "opendisp-dir", test_ntcreatex_opendisp_dir); > torture_suite_add_1smb_test(suite, "ntcreatedir", test_ntcreatexdir); > torture_suite_add_1smb_test(suite, "open-for-truncate", test_open_for_truncate); >+ torture_suite_add_1smb_test(suite, "ntcreatex_supersede", test_ntcreatex_supersede); > > return suite; > } >-- >2.2.0.rc0.207.ga3a616c >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Flags:
slow
:
review+
Actions:
View
Attachments on
bug 11240
:
10997
|
10998
| 11006 |
11007