From c7786db673e9e5a478518f9c44341c428a92762e Mon Sep 17 00:00:00 2001 From: Christian Ambach Date: Tue, 30 Aug 2011 17:39:56 +0200 Subject: [PATCH] s3:smb2 fix Bug 8428 - wrong reply to DHnC (durable handle reconnect) 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! (cherry picked from commit fc8c5880d9785103e3345781bfca48e67a92cc33) --- source3/smbd/smb2_create.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/source3/smbd/smb2_create.c b/source3/smbd/smb2_create.c index fcd8945f837..b8557e01aaf 100644 --- a/source3/smbd/smb2_create.c +++ b/source3/smbd/smb2_create.c @@ -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); } -- 2.47.3