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

jra at samba.org jra at samba.org
Thu Aug 16 00:54:19 GMT 2007


Author: jra
Date: 2007-08-16 00:54:16 +0000 (Thu, 16 Aug 2007)
New Revision: 24477

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

Log:
Add a rename test to prove that NT_STATUS_OBJECT_NAME_COLLISION
is mapped to ERRDOS, ERRrename on a rename error, but mapped
to ERRDOS, ERRfilexists on an open error.
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-16 00:37:07 UTC (rev 24476)
+++ branches/SAMBA_4_0/source/torture/raw/samba3misc.c	2007-08-16 00:54:16 UTC (rev 24477)
@@ -327,8 +327,10 @@
 	struct smbcli_state *cli_nt;
 	struct smbcli_state *cli_dos;
 	const char *fname = "test.txt";
+	const char *fname1 = "test1.txt";
 	const char *dirname = "testdir";
 	char *fpath;
+	char *fpath1;
 	int fnum;
 	NTSTATUS status;
 	BOOL ret = True;
@@ -406,6 +408,17 @@
 	}
 	smbcli_close(cli_nt->tree, fnum);
 
+	if (!(fpath1 = talloc_asprintf(mem_ctx, "%s\\%s", dirname, fname1))) {
+		goto fail;
+	}
+	fnum = smbcli_open(cli_nt->tree, fpath1, O_RDWR | O_CREAT, DENY_NONE);
+	if (fnum == -1) {
+		d_printf("Could not create file %s: %s\n", fpath1,
+			 smbcli_errstr(cli_nt->tree));
+		goto fail;
+	}
+	smbcli_close(cli_nt->tree, fnum);
+
 	/*
 	 * Do a whole bunch of error code checks on chkpath
 	 */
@@ -533,6 +546,18 @@
 	status = raw_smbcli_ntcreate(cli_dos->tree, fpath, NULL);
 	CHECK_STATUS(status, NT_STATUS_DOS(ERRDOS,ERRfilexists));
 
+	/* Try the rename test. */
+	{
+		union smb_rename io;
+		io.rename.in.pattern1 = fpath1;
+		io.rename.in.pattern2 = fpath;
+
+		status = smb_raw_rename(cli_nt->tree, &io);
+		CHECK_STATUS(status, NT_STATUS_OBJECT_NAME_COLLISION);
+		status = smb_raw_rename(cli_dos->tree, &io);
+		CHECK_STATUS(status, NT_STATUS_DOS(ERRDOS,ERRrename));
+	}
+
 	goto done;
 
  fail:



More information about the samba-cvs mailing list