From efd2a065947547c46d0d62fb7fe1114935613311 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Fri, 25 Jun 2004 22:37:50 +0000 Subject: r1257: Ensure we deferr a sharing violation on rename correctly. Jeremy. (This used to be commit b52a04a5cdcea83c99805181241c8c0760bcc22e) --- source3/smbd/nttrans.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'source3/smbd/nttrans.c') diff --git a/source3/smbd/nttrans.c b/source3/smbd/nttrans.c index 2f498b7c94..3e5b07b887 100644 --- a/source3/smbd/nttrans.c +++ b/source3/smbd/nttrans.c @@ -1555,8 +1555,13 @@ int reply_ntrename(connection_struct *conn, return ERROR_NT(NT_STATUS_ACCESS_DENIED); } + if (ms_has_wild(oldname)) { + END_PROFILE(SMBntrename); + return ERROR_NT(NT_STATUS_OBJECT_PATH_SYNTAX_BAD); + } + p++; - p += srvstr_get_path(inbuf, newname, p, sizeof(newname), 0, STR_TERMINATE, &status, True); + p += srvstr_get_path(inbuf, newname, p, sizeof(newname), 0, STR_TERMINATE, &status, False); if (!NT_STATUS_IS_OK(status)) { END_PROFILE(SMBntrename); return ERROR_NT(status); @@ -1575,6 +1580,11 @@ int reply_ntrename(connection_struct *conn, if (!NT_STATUS_IS_OK(status)) { END_PROFILE(SMBntrename); + if (open_was_deferred(SVAL(inbuf,smb_mid))) { + /* We have re-scheduled this call. */ + clear_cached_errors(); + return -1; + } return ERROR_NT(status); } -- cgit