svn commit: samba r21206 - in branches/SAMBA_4_0/source: libcli/raw smb_server/smb

tridge at samba.org tridge at samba.org
Wed Feb 7 00:21:30 GMT 2007


Author: tridge
Date: 2007-02-07 00:21:29 +0000 (Wed, 07 Feb 2007)
New Revision: 21206

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=21206

Log:

- a couple more nttrans places were a memcpy() should be used

- changed the setup array in nttrans to be a uint8 array, instead of a
  uint16 array. This makes it clearer that it is the job of the caller
  to do any byte swapping within that data

Modified:
   branches/SAMBA_4_0/source/libcli/raw/interfaces.h
   branches/SAMBA_4_0/source/libcli/raw/rawioctl.c
   branches/SAMBA_4_0/source/libcli/raw/rawnotify.c
   branches/SAMBA_4_0/source/libcli/raw/rawtrans.c
   branches/SAMBA_4_0/source/smb_server/smb/nttrans.c


Changeset:
Modified: branches/SAMBA_4_0/source/libcli/raw/interfaces.h
===================================================================
--- branches/SAMBA_4_0/source/libcli/raw/interfaces.h	2007-02-07 00:16:21 UTC (rev 21205)
+++ branches/SAMBA_4_0/source/libcli/raw/interfaces.h	2007-02-07 00:21:29 UTC (rev 21206)
@@ -2115,14 +2115,14 @@
 		uint32_t max_data;
 		uint32_t setup_count;
 		uint16_t function;
-		uint16_t *setup;
+		uint8_t  *setup;
 		DATA_BLOB params;
 		DATA_BLOB data;
 	} in;
 
 	struct {
-		uint8_t  setup_count;
-		uint16_t *setup;
+		uint8_t  setup_count; /* in units of 16 bit words */
+		uint8_t  *setup;
 		DATA_BLOB params;
 		DATA_BLOB data;
 	} out;

Modified: branches/SAMBA_4_0/source/libcli/raw/rawioctl.c
===================================================================
--- branches/SAMBA_4_0/source/libcli/raw/rawioctl.c	2007-02-07 00:16:21 UTC (rev 21205)
+++ branches/SAMBA_4_0/source/libcli/raw/rawioctl.c	2007-02-07 00:21:29 UTC (rev 21206)
@@ -79,7 +79,7 @@
 	nt.in.max_param = 0;
 	nt.in.max_data = parms->ntioctl.in.max_data;
 	nt.in.setup_count = 4;
-	nt.in.setup = (uint16_t *)setup;
+	nt.in.setup = setup;
 	SIVAL(setup, 0, parms->ntioctl.in.function);
 	SSVAL(setup, 4, parms->ntioctl.in.file.fnum);
 	SCVAL(setup, 6, parms->ntioctl.in.fsctl);

Modified: branches/SAMBA_4_0/source/libcli/raw/rawnotify.c
===================================================================
--- branches/SAMBA_4_0/source/libcli/raw/rawnotify.c	2007-02-07 00:16:21 UTC (rev 21205)
+++ branches/SAMBA_4_0/source/libcli/raw/rawnotify.c	2007-02-07 00:21:29 UTC (rev 21206)
@@ -28,7 +28,7 @@
 struct smbcli_request *smb_raw_changenotify_send(struct smbcli_tree *tree, union smb_notify *parms)
 {
 	struct smb_nttrans nt;
-	uint16_t setup[4];
+	uint8_t setup[8];
 
 	if (parms->nttrans.level != RAW_NOTIFY_NTTRANS) {
 		return NULL;

Modified: branches/SAMBA_4_0/source/libcli/raw/rawtrans.c
===================================================================
--- branches/SAMBA_4_0/source/libcli/raw/rawtrans.c	2007-02-07 00:16:21 UTC (rev 21205)
+++ branches/SAMBA_4_0/source/libcli/raw/rawtrans.c	2007-02-07 00:21:29 UTC (rev 21206)
@@ -449,15 +449,14 @@
 	SMBCLI_CHECK_WCT(req, 18 + parms->out.setup_count);
 
 	if (parms->out.setup_count > 0) {
-		int i;
-		parms->out.setup = talloc_array(mem_ctx, uint16_t, parms->out.setup_count);
+		parms->out.setup = talloc_array(mem_ctx, uint8_t, 
+						parms->out.setup_count*2);
 		if (!parms->out.setup) {
 			req->status = NT_STATUS_NO_MEMORY;
 			return smbcli_request_destroy(req);
 		}
-		for (i=0;i<parms->out.setup_count;i++) {
-			parms->out.setup[i] = SVAL(req->in.vwv, VWV(18+i));
-		}
+		memcpy(parms->out.setup, VWV(18) + (uint8_t *)req->out.vwv,
+		       sizeof(uint16_t) * parms->out.setup_count);
 	}
 	
 	while (recvd_data < total_data || 

Modified: branches/SAMBA_4_0/source/smb_server/smb/nttrans.c
===================================================================
--- branches/SAMBA_4_0/source/smb_server/smb/nttrans.c	2007-02-07 00:16:21 UTC (rev 21205)
+++ branches/SAMBA_4_0/source/smb_server/smb/nttrans.c	2007-02-07 00:21:29 UTC (rev 21206)
@@ -47,7 +47,7 @@
 {
 	trans->out.setup_count = setup_count;
 	if (setup_count != 0) {
-		trans->out.setup = talloc_zero_array(op, uint16_t, setup_count);
+		trans->out.setup = talloc_zero_array(op, uint8_t, setup_count*2);
 		NT_STATUS_HAVE_NO_MEMORY(trans->out.setup);
 	}
 	trans->out.params = data_blob_talloc(op, NULL, param_size);
@@ -499,7 +499,6 @@
 		uint16_t this_data, this_param, max_bytes;
 		uint_t align1 = 1, align2 = (params_left ? 2 : 0);
 		struct smbsrv_request *this_req;
-		int i;
 
 		max_bytes = req_max_data(req) - (align1 + align2);
 
@@ -539,10 +538,8 @@
 		SIVAL(this_req->out.vwv, 31, PTR_DIFF(data, trans->out.data.data));
 
 		SCVAL(this_req->out.vwv, 35, trans->out.setup_count);
-		for (i=0;i<trans->out.setup_count;i++) {
-			SSVAL(this_req->out.vwv, VWV(18+i), trans->out.setup[i]);
-		}
-
+		memcpy((char *)(this_req->out.vwv) + VWV(18), trans->out.setup,
+		       sizeof(uint16_t) * trans->out.setup_count);
 		memset(this_req->out.data, 0, align1);
 		if (this_param != 0) {
 			memcpy(this_req->out.data + align1, params, this_param);
@@ -611,12 +608,11 @@
 	}
 
 	/* parse out the setup words */
-	trans->in.setup = talloc_array(req, uint16_t, trans->in.setup_count);
+	trans->in.setup = talloc_array(req, uint8_t, trans->in.setup_count*2);
 	if (!trans->in.setup) {
 		smbsrv_send_error(req, NT_STATUS_NO_MEMORY);
 		return;
 	}
-
 	memcpy(trans->in.setup, (char *)(req->in.vwv) + VWV(19),
 	       sizeof(uint16_t) * trans->in.setup_count);
 



More information about the samba-cvs mailing list