diff --git a/source/smbd/files.c b/source/smbd/files.c index cdaa5f1..12467ee 100644 --- a/source/smbd/files.c +++ b/source/smbd/files.c @@ -408,6 +408,10 @@ bool file_find_subpath(files_struct *dir_fsp) fsp->fsp_name); if (strnequal(d_fullname, d1_fullname, dlen)) { + DEBUG(10,("file_find_subpath: name %s matches %s, " + "len %u, fsp->fsp_name = %s\n", + d1_fullname, d_fullname, + (unsigned int)dlen, fsp->fsp_name)); TALLOC_FREE(d_fullname); TALLOC_FREE(d1_fullname); return true; diff --git a/source/smbd/reply.c b/source/smbd/reply.c index 46653cd..87ace41 100644 --- a/source/smbd/reply.c +++ b/source/smbd/reply.c @@ -2276,6 +2276,9 @@ static NTSTATUS can_rename(connection_struct *conn, files_struct *fsp, directory, allow the rename. */ if (file_find_subpath(fsp)) { + DEBUG(10,("can_rename: file_find_subpath found an " + "open file below %s\n", + fsp->fsp_name )); return NT_STATUS_ACCESS_DENIED; } return NT_STATUS_OK; @@ -2285,6 +2288,11 @@ static NTSTATUS can_rename(connection_struct *conn, files_struct *fsp, return NT_STATUS_OK; } + DEBUG(10,("can_rename: fsp->access_mask = 0x%x on file " + "%s - access denied\n", + (unsigned int)fsp->access_mask, + fsp->fsp_name )); + return NT_STATUS_ACCESS_DENIED; } @@ -5643,7 +5651,8 @@ NTSTATUS rename_internals_fsp(connection_struct *conn, status = can_rename(conn, fsp, attrs, &sbuf); if (!NT_STATUS_IS_OK(status)) { - DEBUG(3,("rename_internals_fsp: Error %s rename %s -> %s\n", + DEBUG(3,("rename_internals_fsp: can_rename returned error %s " + "rename %s -> %s\n", nt_errstr(status), fsp->fsp_name,newname)); if (NT_STATUS_EQUAL(status,NT_STATUS_SHARING_VIOLATION)) status = NT_STATUS_ACCESS_DENIED; @@ -5694,6 +5703,9 @@ NTSTATUS rename_internals_fsp(connection_struct *conn, } TALLOC_FREE(lck); return NT_STATUS_OK; + } else { + DEBUG(3,("rename_internals_fsp: VFS error %s rename %s -> %s\n", + strerror(errno), fsp->fsp_name,newname)); } TALLOC_FREE(lck);