diff options
author | Stefan Metzmacher <metze@samba.org> | 2013-12-06 13:45:35 +0100 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2014-03-05 10:06:24 -0800 |
commit | a349b0bef9085fd139640ec92399bc63d8029cb9 (patch) | |
tree | 9ef89d620ee4784acef12301d790a5640cfcb258 /source3/smbd | |
parent | 7f3faa1f1837870195352253fe220e0677565d9e (diff) | |
download | samba-a349b0bef9085fd139640ec92399bc63d8029cb9.tar.gz samba-a349b0bef9085fd139640ec92399bc63d8029cb9.tar.xz samba-a349b0bef9085fd139640ec92399bc63d8029cb9.zip |
s3:smbd: use SMB_BUFFER_SIZE_MIN/MAX to limit lp_max_xmit()
The current limit of 128*1024 causes problems as the value has to be
<= UINT16_MAX otherwise some clients get confused, as they want to
use the MaxBufferSize value from the negprot response (uint32_t)
for the MaxBufferSize value in thet session setup request (uint16_t).
E.g. Windows 7 (as client) sends MaxBufferSize = 0 if the server value
is > UINT16_MAX.
Bug: https://bugzilla.samba.org/show_bug.cgi?id=10422
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
Diffstat (limited to 'source3/smbd')
-rw-r--r-- | source3/smbd/process.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/source3/smbd/process.c b/source3/smbd/process.c index 41b3611f306..938ee4ca490 100644 --- a/source3/smbd/process.c +++ b/source3/smbd/process.c @@ -3396,6 +3396,7 @@ void smbd_process(struct tevent_context *ev_ctx, const char *remaddr = NULL; char *rhost; int ret; + int tmp; conn = talloc_zero(ev_ctx, struct smbXsrv_connection); if (conn == NULL) { @@ -3692,7 +3693,11 @@ void smbd_process(struct tevent_context *ev_ctx, sconn->nbt.got_session = false; - sconn->smb1.negprot.max_recv = MIN(lp_max_xmit(),BUFFER_SIZE); + tmp = lp_max_xmit(); + tmp = MAX(tmp, SMB_BUFFER_SIZE_MIN); + tmp = MIN(tmp, SMB_BUFFER_SIZE_MAX); + + sconn->smb1.negprot.max_recv = tmp; sconn->smb1.sessions.done_sesssetup = false; sconn->smb1.sessions.max_send = BUFFER_SIZE; |