[SCM] Samba Shared Repository - branch v3-2-test updated -
release-3-2-0pre2-3207-g0ed6d1f
Jeremy Allison
jra at samba.org
Mon Dec 1 21:35:58 GMT 2008
The branch, v3-2-test has been updated
via 0ed6d1f02a82c6f5e32a4941f153b601a5256921 (commit)
from 9859f7bcd5a36bab4b86f7c1f7efe6e21614a18e (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test
- Log -----------------------------------------------------------------
commit 0ed6d1f02a82c6f5e32a4941f153b601a5256921
Author: Stefan Metzmacher <metze at samba.org>
Date: Mon Dec 1 13:34:38 2008 -0800
s3:smbd: return DELETE_PENDING on path based operations on streams, when the main file was deleted.
metze
-----------------------------------------------------------------------
Summary of changes:
source/smbd/trans2.c | 40 ++++++++++++++++++++++++++++++++++++++++
1 files changed, 40 insertions(+), 0 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source/smbd/trans2.c b/source/smbd/trans2.c
index d4ff1ab..89a7911 100644
--- a/source/smbd/trans2.c
+++ b/source/smbd/trans2.c
@@ -3979,6 +3979,46 @@ static void call_trans2qfilepathinfo(connection_struct *conn,
return;
}
+ if ((conn->fs_capabilities & FILE_NAMED_STREAMS)
+ && is_ntfs_stream_name(fname)) {
+ char *base;
+ SMB_STRUCT_STAT bsbuf;
+
+ status = split_ntfs_stream_name(talloc_tos(), fname,
+ &base, NULL);
+ if (!NT_STATUS_IS_OK(status)) {
+ DEBUG(10, ("create_file_unixpath: "
+ "split_ntfs_stream_name failed: %s\n",
+ nt_errstr(status)));
+ reply_nterror(req, status);
+ return;
+ }
+
+ SMB_ASSERT(!is_ntfs_stream_name(base)); /* paranoia.. */
+
+ if (INFO_LEVEL_IS_UNIX(info_level)) {
+ /* Always do lstat for UNIX calls. */
+ if (SMB_VFS_LSTAT(conn,base,&bsbuf)) {
+ DEBUG(3,("call_trans2qfilepathinfo: SMB_VFS_LSTAT of %s failed (%s)\n",base,strerror(errno)));
+ reply_unixerror(req,ERRDOS,ERRbadpath);
+ return;
+ }
+ } else {
+ if (SMB_VFS_STAT(conn,base,&bsbuf) != 0) {
+ DEBUG(3,("call_trans2qfilepathinfo: fileinfo of %s failed (%s)\n",base,strerror(errno)));
+ reply_unixerror(req,ERRDOS,ERRbadpath);
+ return;
+ }
+ }
+
+ fileid = vfs_file_id_from_sbuf(conn, &bsbuf);
+ get_file_infos(fileid, &delete_pending, NULL);
+ if (delete_pending) {
+ reply_nterror(req, NT_STATUS_DELETE_PENDING);
+ return;
+ }
+ }
+
if (INFO_LEVEL_IS_UNIX(info_level)) {
/* Always do lstat for UNIX calls. */
if (SMB_VFS_LSTAT(conn,fname,&sbuf)) {
--
Samba Shared Repository
More information about the samba-cvs
mailing list