[SCM] Samba Shared Repository - branch master updated

Stefan Metzmacher metze at samba.org
Fri Nov 18 07:14:04 MST 2011


The branch, master has been updated
       via  20df0f3 s3:libsmb: verify num_setup for SMBnttrans in cli_pull_trans()
       via  d3cb61c s3:libsmb: fix compiler warning in cli_pull_trans()
       via  48bcb8c s3:libsmb: only align unicode pipe_name (bug #8586)
      from  2642f38 s3: Fix bug 8371

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


- Log -----------------------------------------------------------------
commit 20df0f34a8670f0dd5f3eaeb74af900f535bbe01
Author: Stefan Metzmacher <metze at samba.org>
Date:   Fri Nov 18 13:20:43 2011 +0100

    s3:libsmb: verify num_setup for SMBnttrans in cli_pull_trans()
    
    metze
    
    Autobuild-User: Stefan Metzmacher <metze at samba.org>
    Autobuild-Date: Fri Nov 18 15:13:52 CET 2011 on sn-devel-104

commit d3cb61cf05485eda26280186bfa3850e2e6bcca9
Author: Stefan Metzmacher <metze at samba.org>
Date:   Fri Nov 18 13:19:19 2011 +0100

    s3:libsmb: fix compiler warning in cli_pull_trans()
    
    metze

commit 48bcb8c846532ccd5489ef705182fb81c5278b04
Author: Stefan Metzmacher <metze at samba.org>
Date:   Fri Nov 18 08:40:18 2011 +0100

    s3:libsmb: only align unicode pipe_name (bug #8586)
    
    metze

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

Summary of changes:
 source3/libsmb/clitrans.c |   26 ++++++++++++++++++--------
 1 files changed, 18 insertions(+), 8 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/libsmb/clitrans.c b/source3/libsmb/clitrans.c
index 4bc9f4a..5c73e2d 100644
--- a/source3/libsmb/clitrans.c
+++ b/source3/libsmb/clitrans.c
@@ -85,6 +85,7 @@ static NTSTATUS cli_pull_trans(uint8_t *inbuf,
 			       uint32_t *pdata_disp, uint8_t **pdata)
 {
 	uint32_t param_ofs, data_ofs;
+	uint8_t expected_num_setup;
 
 	if (expect_first_reply) {
 		if ((wct != 0) || (num_bytes != 0)) {
@@ -99,6 +100,7 @@ static NTSTATUS cli_pull_trans(uint8_t *inbuf,
 		if (wct < 10) {
 			return NT_STATUS_INVALID_NETWORK_RESPONSE;
 		}
+		expected_num_setup = wct - 10;
 		*ptotal_param	= SVAL(vwv + 0, 0);
 		*ptotal_data	= SVAL(vwv + 1, 0);
 		*pnum_param	= SVAL(vwv + 3, 0);
@@ -108,7 +110,7 @@ static NTSTATUS cli_pull_trans(uint8_t *inbuf,
 		data_ofs	= SVAL(vwv + 7, 0);
 		*pdata_disp	= SVAL(vwv + 8, 0);
 		*pnum_setup	= CVAL(vwv + 9, 0);
-		if (wct < 10 + (*pnum_setup)) {
+		if (expected_num_setup < (*pnum_setup)) {
 			return NT_STATUS_INVALID_NETWORK_RESPONSE;
 		}
 		*psetup = vwv + 10;
@@ -118,6 +120,7 @@ static NTSTATUS cli_pull_trans(uint8_t *inbuf,
 		if (wct < 18) {
 			return NT_STATUS_INVALID_NETWORK_RESPONSE;
 		}
+		expected_num_setup = wct - 18;
 		*ptotal_param	= IVAL(vwv, 3);
 		*ptotal_data	= IVAL(vwv, 7);
 		*pnum_param	= IVAL(vwv, 11);
@@ -127,6 +130,9 @@ static NTSTATUS cli_pull_trans(uint8_t *inbuf,
 		data_ofs	= IVAL(vwv, 27);
 		*pdata_disp	= IVAL(vwv, 31);
 		*pnum_setup	= CVAL(vwv, 35);
+		if (expected_num_setup < (*pnum_setup)) {
+			return NT_STATUS_INVALID_NETWORK_RESPONSE;
+		}
 		*psetup		= vwv + 18;
 		break;
 
@@ -209,14 +215,18 @@ static void cli_trans_format(struct cli_trans_state *state, uint8_t *pwct,
 
 	switch (cmd) {
 	case SMBtrans:
-		pad[0] = 0;
-		iov[0].iov_base = (void *)pad;
-		iov[0].iov_len = 1;
-		iov[1].iov_base = (void *)state->pipe_name_conv;
-		iov[1].iov_len = state->pipe_name_conv_len;
+		if (cli_ucs2(state->cli)) {
+			pad[0] = 0;
+			iov[0].iov_base = (void *)pad;
+			iov[0].iov_len = 1;
+			param_offset += 1;
+			iov += 1;
+		}
+		iov[0].iov_base = (void *)state->pipe_name_conv;
+		iov[0].iov_len = state->pipe_name_conv_len;
 		wct = 14 + state->num_setup;
-		param_offset += iov[0].iov_len + iov[1].iov_len;
-		iov += 2;
+		param_offset += iov[0].iov_len;
+		iov += 1;
 		break;
 	case SMBtrans2:
 		pad[0] = 0;


-- 
Samba Shared Repository


More information about the samba-cvs mailing list