svn commit: samba r13878 - in branches/SAMBA_3_0/source: include rpc_parse rpc_server

jerry at samba.org jerry at samba.org
Mon Mar 6 18:40:02 GMT 2006


Author: jerry
Date: 2006-03-06 18:40:00 +0000 (Mon, 06 Mar 2006)
New Revision: 13878

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

Log:
move PORT_DATA_1 to use static sized UNICODE strings as per MSDN
Modified:
   branches/SAMBA_3_0/source/include/rpc_spoolss.h
   branches/SAMBA_3_0/source/rpc_parse/parse_spoolss.c
   branches/SAMBA_3_0/source/rpc_server/srv_spoolss_nt.c


Changeset:
Modified: branches/SAMBA_3_0/source/include/rpc_spoolss.h
===================================================================
--- branches/SAMBA_3_0/source/include/rpc_spoolss.h	2006-03-06 18:29:48 UTC (rev 13877)
+++ branches/SAMBA_3_0/source/include/rpc_spoolss.h	2006-03-06 18:40:00 UTC (rev 13878)
@@ -2174,17 +2174,23 @@
 
 /**************************************/
 
+#define MAX_PORTNAME		64
+#define MAX_NETWORK_NAME	49
+#define MAX_SNMP_COMM_NAME	33
+#define	MAX_QUEUE_NAME		33
+#define MAX_IPADDR_STRING	17
+		
 typedef struct {
-	UNISTR portname;	/* constant 64 wchars */
+	uint16 portname[MAX_PORTNAME];
 	uint32 version;
 	uint32 protocol;
 	uint32 size;
 	uint32 reserved;
-	UNISTR hostaddress;	/* constant 49 wchars */
-	UNISTR snmpcommunity;	/* constant 33 wchars */
+	uint16 hostaddress[MAX_NETWORK_NAME];
+	uint16 snmpcommunity[MAX_SNMP_COMM_NAME];
 	uint32 dblspool;
-	UNISTR queue;		/* constant 33 wchars */
-	UNISTR ipaddress;	/* constant 17 wchars */
+	uint16 queue[MAX_QUEUE_NAME];
+	uint16 ipaddress[MAX_IPADDR_STRING];
 	uint32 port;
 	uint32 snmpenabled;
 	uint32 snmpdevindex;

Modified: branches/SAMBA_3_0/source/rpc_parse/parse_spoolss.c
===================================================================
--- branches/SAMBA_3_0/source/rpc_parse/parse_spoolss.c	2006-03-06 18:29:48 UTC (rev 13877)
+++ branches/SAMBA_3_0/source/rpc_parse/parse_spoolss.c	2006-03-06 18:40:00 UTC (rev 13878)
@@ -7491,28 +7491,21 @@
 
 /*******************************************************************
  ********************************************************************/  
+ 
+#define PORT_DATA_1_PAD    540
 
 static BOOL smb_io_port_data_1( const char *desc, RPC_BUFFER *buf, int depth, SPOOL_PORT_DATA_1 *p1 )
 {
 	prs_struct *ps = &buf->prs;
-	uint8 *fodder = NULL;
+	uint8 padding[PORT_DATA_1_PAD];
 
 	prs_debug(ps, depth, desc, "smb_io_port_data_1");
 	depth++;
 
 	if(!prs_align(ps))
 		return False;	
-		
-	if ( UNMARSHALLING(ps) ) {
-		p1->portname.buffer = PRS_ALLOC_MEM( ps, uint16, 64 );
-		p1->hostaddress.buffer = PRS_ALLOC_MEM( ps, uint16, 49 );
-		p1->snmpcommunity.buffer = PRS_ALLOC_MEM( ps, uint16, 33 );
-		p1->queue.buffer = PRS_ALLOC_MEM( ps, uint16, 33 );
-		p1->ipaddress.buffer = PRS_ALLOC_MEM( ps, uint16, 17 );	
-		fodder = PRS_ALLOC_MEM( ps, uint8, 540 );	
-	}
 
-	if( !prs_uint16s(True, "portname", ps, depth, p1->portname.buffer, 64))
+	if( !prs_uint16s(True, "portname", ps, depth, p1->portname, MAX_PORTNAME))
 		return False;
 
 	if (!prs_uint32("version", ps, depth, &p1->version))
@@ -7524,21 +7517,20 @@
 	if (!prs_uint32("reserved", ps, depth, &p1->reserved))
 		return False;
 
-	if( !prs_uint16s(True, "hostaddress", ps, depth, p1->hostaddress.buffer, 49))
+	if( !prs_uint16s(True, "hostaddress", ps, depth, p1->hostaddress, MAX_NETWORK_NAME))
 		return False;
-	if( !prs_uint16s(True, "snmpcommunity", ps, depth, p1->snmpcommunity.buffer, 33))
+	if( !prs_uint16s(True, "snmpcommunity", ps, depth, p1->snmpcommunity, MAX_SNMP_COMM_NAME))
 		return False;
 
 	if (!prs_uint32("dblspool", ps, depth, &p1->dblspool))
 		return False;
 		
-	if( !prs_uint16s(True, "queue", ps, depth, p1->queue.buffer, 33))
+	if( !prs_uint16s(True, "queue", ps, depth, p1->queue, MAX_QUEUE_NAME))
 		return False;
-	if( !prs_uint16s(True, "ipaddress", ps, depth, p1->ipaddress.buffer, 17))
+	if( !prs_uint16s(True, "ipaddress", ps, depth, p1->ipaddress, MAX_IPADDR_STRING))
 		return False;
 
-	/* fodder according to MSDN */
-	if( !prs_uint8s(False, "", ps, depth, fodder, 540))
+	if( !prs_uint8s(False, "", ps, depth, padding, PORT_DATA_1_PAD))
 		return False;
 		
 	if (!prs_uint32("port", ps, depth, &p1->port))
@@ -7563,12 +7555,9 @@
 	if ( !smb_io_port_data_1( "port_data_1", buf, 0, &spdata_1 ) )
 		return False;
 		
-	rpcstr_pull(port1->name, spdata_1.portname.buffer, sizeof(port1->name),
-		-1, 0);
-	rpcstr_pull(port1->queue, spdata_1.queue.buffer, sizeof(port1->queue), 
-		-1, 0);
-	rpcstr_pull(port1->hostaddr, spdata_1.hostaddress.buffer, 
-		sizeof(port1->hostaddr), -1, 0);
+	rpcstr_pull(port1->name, spdata_1.portname, sizeof(port1->name), -1, 0);
+	rpcstr_pull(port1->queue, spdata_1.queue, sizeof(port1->queue), -1, 0);
+	rpcstr_pull(port1->hostaddr, spdata_1.hostaddress, sizeof(port1->hostaddr), -1, 0);
 	
 	port1->port = spdata_1.port;
 	

Modified: branches/SAMBA_3_0/source/rpc_server/srv_spoolss_nt.c
===================================================================
--- branches/SAMBA_3_0/source/rpc_server/srv_spoolss_nt.c	2006-03-06 18:29:48 UTC (rev 13877)
+++ branches/SAMBA_3_0/source/rpc_server/srv_spoolss_nt.c	2006-03-06 18:40:00 UTC (rev 13878)
@@ -9528,6 +9528,7 @@
 
 /*******************************************************************
 *******************************************************************/
+#if 0 	/* don't support management using the "Local Port" monitor */
 
 static WERROR xcvlocal_monitorui( NT_USER_TOKEN *token, RPC_BUFFER *in, 
                                   RPC_BUFFER *out, uint32 *needed )
@@ -9554,8 +9555,14 @@
 	{ "MonitorUI",	xcvlocal_monitorui },
 	{ NULL,		NULL }
 };
+#else
+struct xcv_api_table xcvlocal_cmds[] = {
+	{ NULL,		NULL }
+};
+#endif
 
 
+
 /*******************************************************************
 *******************************************************************/
 
@@ -9566,7 +9573,6 @@
 	int i;
 	
 	DEBUG(10,("process_xcvlocal_command: Received command \"%s\"\n", command));
-	
 
 	for ( i=0; xcvlocal_cmds[i].name; i++ ) {
 		if ( strcmp( command, xcvlocal_cmds[i].name ) == 0 )



More information about the samba-cvs mailing list