]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3:smb2 fix Bug 8428 - wrong reply to DHnC (durable handle reconnect)
authorChristian Ambach <ambi@samba.org>
Tue, 30 Aug 2011 15:39:56 +0000 (17:39 +0200)
committerKarolin Seeger <kseeger@samba.org>
Tue, 30 Aug 2011 19:17:56 +0000 (21:17 +0200)
According to [MS-SMB2] 3.3.5.9.7
(http://msdn.microsoft.com/en-us/library/cc246784%28v=PROT.13%29.aspx),
smbd must reply with NT_STATUS_OBJECT_NAME_NOT_FOUND as it does not
support durable file-handles yet.

I have seen w2k8r2 running xcopy /C ending up in an endless loop
trying to get back the original file handle from smbd sending the same
requests over and over.

Metze, Jeremy, please check!

source3/smbd/smb2_create.c

index fcd8945f8370ac25893371241916d38547f1d102..b8557e01aafa159baf99dad4d9a48905d79c06a6 100644 (file)
@@ -537,7 +537,7 @@ static struct tevent_req *smbd_smb2_create_send(TALLOC_CTX *mem_ctx,
 
                if (exta) {
                        if (dhnc) {
-                               tevent_req_nterror(req, NT_STATUS_INVALID_PARAMETER);
+                               tevent_req_nterror(req,NT_STATUS_OBJECT_NAME_NOT_FOUND);
                                return tevent_req_post(req, ev);
                        }
 
@@ -552,7 +552,7 @@ static struct tevent_req *smbd_smb2_create_send(TALLOC_CTX *mem_ctx,
 
                if (mxac) {
                        if (dhnc) {
-                               tevent_req_nterror(req, NT_STATUS_INVALID_PARAMETER);
+                               tevent_req_nterror(req, NT_STATUS_OBJECT_NAME_NOT_FOUND);
                                return tevent_req_post(req, ev);
                        }
 
@@ -570,7 +570,7 @@ static struct tevent_req *smbd_smb2_create_send(TALLOC_CTX *mem_ctx,
                        enum ndr_err_code ndr_err;
 
                        if (dhnc) {
-                               tevent_req_nterror(req, NT_STATUS_INVALID_PARAMETER);
+                               tevent_req_nterror(req, NT_STATUS_OBJECT_NAME_NOT_FOUND);
                                return tevent_req_post(req, ev);
                        }
 
@@ -592,7 +592,7 @@ static struct tevent_req *smbd_smb2_create_send(TALLOC_CTX *mem_ctx,
 
                if (dhnq) {
                        if (dhnc) {
-                               tevent_req_nterror(req, NT_STATUS_INVALID_PARAMETER);
+                               tevent_req_nterror(req, NT_STATUS_OBJECT_NAME_NOT_FOUND);
                                return tevent_req_post(req, ev);
                        }
 
@@ -618,7 +618,7 @@ static struct tevent_req *smbd_smb2_create_send(TALLOC_CTX *mem_ctx,
 
                if (alsi) {
                        if (dhnc) {
-                               tevent_req_nterror(req, NT_STATUS_INVALID_PARAMETER);
+                               tevent_req_nterror(req, NT_STATUS_OBJECT_NAME_NOT_FOUND);
                                return tevent_req_post(req, ev);
                        }
 
@@ -635,7 +635,7 @@ static struct tevent_req *smbd_smb2_create_send(TALLOC_CTX *mem_ctx,
                        struct tm *tm;
 
                        if (dhnc) {
-                               tevent_req_nterror(req, NT_STATUS_INVALID_PARAMETER);
+                               tevent_req_nterror(req, NT_STATUS_OBJECT_NAME_NOT_FOUND);
                                return tevent_req_post(req, ev);
                        }