svn commit: samba r24473 - in branches/SAMBA_4_0/source/torture/raw: .

jra at samba.org jra at samba.org
Wed Aug 15 23:30:15 GMT 2007


Author: jra
Date: 2007-08-15 23:30:12 +0000 (Wed, 15 Aug 2007)
New Revision: 24473

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=24473

Log:
Prove this is also the same for NTcreateX. It's pretty much
guarenteed now that NT_STATUS_OBJECT_NAME_COLLISION should
map to ERRDOS, ERRfilexists on all open calls at least.
Jeremy.

Modified:
   branches/SAMBA_4_0/source/torture/raw/samba3misc.c


Changeset:
Modified: branches/SAMBA_4_0/source/torture/raw/samba3misc.c
===================================================================
--- branches/SAMBA_4_0/source/torture/raw/samba3misc.c	2007-08-15 23:09:39 UTC (rev 24472)
+++ branches/SAMBA_4_0/source/torture/raw/samba3misc.c	2007-08-15 23:30:12 UTC (rev 24473)
@@ -288,7 +288,40 @@
         return status;
 }
 
+static NTSTATUS raw_smbcli_ntcreate(struct smbcli_tree *tree, const char *fname, int *fnum)
+{
+        union smb_open io;
+        TALLOC_CTX *mem_ctx;
+        NTSTATUS status;
 
+        mem_ctx = talloc_init("raw_t2open");
+        if (!mem_ctx) return NT_STATUS_NO_MEMORY;
+
+	memset(&io, '\0', sizeof(io));
+        io.generic.level = RAW_OPEN_NTCREATEX;
+	io.ntcreatex.in.flags = NTCREATEX_FLAGS_EXTENDED;
+	io.ntcreatex.in.root_fid = 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_READ | NTCREATEX_SHARE_ACCESS_WRITE;
+	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(tree, mem_ctx, &io);
+        talloc_free(mem_ctx);
+
+        if (fnum && NT_STATUS_IS_OK(status)) {
+                *fnum = io.openx.out.file.fnum;
+        }
+
+        return status;
+}
+
+
 BOOL torture_samba3_badpath(struct torture_context *torture)
 {
 	struct smbcli_state *cli_nt;
@@ -495,6 +528,11 @@
 	status = raw_smbcli_t2open(cli_dos->tree, fpath, O_RDONLY | O_CREAT| O_EXCL, DENY_NONE, NULL);
 	CHECK_STATUS(status, NT_STATUS_DOS(ERRDOS,ERRfilexists));
 
+	status = raw_smbcli_ntcreate(cli_nt->tree, fpath, NULL);
+	CHECK_STATUS(status, NT_STATUS_OBJECT_NAME_COLLISION);
+	status = raw_smbcli_ntcreate(cli_dos->tree, fpath, NULL);
+	CHECK_STATUS(status, NT_STATUS_DOS(ERRDOS,ERRfilexists));
+
 	goto done;
 
  fail:



More information about the samba-cvs mailing list