The branch, v3-5-test has been updated via 8243fb8 Same fix as bug 8989 - Samba 3.5.x (and probably all other versions of Samba) does not send correct responses to NT Transact Secondary when no data and no params via e46f242 Fix Bug 8989 - Samba 3.5.x (and probably all other versions of Samba) does not send correct responses to NT Transact Secondary when no data and no params from 41c2411 s3: Fix a winbind race leading to 100% CPU
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-5-test - Log ----------------------------------------------------------------- commit 8243fb8dbeed34e1a9a61d44c48d82321eebe7ab Author: Jeremy Allison <j...@samba.org> Date: Mon Jun 18 16:24:12 2012 -0700 Same fix as bug 8989 - Samba 3.5.x (and probably all other versions of Samba) does not send correct responses to NT Transact Secondary when no data and no params for the Trans2 calls. See MS-CIFS 2.2.4.47.2 for details. (cherry picked from commit d5c01dc502e02cde12abc939afd48519d38c09a9) commit e46f24296158ca48ac450b013cce39dd6ea91b42 Author: Jeremy Allison <j...@samba.org> Date: Mon Jun 18 16:23:13 2012 -0700 Fix Bug 8989 - Samba 3.5.x (and probably all other versions of Samba) does not send correct responses to NT Transact Secondary when no data and no params Found by Richard Sharpe <realrichardsha...@gmail.com>. The correct command code in a reply to NT Transact Secondary (0xa1) is NT Transact (0xa0). (cherry picked from commit 115f5af9a89a20929f02578c08a34ae2736951dd) ----------------------------------------------------------------------- Summary of changes: source3/smbd/nttrans.c | 11 ++++++----- source3/smbd/trans2.c | 15 +++++++++------ 2 files changed, 15 insertions(+), 11 deletions(-) Changeset truncated at 500 lines: diff --git a/source3/smbd/nttrans.c b/source3/smbd/nttrans.c index 6fbbed9..2ca14f4 100644 --- a/source3/smbd/nttrans.c +++ b/source3/smbd/nttrans.c @@ -134,11 +134,6 @@ void send_nt_replies(connection_struct *conn, + data_alignment_offset); /* - * We might have had SMBnttranss in req->inbuf, fix that. - */ - SCVAL(req->outbuf, smb_com, SMBnttrans); - - /* * Set total params and data to be sent. */ @@ -3068,6 +3063,12 @@ void reply_nttranss(struct smb_request *req) show_msg((char *)req->inbuf); + /* Windows clients expect all replies to + an NT transact secondary (SMBnttranss 0xA1) + to have a command code of NT transact + (SMBnttrans 0xA0). See bug #8989 for details. */ + req->cmd = SMBnttrans; + if (req->wct < 18) { reply_nterror(req, NT_STATUS_INVALID_PARAMETER); END_PROFILE(SMBnttranss); diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c index 794c138..602280d 100644 --- a/source3/smbd/trans2.c +++ b/source3/smbd/trans2.c @@ -849,12 +849,6 @@ void send_trans2_replies(connection_struct *conn, reply_outbuf(req, 10, total_sent_thistime + alignment_offset + data_alignment_offset); - /* - * We might have SMBtrans2s in req which was transferred to - * the outbuf, fix that. - */ - SCVAL(req->outbuf, smb_com, SMBtrans2); - /* Set total params and data to be sent */ SSVAL(req->outbuf,smb_tprcnt,paramsize); SSVAL(req->outbuf,smb_tdrcnt,datasize); @@ -8562,6 +8556,15 @@ void reply_transs2(struct smb_request *req) show_msg((char *)req->inbuf); + /* Windows clients expect all replies to + a transact secondary (SMBtranss2 0x33) + to have a command code of transact + (SMBtrans2 0x32). See bug #8989 + and also [MS-CIFS] section 2.2.4.47.2 + for details. + */ + req->cmd = SMBtrans2; + if (req->wct < 8) { reply_nterror(req, NT_STATUS_INVALID_PARAMETER); END_PROFILE(SMBtranss2); -- Samba Shared Repository