The branch, master has been updated
       via  032621d s3:smbd: s/BUFFER_SIZE/LARGE_WRITEX_BUFFER_SIZE
       via  c899d4f s3:smbd: fix the maxentries calculation depending on the 
max_send.
       via  734e1b65 s3:smbd: simplify maxentries calculation in reply_search()
       via  8b746f5 s3:smbd: fix the read numtoread calculation depending on 
the max_send.
       via  f69be2c s3:smbd: fix the lockread numtoread calculation depending 
on the max_send.
       via  b86f906 s3:smbd: pass the final numtoread reply_outbuf() for the 
lockread reply.
       via  3dac00b s3:smbd: fix lockread numtoread calculation to match 
reply_outbuf() arguments.
       via  2ec49cf s3:smbd: take less than SMB_BUFFER_SIZE_MIN ('500') as 
header overhead in ipc.c
       via  cce1eae s3:smbd: reject a MaxBufferSize < SMB_BUFFER_SIZE_MIN (500) 
in a session setup request
       via  5cd5c16 s3:smbd: use sconn->smb1.sessions.max_send = 
SMB_BUFFER_SIZE_MAX
       via  a349b0b s3:smbd: use SMB_BUFFER_SIZE_MIN/MAX to limit lp_max_xmit()
       via  7f3faa1 s3:include: let CLI_BUFFER_SIZE be an alias of 
SMB_BUFFER_SIZE_MAX
       via  900839e libcli/smb: add SMB_BUFFER_SIZE_MIN/MAX defines
       via  74f8c35 s3:param: avoid using BUFFER_SIZE to limit the 
lp_min_receive_file_size()
       via  f0f245f s3:client: only limit the buffer by the given length 'n'
       via  05e821b s3:torture: use CLI_BUFFER_SIZE instead of BUFFER_SIZE
       via  3667a2e s3:utils/smbfilter: use a local variable for the packet 
buffer
      from  9ed7555 nsswitch: Remove fallback setting of WINBINDD_SOCKET_DIR

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 032621d5bf842e60dc9cd1cd0d3acc90482462a6
Author: Stefan Metzmacher <me...@samba.org>
Date:   Fri Dec 6 13:56:12 2013 +0100

    s3:smbd: s/BUFFER_SIZE/LARGE_WRITEX_BUFFER_SIZE
    
    Bug: https://bugzilla.samba.org/show_bug.cgi?id=10422
    Signed-off-by: Stefan Metzmacher <me...@samba.org>
    Reviewed-by: Jeremy Allison <j...@samba.org>
    
    Autobuild-User(master): Jeremy Allison <j...@samba.org>
    Autobuild-Date(master): Wed Mar  5 22:53:34 CET 2014 on sn-devel-104

commit c899d4fd9c5a337ab82acdf11866df50fb0629e0
Author: Stefan Metzmacher <me...@samba.org>
Date:   Wed Mar 5 14:03:42 2014 +0100

    s3:smbd: fix the maxentries calculation depending on the max_send.
    
    Signed-off-by: Stefan Metzmacher <me...@samba.org>
    Reviewed-by: Jeremy Allison <j...@samba.org>

commit 734e1b65044a33eba01b41695502c2257c1a4d9e
Author: Stefan Metzmacher <me...@samba.org>
Date:   Wed Mar 5 14:00:40 2014 +0100

    s3:smbd: simplify maxentries calculation in reply_search()
    
    Using helper variables make it much easier to understand.
    
    Signed-off-by: Stefan Metzmacher <me...@samba.org>
    Reviewed-by: Jeremy Allison <j...@samba.org>

commit 8b746f5a2137b74e28bce5370f5aa9d4bcdac6c2
Author: Stefan Metzmacher <me...@samba.org>
Date:   Tue Mar 4 14:07:26 2014 +0100

    s3:smbd: fix the read numtoread calculation depending on the max_send.
    
    Signed-off-by: Stefan Metzmacher <me...@samba.org>
    Reviewed-by: Jeremy Allison <j...@samba.org>

commit f69be2c28e097c66907df264794706006fe0ae7f
Author: Stefan Metzmacher <me...@samba.org>
Date:   Tue Mar 4 14:07:26 2014 +0100

    s3:smbd: fix the lockread numtoread calculation depending on the max_send.
    
    Signed-off-by: Stefan Metzmacher <me...@samba.org>
    Reviewed-by: Jeremy Allison <j...@samba.org>

commit b86f90611820bcf7826bd1de3c7b05488a8f1b0e
Author: Stefan Metzmacher <me...@samba.org>
Date:   Tue Mar 4 14:07:26 2014 +0100

    s3:smbd: pass the final numtoread reply_outbuf() for the lockread reply.
    
    Signed-off-by: Stefan Metzmacher <me...@samba.org>
    Reviewed-by: Jeremy Allison <j...@samba.org>

commit 3dac00b568613f5a1322883237e40b98ddd1d71d
Author: Stefan Metzmacher <me...@samba.org>
Date:   Tue Mar 4 14:07:26 2014 +0100

    s3:smbd: fix lockread numtoread calculation to match reply_outbuf() 
arguments.
    
    Signed-off-by: Stefan Metzmacher <me...@samba.org>
    Reviewed-by: Jeremy Allison <j...@samba.org>

commit 2ec49cf57c88735be962b0681b487df5efe7ed6b
Author: Stefan Metzmacher <me...@samba.org>
Date:   Fri Dec 6 13:53:45 2013 +0100

    s3:smbd: take less than SMB_BUFFER_SIZE_MIN ('500') as header overhead in 
ipc.c
    
    We're now sure that sconn->smb1.sessions.max_send is >= SMB_BUFFER_SIZE_MIN.
    in order to garantee some progress we need to make sure our assumed
    header overhead is less than SMB_BUFFER_SIZE_MIN.
    
    Assuming 372 bytes for the SMBtrans headers should still be more than
    enough.
    
    Bug: https://bugzilla.samba.org/show_bug.cgi?id=10422
    Signed-off-by: Stefan Metzmacher <me...@samba.org>
    Reviewed-by: Jeremy Allison <j...@samba.org>

commit cce1eaea91088efd742891befdaafade0c1fdce6
Author: Stefan Metzmacher <me...@samba.org>
Date:   Fri Dec 6 13:52:09 2013 +0100

    s3:smbd: reject a MaxBufferSize < SMB_BUFFER_SIZE_MIN (500) in a session 
setup request
    
    This makes sure sconn->smb1.sessions.max_send is always >= 
SMB_BUFFER_SIZE_MIN.
    
    Bug: https://bugzilla.samba.org/show_bug.cgi?id=10422
    Signed-off-by: Stefan Metzmacher <me...@samba.org>
    Reviewed-by: Jeremy Allison <j...@samba.org>

commit 5cd5c1613996ecebdcd632e932957947f4c27308
Author: Stefan Metzmacher <me...@samba.org>
Date:   Fri Dec 6 13:50:49 2013 +0100

    s3:smbd: use sconn->smb1.sessions.max_send = SMB_BUFFER_SIZE_MAX
    
    SMB_BUFFER_SIZE_MAX is UINT16_MAX and the largest value a client
    can possibly specify in the session setup request.
    
    Bug: https://bugzilla.samba.org/show_bug.cgi?id=10422
    Signed-off-by: Stefan Metzmacher <me...@samba.org>
    Reviewed-by: Jeremy Allison <j...@samba.org>

commit a349b0bef9085fd139640ec92399bc63d8029cb9
Author: Stefan Metzmacher <me...@samba.org>
Date:   Fri Dec 6 13:45:35 2013 +0100

    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 <me...@samba.org>
    Reviewed-by: Jeremy Allison <j...@samba.org>

commit 7f3faa1f1837870195352253fe220e0677565d9e
Author: Stefan Metzmacher <me...@samba.org>
Date:   Fri Dec 6 13:57:15 2013 +0100

    s3:include: let CLI_BUFFER_SIZE be an alias of SMB_BUFFER_SIZE_MAX
    
    Bug: https://bugzilla.samba.org/show_bug.cgi?id=10422
    Signed-off-by: Stefan Metzmacher <me...@samba.org>
    Reviewed-by: Jeremy Allison <j...@samba.org>

commit 900839e2216048a614f2f0aeb1f79092fc93334f
Author: Stefan Metzmacher <me...@samba.org>
Date:   Fri Dec 6 13:28:35 2013 +0100

    libcli/smb: add SMB_BUFFER_SIZE_MIN/MAX defines
    
    Bug: https://bugzilla.samba.org/show_bug.cgi?id=10422
    Signed-off-by: Stefan Metzmacher <me...@samba.org>
    Reviewed-by: Jeremy Allison <j...@samba.org>

commit 74f8c3568a5dcdee108a0526cefac9d282361044
Author: Stefan Metzmacher <me...@samba.org>
Date:   Wed Feb 19 13:59:07 2014 +0100

    s3:param: avoid using BUFFER_SIZE to limit the lp_min_receive_file_size()
    
    There's really no reason to add such limit.
    
    Signed-off-by: Stefan Metzmacher <me...@samba.org>
    Reviewed-by: Jeremy Allison <j...@samba.org>

commit f0f245f4c8b1a506e8d06c72d3d6680b95738714
Author: Stefan Metzmacher <me...@samba.org>
Date:   Wed Feb 19 13:57:28 2014 +0100

    s3:client: only limit the buffer by the given length 'n'
    
    Signed-off-by: Stefan Metzmacher <me...@samba.org>
    Reviewed-by: Jeremy Allison <j...@samba.org>

commit 05e821b220328b88dd9eece919b8adee3e4281ac
Author: Stefan Metzmacher <me...@samba.org>
Date:   Wed Feb 19 13:56:06 2014 +0100

    s3:torture: use CLI_BUFFER_SIZE instead of BUFFER_SIZE
    
    Signed-off-by: Stefan Metzmacher <me...@samba.org>
    Reviewed-by: Jeremy Allison <j...@samba.org>

commit 3667a2eee388915fca2b894ae37375eeed46e941
Author: Stefan Metzmacher <me...@samba.org>
Date:   Wed Feb 19 13:54:44 2014 +0100

    s3:utils/smbfilter: use a local variable for the packet buffer
    
    Signed-off-by: Stefan Metzmacher <me...@samba.org>
    Reviewed-by: Jeremy Allison <j...@samba.org>

-----------------------------------------------------------------------

Summary of changes:
 libcli/smb/smb_constants.h |    8 ++++++
 source3/client/client.c    |    2 +-
 source3/include/client.h   |    2 +-
 source3/include/smb.h      |    4 +--
 source3/param/loadparm.c   |    2 +-
 source3/smbd/ipc.c         |   10 +++++---
 source3/smbd/process.c     |   11 ++++++--
 source3/smbd/reply.c       |   54 ++++++++++++++++++++++----------------------
 source3/smbd/sesssetup.c   |   19 ++++++++++-----
 source3/torture/torture.c  |    2 +-
 source3/utils/smbfilter.c  |    2 +-
 11 files changed, 68 insertions(+), 48 deletions(-)


Changeset truncated at 500 lines:

diff --git a/libcli/smb/smb_constants.h b/libcli/smb/smb_constants.h
index 4b24be0..4190e64 100644
--- a/libcli/smb/smb_constants.h
+++ b/libcli/smb/smb_constants.h
@@ -209,6 +209,14 @@ enum smb_signing_setting {
 #define NEGOTIATE_SECURITY_SIGNATURES_ENABLED  0x04
 #define NEGOTIATE_SECURITY_SIGNATURES_REQUIRED 0x08
 
+/*
+ * The negotiated buffer size for non LARGE_READX/WRITEX
+ * should be limited to uint16_t and has to be at least
+ * 500, which is the default for MinClientBufferSize on Windows.
+ */
+#define SMB_BUFFER_SIZE_MIN 500
+#define SMB_BUFFER_SIZE_MAX 65535
+
 /* Capabilities.  see ftp.microsoft.com/developr/drg/cifs/cifs/cifs4.txt */
 
 #define CAP_RAW_MODE           0x00000001
diff --git a/source3/client/client.c b/source3/client/client.c
index 5157fc9..9e1f83d 100644
--- a/source3/client/client.c
+++ b/source3/client/client.c
@@ -226,7 +226,7 @@ static int readfile(uint8_t *b, int n, XFILE *f)
                return x_fread(b,1,n,f);
 
        i = 0;
-       while (i < (n - 1) && (i < BUFFER_SIZE)) {
+       while (i < (n - 1)) {
                if ((c = x_getc(f)) == EOF) {
                        break;
                }
diff --git a/source3/include/client.h b/source3/include/client.h
index 35fa2f1..59fb104 100644
--- a/source3/include/client.h
+++ b/source3/include/client.h
@@ -22,7 +22,7 @@
 #ifndef _CLIENT_H
 #define _CLIENT_H
 
-#define CLI_BUFFER_SIZE (0xFFFF)
+#define CLI_BUFFER_SIZE SMB_BUFFER_SIZE_MAX
 
 /* default client timeout to 20 seconds on most commands */
 #define CLIENT_TIMEOUT (20 * 1000)
diff --git a/source3/include/smb.h b/source3/include/smb.h
index 1f6813e..aab4ff5 100644
--- a/source3/include/smb.h
+++ b/source3/include/smb.h
@@ -32,11 +32,9 @@
 /* logged when starting the various Samba daemons */
 #define COPYRIGHT_STARTUP_MESSAGE      "Copyright Andrew Tridgell and the 
Samba Team 1992-2014"
 
-
-#define BUFFER_SIZE (128*1024)
-
 #define SAFETY_MARGIN 1024
 #define LARGE_WRITEX_HDR_SIZE 65
+#define LARGE_WRITEX_BUFFER_SIZE (128*1024)
 
 #define NMB_PORT 137
 #define DGRAM_PORT 138
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index 2114fa3..0565759 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -5204,7 +5204,7 @@ int lp_min_receive_file_size(void)
        if (Globals.iminreceivefile < 0) {
                return 0;
        }
-       return MIN(Globals.iminreceivefile, BUFFER_SIZE);
+       return Globals.iminreceivefile;
 }
 
 /*******************************************************************
diff --git a/source3/smbd/ipc.c b/source3/smbd/ipc.c
index 91d5047..dbb259c 100644
--- a/source3/smbd/ipc.c
+++ b/source3/smbd/ipc.c
@@ -109,12 +109,14 @@ void send_trans_reply(connection_struct *conn,
        int lparam = rparam ? rparam_len : 0;
        struct smbd_server_connection *sconn = req->sconn;
        int max_send = sconn->smb1.sessions.max_send;
+       /* HACK: make sure we send at least 128 byte in one go */
+       int hdr_overhead = SMB_BUFFER_SIZE_MIN - 128;
 
        if (buffer_too_large)
                DEBUG(5,("send_trans_reply: buffer %d too large\n", ldata ));
 
-       this_lparam = MIN(lparam,max_send - 500); /* hack */
-       this_ldata  = MIN(ldata,max_send - (500+this_lparam));
+       this_lparam = MIN(lparam,max_send - hdr_overhead);
+       this_ldata  = MIN(ldata,max_send - (hdr_overhead+this_lparam));
 
        align = ((this_lparam)%4);
 
@@ -163,9 +165,9 @@ void send_trans_reply(connection_struct *conn,
        while (tot_data_sent < ldata || tot_param_sent < lparam)
        {
                this_lparam = MIN(lparam-tot_param_sent,
-                                 max_send - 500); /* hack */
+                                 max_send - hdr_overhead);
                this_ldata  = MIN(ldata -tot_data_sent,
-                                 max_send - (500+this_lparam));
+                                 max_send - (hdr_overhead+this_lparam));
 
                if(this_lparam < 0)
                        this_lparam = 0;
diff --git a/source3/smbd/process.c b/source3/smbd/process.c
index 41b3611..9457000 100644
--- a/source3/smbd/process.c
+++ b/source3/smbd/process.c
@@ -245,7 +245,7 @@ static bool valid_packet_size(size_t len)
         * of header. Don't print the error if this fits.... JRA.
         */
 
-       if (len > (BUFFER_SIZE + LARGE_WRITEX_HDR_SIZE)) {
+       if (len > (LARGE_WRITEX_BUFFER_SIZE + LARGE_WRITEX_HDR_SIZE)) {
                DEBUG(0,("Invalid packet length! (%lu bytes).\n",
                                        (unsigned long)len));
                return false;
@@ -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,10 +3693,14 @@ 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;
+       sconn->smb1.sessions.max_send = SMB_BUFFER_SIZE_MAX;
 
        if (!init_dptrs(sconn)) {
                exit_server("init_dptrs() failed");
diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c
index 3f3bbe1..b189d66 100644
--- a/source3/smbd/reply.c
+++ b/source3/smbd/reply.c
@@ -1698,11 +1698,10 @@ void reply_search(struct smb_request *req)
                }
        } else {
                unsigned int i;
-               maxentries = MIN(
-                       maxentries,
-                       ((BUFFER_SIZE -
-                         ((uint8 *)smb_buf(req->outbuf) + 3 - req->outbuf))
-                        /DIR_STRUCT_SIZE));
+               size_t hdr_size = ((uint8_t *)smb_buf(req->outbuf) + 3 - 
req->outbuf);
+               size_t available_space = sconn->smb1.sessions.max_send - 
hdr_size;
+
+               maxentries = MIN(maxentries, available_space/DIR_STRUCT_SIZE);
 
                DEBUG(8,("dirpath=<%s> dontdescend=<%s>\n",
                         directory,lp_dont_descend(ctx, SNUM(conn))));
@@ -3460,6 +3459,7 @@ void reply_lockread(struct smb_request *req)
        char *data;
        off_t startpos;
        size_t numtoread;
+       size_t maxtoread;
        NTSTATUS status;
        files_struct *fsp;
        struct byte_range_lock *br_lck = NULL;
@@ -3490,18 +3490,12 @@ void reply_lockread(struct smb_request *req)
        numtoread = SVAL(req->vwv+1, 0);
        startpos = IVAL_TO_SMB_OFF_T(req->vwv+2, 0);
 
-       numtoread = MIN(BUFFER_SIZE - (smb_size + 3*2 + 3), numtoread);
-
-       reply_outbuf(req, 5, numtoread + 3);
-
-       data = smb_buf(req->outbuf) + 3;
-
        /*
         * NB. Discovered by Menny Hamburger at Mainsoft. This is a core+
         * protocol request that predates the read/write lock concept. 
         * Thus instead of asking for a read lock here we need to ask
         * for a write lock. JRA.
-        * Note that the requested lock size is unaffected by max_recv.
+        * Note that the requested lock size is unaffected by max_send.
         */
 
        br_lck = do_lock(req->sconn->msg_ctx,
@@ -3524,16 +3518,22 @@ void reply_lockread(struct smb_request *req)
        }
 
        /*
-        * However the requested READ size IS affected by max_recv. 
Insanity.... JRA.
+        * However the requested READ size IS affected by max_send. 
Insanity.... JRA.
         */
+       maxtoread = sconn->smb1.sessions.max_send - (smb_size + 5*2 + 3);
 
-       if (numtoread > sconn->smb1.negprot.max_recv) {
-               DEBUG(0,("reply_lockread: requested read size (%u) is greater 
than maximum allowed (%u). \
+       if (numtoread > maxtoread) {
+               DEBUG(0,("reply_lockread: requested read size (%u) is greater 
than maximum allowed (%u/%u). \
 Returning short read of maximum allowed for compatibility with Windows 
2000.\n",
-                       (unsigned int)numtoread,
-                       (unsigned int)sconn->smb1.negprot.max_recv));
-               numtoread = MIN(numtoread, sconn->smb1.negprot.max_recv);
+                       (unsigned int)numtoread, (unsigned int)maxtoread,
+                       (unsigned int)sconn->smb1.sessions.max_send));
+               numtoread = maxtoread;
        }
+
+       reply_outbuf(req, 5, numtoread + 3);
+
+       data = smb_buf(req->outbuf) + 3;
+
        nread = read_file(fsp,data,startpos,numtoread);
 
        if (nread < 0) {
@@ -3568,10 +3568,10 @@ void reply_read(struct smb_request *req)
 {
        connection_struct *conn = req->conn;
        size_t numtoread;
+       size_t maxtoread;
        ssize_t nread = 0;
        char *data;
        off_t startpos;
-       int outsize = 0;
        files_struct *fsp;
        struct lock_struct lock;
        struct smbd_server_connection *sconn = req->sconn;
@@ -3600,17 +3600,17 @@ void reply_read(struct smb_request *req)
        numtoread = SVAL(req->vwv+1, 0);
        startpos = IVAL_TO_SMB_OFF_T(req->vwv+2, 0);
 
-       numtoread = MIN(BUFFER_SIZE-outsize,numtoread);
-
        /*
-        * The requested read size cannot be greater than max_recv. JRA.
+        * The requested read size cannot be greater than max_send. JRA.
         */
-       if (numtoread > sconn->smb1.negprot.max_recv) {
-               DEBUG(0,("reply_read: requested read size (%u) is greater than 
maximum allowed (%u). \
+       maxtoread = sconn->smb1.sessions.max_send - (smb_size + 5*2 + 3);
+
+       if (numtoread > maxtoread) {
+               DEBUG(0,("reply_read: requested read size (%u) is greater than 
maximum allowed (%u/%u). \
 Returning short read of maximum allowed for compatibility with Windows 
2000.\n",
-                       (unsigned int)numtoread,
-                       (unsigned int)sconn->smb1.negprot.max_recv));
-               numtoread = MIN(numtoread, sconn->smb1.negprot.max_recv);
+                       (unsigned int)numtoread, (unsigned int)maxtoread,
+                       (unsigned int)sconn->smb1.sessions.max_send));
+               numtoread = maxtoread;
        }
 
        reply_outbuf(req, 5, numtoread+3);
diff --git a/source3/smbd/sesssetup.c b/source3/smbd/sesssetup.c
index 02cb445..4b86a99 100644
--- a/source3/smbd/sesssetup.c
+++ b/source3/smbd/sesssetup.c
@@ -383,10 +383,13 @@ static void reply_sesssetup_and_X_spnego(struct 
smb_request *req)
                }
 
                if (!sconn->smb1.sessions.done_sesssetup) {
-                       sconn->smb1.sessions.max_send =
-                               MIN(sconn->smb1.sessions.max_send,smb_bufsize);
+                       if (smb_bufsize < SMB_BUFFER_SIZE_MIN) {
+                               reply_force_doserror(req, ERRSRV, ERRerror);
+                               return;
+                       }
+                       sconn->smb1.sessions.max_send = smb_bufsize;
+                       sconn->smb1.sessions.done_sesssetup = true;
                }
-               sconn->smb1.sessions.done_sesssetup = true;
 
                /* current_user_info is changed on new vuid */
                reload_services(sconn, conn_snum_used, true);
@@ -1088,10 +1091,14 @@ void reply_sesssetup_and_X(struct smb_request *req)
        req->vuid = sess_vuid;
 
        if (!sconn->smb1.sessions.done_sesssetup) {
-               sconn->smb1.sessions.max_send =
-                       MIN(sconn->smb1.sessions.max_send,smb_bufsize);
+               if (smb_bufsize < SMB_BUFFER_SIZE_MIN) {
+                       reply_force_doserror(req, ERRSRV, ERRerror);
+                       END_PROFILE(SMBsesssetupX);
+                       return;
+               }
+               sconn->smb1.sessions.max_send = smb_bufsize;
+               sconn->smb1.sessions.done_sesssetup = true;
        }
-       sconn->smb1.sessions.done_sesssetup = true;
 
        END_PROFILE(SMBsesssetupX);
 }
diff --git a/source3/torture/torture.c b/source3/torture/torture.c
index 1f29a70..340f754 100644
--- a/source3/torture/torture.c
+++ b/source3/torture/torture.c
@@ -3087,7 +3087,7 @@ static bool run_randomipc(int dummy)
 
                cli_api(cli, 
                        param, param_len, 8,  
-                       NULL, 0, BUFFER_SIZE, 
+                       NULL, 0, CLI_BUFFER_SIZE,
                        &rparam, &rprcnt,     
                        &rdata, &rdrcnt);
                if (i % 100 == 0) {
diff --git a/source3/utils/smbfilter.c b/source3/utils/smbfilter.c
index 33f1a90..734971b 100644
--- a/source3/utils/smbfilter.c
+++ b/source3/utils/smbfilter.c
@@ -35,7 +35,6 @@
 #define CLI_CAPABILITY_SET  0
 
 static char *netbiosname;
-static char packet[BUFFER_SIZE];
 
 static void save_file(const char *fname, void *ppacket, size_t length)
 {
@@ -178,6 +177,7 @@ static void filter_child(int c, struct sockaddr_storage 
*dest_ss)
 {
        NTSTATUS status;
        int s = -1;
+       uint8_t packet[128*1024];
 
        /* we have a connection from a new client, now connect to the server */
        status = open_socket_out(dest_ss, TCP_SMB_PORT, LONG_CONNECT_TIMEOUT, 
&s);


-- 
Samba Shared Repository

Reply via email to