[SCM] Samba Shared Repository - branch v4-1-test updated

Karolin Seeger kseeger at samba.org
Mon Sep 16 11:34:05 CEST 2013


The branch, v4-1-test has been updated
       via  1e969dc s3:smb2_find: Return that timestamps do not exist as directories
      from  ebfa34b docs: Fix typos.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v4-1-test


- Log -----------------------------------------------------------------
commit 1e969dcdccab1e1b3db2548f60bdcfeaa7e49ab1
Author: Christof Schmitt <christof.schmitt at us.ibm.com>
Date:   Thu Aug 29 19:36:00 2013 +0200

    s3:smb2_find: Return that timestamps do not exist as directories
    
    When a Windows client receives a large directory listing while
    querying snapshots, it sends a find request asking for the
    timestamp as a directory. A Windows server returns NO_SUCH_FILE,
    so make sure Samba returns the same. Otherwise the client will
    get confused and display timestamps in the 'previous versions' dialog.
    
    Signed-off-by: Christof Schmitt <christof.schmitt at us.ibm.com>
    Reviewed-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>
    
    Autobuild-User(master): Jeremy Allison <jra at samba.org>
    Autobuild-Date(master): Tue Sep 10 22:38:51 CEST 2013 on sn-devel-104
    
    (cherry picked from commit c8c0632c871e838fc4465b2a69b4e059e9a126c0)
    
    Fix bug #10137 - shadow_copy2 does not display previous versions correctly over
    SMB2.
    
    Autobuild-User(v4-1-test): Karolin Seeger <kseeger at samba.org>
    Autobuild-Date(v4-1-test): Mon Sep 16 11:33:39 CEST 2013 on sn-devel-104

-----------------------------------------------------------------------

Summary of changes:
 source3/include/smb.h              |    3 +++
 source3/modules/vfs_shadow_copy2.c |    3 ---
 source3/smbd/smb2_find.c           |   13 +++++++++++++
 3 files changed, 16 insertions(+), 3 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/include/smb.h b/source3/include/smb.h
index 9dd8c58..cfc12a7 100644
--- a/source3/include/smb.h
+++ b/source3/include/smb.h
@@ -567,6 +567,9 @@ Offset  Data			length.
 #define NOTIFY_ACTION_REMOVED_STREAM 7
 #define NOTIFY_ACTION_MODIFIED_STREAM 8
 
+/* timestamp format used in "previous versions" */
+#define GMT_NAME_LEN 24 /* length of a @GMT- name */
+#define GMT_FORMAT "@GMT-%Y.%m.%d-%H.%M.%S"
 
 /* where to find the base of the SMB packet proper */
 #define smb_base(buf) (((const char *)(buf))+4)
diff --git a/source3/modules/vfs_shadow_copy2.c b/source3/modules/vfs_shadow_copy2.c
index 60f9628..aa7e50f 100644
--- a/source3/modules/vfs_shadow_copy2.c
+++ b/source3/modules/vfs_shadow_copy2.c
@@ -107,9 +107,6 @@
 #include <ccan/hash/hash.h>
 #include "util_tdb.h"
 
-#define GMT_NAME_LEN 24 /* length of a @GMT- name */
-#define GMT_FORMAT "@GMT-%Y.%m.%d-%H.%M.%S"
-
 static bool shadow_copy2_find_slashes(TALLOC_CTX *mem_ctx, const char *str,
 				      size_t **poffsets,
 				      unsigned *pnum_offsets)
diff --git a/source3/smbd/smb2_find.c b/source3/smbd/smb2_find.c
index c2c0559..c39a35d 100644
--- a/source3/smbd/smb2_find.c
+++ b/source3/smbd/smb2_find.c
@@ -224,6 +224,8 @@ static struct tevent_req *smbd_smb2_find_send(TALLOC_CTX *mem_ctx,
 	uint32_t dirtype = FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_DIRECTORY;
 	bool dont_descend = false;
 	bool ask_sharemode = true;
+	struct tm tm;
+	char *p;
 
 	req = tevent_req_create(mem_ctx, &state,
 				struct smbd_smb2_find_state);
@@ -259,6 +261,17 @@ static struct tevent_req *smbd_smb2_find_send(TALLOC_CTX *mem_ctx,
 		return tevent_req_post(req, ev);
 	}
 
+	p = strptime(in_file_name, GMT_FORMAT, &tm);
+	if ((p != NULL) && (*p =='\0')) {
+		/*
+		 * Bogus find that asks for a shadow copy timestamp as a
+		 * directory. The correct response is that it does not exist as
+		 * a directory.
+		 */
+		tevent_req_nterror(req, NT_STATUS_NO_SUCH_FILE);
+		return tevent_req_post(req, ev);
+	}
+
 	if (in_output_buffer_length > smb2req->sconn->smb2.max_trans) {
 		DEBUG(2,("smbd_smb2_find_send: "
 			 "client ignored max trans:%s: 0x%08X: 0x%08X\n",


-- 
Samba Shared Repository


More information about the samba-cvs mailing list