svn commit: samba r20372 - in branches: SAMBA_3_0/source/smbd SAMBA_3_0_24/source/smbd

jra at samba.org jra at samba.org
Thu Dec 28 00:24:36 GMT 2006


Author: jra
Date: 2006-12-28 00:24:34 +0000 (Thu, 28 Dec 2006)
New Revision: 20372

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

Log:
Make NTrename the same as SMBmv w.r.t. wildcards.
Jeremy.

Modified:
   branches/SAMBA_3_0/source/smbd/nttrans.c
   branches/SAMBA_3_0_24/source/smbd/nttrans.c


Changeset:
Modified: branches/SAMBA_3_0/source/smbd/nttrans.c
===================================================================
--- branches/SAMBA_3_0/source/smbd/nttrans.c	2006-12-28 00:10:55 UTC (rev 20371)
+++ branches/SAMBA_3_0/source/smbd/nttrans.c	2006-12-28 00:24:34 UTC (rev 20372)
@@ -1724,14 +1724,15 @@
 	pstring newname;
 	char *p;
 	NTSTATUS status;
-	BOOL path_contains_wcard = False;
+	BOOL path1_contains_wcard = False;
+	BOOL path2_contains_wcard = False;
 	uint32 attrs = SVAL(inbuf,smb_vwv0);
 	uint16 rename_type = SVAL(inbuf,smb_vwv1);
 
 	START_PROFILE(SMBntrename);
 
 	p = smb_buf(inbuf) + 1;
-	p += srvstr_get_path_wcard(inbuf, oldname, p, sizeof(oldname), 0, STR_TERMINATE, &status, &path_contains_wcard);
+	p += srvstr_get_path_wcard(inbuf, oldname, p, sizeof(oldname), 0, STR_TERMINATE, &status, &path1_contains_wcard);
 	if (!NT_STATUS_IS_OK(status)) {
 		END_PROFILE(SMBntrename);
 		return ERROR_NT(status);
@@ -1749,7 +1750,7 @@
 	}
 
 	p++;
-	p += srvstr_get_path(inbuf, newname, p, sizeof(newname), 0, STR_TERMINATE, &status);
+	p += srvstr_get_path_wcard(inbuf, newname, p, sizeof(newname), 0, STR_TERMINATE, &status, &path2_contains_wcard);
 	if (!NT_STATUS_IS_OK(status)) {
 		END_PROFILE(SMBntrename);
 		return ERROR_NT(status);
@@ -1762,13 +1763,18 @@
 	
 	switch(rename_type) {
 		case RENAME_FLAG_RENAME:
-			status = rename_internals(conn, oldname, newname, attrs, False, path_contains_wcard);
+			status = rename_internals(conn, oldname, newname, attrs, False, path1_contains_wcard);
 			break;
 		case RENAME_FLAG_HARD_LINK:
-			status = hardlink_internals(conn, oldname, newname);
+			if (path1_contains_wcard || path2_contains_wcard) {
+				/* No wildcards. */
+				status = NT_STATUS_OBJECT_PATH_SYNTAX_BAD;
+			} else {
+				status = hardlink_internals(conn, oldname, newname);
+			}
 			break;
 		case RENAME_FLAG_COPY:
-			if (path_contains_wcard) {
+			if (path1_contains_wcard || path2_contains_wcard) {
 				/* No wildcards. */
 				status = NT_STATUS_OBJECT_PATH_SYNTAX_BAD;
 			} else {

Modified: branches/SAMBA_3_0_24/source/smbd/nttrans.c
===================================================================
--- branches/SAMBA_3_0_24/source/smbd/nttrans.c	2006-12-28 00:10:55 UTC (rev 20371)
+++ branches/SAMBA_3_0_24/source/smbd/nttrans.c	2006-12-28 00:24:34 UTC (rev 20372)
@@ -1721,14 +1721,15 @@
 	pstring newname;
 	char *p;
 	NTSTATUS status;
-	BOOL path_contains_wcard = False;
+	BOOL path1_contains_wcard = False;
+	BOOL path2_contains_wcard = False;
 	uint32 attrs = SVAL(inbuf,smb_vwv0);
 	uint16 rename_type = SVAL(inbuf,smb_vwv1);
 
 	START_PROFILE(SMBntrename);
 
 	p = smb_buf(inbuf) + 1;
-	p += srvstr_get_path_wcard(inbuf, oldname, p, sizeof(oldname), 0, STR_TERMINATE, &status, &path_contains_wcard);
+	p += srvstr_get_path_wcard(inbuf, oldname, p, sizeof(oldname), 0, STR_TERMINATE, &status, &path1_contains_wcard);
 	if (!NT_STATUS_IS_OK(status)) {
 		END_PROFILE(SMBntrename);
 		return ERROR_NT(status);
@@ -1746,7 +1747,7 @@
 	}
 
 	p++;
-	p += srvstr_get_path(inbuf, newname, p, sizeof(newname), 0, STR_TERMINATE, &status);
+	p += srvstr_get_path_wcard(inbuf, newname, p, sizeof(newname), 0, STR_TERMINATE, &status, &path2_contains_wcard);
 	if (!NT_STATUS_IS_OK(status)) {
 		END_PROFILE(SMBntrename);
 		return ERROR_NT(status);
@@ -1759,13 +1760,18 @@
 	
 	switch(rename_type) {
 		case RENAME_FLAG_RENAME:
-			status = rename_internals(conn, oldname, newname, attrs, False, path_contains_wcard);
+			status = rename_internals(conn, oldname, newname, attrs, False, path1_contains_wcard);
 			break;
 		case RENAME_FLAG_HARD_LINK:
-			status = hardlink_internals(conn, oldname, newname);
+			if (path1_contains_wcard || path2_contains_wcard) {
+				/* No wildcards. */
+				status = NT_STATUS_OBJECT_PATH_SYNTAX_BAD;
+			} else {
+				status = hardlink_internals(conn, oldname, newname);
+			}
 			break;
 		case RENAME_FLAG_COPY:
-			if (path_contains_wcard) {
+			if (path1_contains_wcard || path2_contains_wcard) {
 				/* No wildcards. */
 				status = NT_STATUS_OBJECT_PATH_SYNTAX_BAD;
 			} else {



More information about the samba-cvs mailing list