From b58e7bb88eb29f35527e1e9dc0e0a36ea034cf80 Mon Sep 17 00:00:00 2001 From: Christian Ambach Date: Tue, 30 Aug 2011 17:39:56 +0200 Subject: 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! Signed-off-by: Jeremy Allison Autobuild-User: Jeremy Allison Autobuild-Date: Tue Aug 30 22:20:36 CEST 2011 on sn-devel-104 --- source3/smbd/smb2_create.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'source3') diff --git a/source3/smbd/smb2_create.c b/source3/smbd/smb2_create.c index aaa461c503..9a60fdad82 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); } -- cgit