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

vlendec at samba.org vlendec at samba.org
Sun Jan 14 10:38:07 GMT 2007


Author: vlendec
Date: 2007-01-14 10:38:06 +0000 (Sun, 14 Jan 2007)
New Revision: 20758

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

Log:
Adapt RAW-UNLINK error returns for wildcard unlinks to Samba3.

If someone is feeling like solving that puzzle, contact Jeremy or me for hints
:-)

Volker


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


Changeset:
Modified: branches/SAMBA_4_0/source/torture/raw/unlink.c
===================================================================
--- branches/SAMBA_4_0/source/torture/raw/unlink.c	2007-01-14 05:06:50 UTC (rev 20757)
+++ branches/SAMBA_4_0/source/torture/raw/unlink.c	2007-01-14 10:38:06 UTC (rev 20758)
@@ -128,8 +128,22 @@
 	io.unlink.in.pattern = BASEDIR "\\z*";
 	io.unlink.in.attrib = FILE_ATTRIBUTE_DIRECTORY;
 	status = smb_raw_unlink(cli->tree, &io);
-	CHECK_STATUS(status, NT_STATUS_NO_SUCH_FILE);
 
+	if (lp_parm_bool(-1, "torture", "samba3", False)) {
+		/*
+		 * In Samba3 we gave up upon getting the error codes in
+		 * wildcard unlink correct. Trying gentest showed that this is
+		 * irregular beyond our capabilities. So for
+		 * FILE_ATTRIBUTE_DIRECTORY we always return NAME_INVALID.
+		 * Tried by jra and vl. If others feel like solving this
+		 * puzzle, please tell us :-)
+		 */
+		CHECK_STATUS(status, NT_STATUS_OBJECT_NAME_INVALID);
+	}
+	else {
+		CHECK_STATUS(status, NT_STATUS_NO_SUCH_FILE);
+	}
+
 	io.unlink.in.pattern = BASEDIR "\\*";
 	io.unlink.in.attrib = FILE_ATTRIBUTE_DIRECTORY;
 	status = smb_raw_unlink(cli->tree, &io);
@@ -143,19 +157,34 @@
 	io.unlink.in.pattern = BASEDIR "\\t*";
 	io.unlink.in.attrib = FILE_ATTRIBUTE_DIRECTORY;
 	status = smb_raw_unlink(cli->tree, &io);
-	CHECK_STATUS(status, NT_STATUS_OK);
+	if (lp_parm_bool(-1, "torture", "samba3", False)) {
+		CHECK_STATUS(status, NT_STATUS_OBJECT_NAME_INVALID);
+	}
+	else {
+		CHECK_STATUS(status, NT_STATUS_OK);
+	}
 
 	smbcli_close(cli->tree, smbcli_open(cli->tree, fname, O_RDWR|O_CREAT, DENY_NONE));
 
 	io.unlink.in.pattern = BASEDIR "\\*.dat";
 	io.unlink.in.attrib = FILE_ATTRIBUTE_DIRECTORY;
 	status = smb_raw_unlink(cli->tree, &io);
-	CHECK_STATUS(status, NT_STATUS_NO_SUCH_FILE);
+	if (lp_parm_bool(-1, "torture", "samba3", False)) {
+		CHECK_STATUS(status, NT_STATUS_OBJECT_NAME_INVALID);
+	}
+	else {
+		CHECK_STATUS(status, NT_STATUS_NO_SUCH_FILE);
+	}
 
 	io.unlink.in.pattern = BASEDIR "\\*.tx?";
 	io.unlink.in.attrib = 0;
 	status = smb_raw_unlink(cli->tree, &io);
-	CHECK_STATUS(status, NT_STATUS_OK);
+	if (lp_parm_bool(-1, "torture", "samba3", False)) {
+		CHECK_STATUS(status, NT_STATUS_NO_SUCH_FILE);
+	}
+	else {
+		CHECK_STATUS(status, NT_STATUS_OK);
+	}
 
 	status = smb_raw_unlink(cli->tree, &io);
 	CHECK_STATUS(status, NT_STATUS_NO_SUCH_FILE);



More information about the samba-cvs mailing list