svn commit: samba r14388 - in trunk/source: lib libmsrpc rpc_parse rpc_server smbd

jra at samba.org jra at samba.org
Tue Mar 14 17:21:47 GMT 2006


Author: jra
Date: 2006-03-14 17:21:44 +0000 (Tue, 14 Mar 2006)
New Revision: 14388

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

Log:
Try and fix the coverity issues (#53, #54) with negative
sink by ensuring all uses of rpcstr_push are consistent
with a size_t dest size arg.
Jeremy.

Modified:
   trunk/source/lib/util_unistr.c
   trunk/source/libmsrpc/libmsrpc_internal.c
   trunk/source/rpc_parse/parse_misc.c
   trunk/source/rpc_server/srv_spoolss_nt.c
   trunk/source/smbd/msdfs.c
   trunk/source/smbd/trans2.c


Changeset:
Modified: trunk/source/lib/util_unistr.c
===================================================================
--- trunk/source/lib/util_unistr.c	2006-03-14 17:21:30 UTC (rev 14387)
+++ trunk/source/lib/util_unistr.c	2006-03-14 17:21:44 UTC (rev 14388)
@@ -229,7 +229,7 @@
  null termination if applied
 ********************************************************************/
 
-size_t dos_PutUniCode(char *dst,const char *src, ssize_t len, BOOL null_terminate)
+size_t dos_PutUniCode(char *dst,const char *src, size_t len, BOOL null_terminate)
 {
 	int flags = null_terminate ? STR_UNICODE|STR_NOALIGN|STR_TERMINATE
 				   : STR_UNICODE|STR_NOALIGN;
@@ -308,7 +308,7 @@
 /* Converts a string from internal samba format to unicode
  */ 
 
-int rpcstr_push(void* dest, const char *src, int dest_len, int flags)
+int rpcstr_push(void* dest, const char *src, size_t dest_len, int flags)
 {
 	return push_ucs2(NULL, dest, src, dest_len, flags|STR_UNICODE|STR_NOALIGN);
 }

Modified: trunk/source/libmsrpc/libmsrpc_internal.c
===================================================================
--- trunk/source/libmsrpc/libmsrpc_internal.c	2006-03-14 17:21:30 UTC (rev 14387)
+++ trunk/source/libmsrpc/libmsrpc_internal.c	2006-03-14 17:21:44 UTC (rev 14388)
@@ -100,7 +100,6 @@
    RPC_DATA_BLOB *blob = NULL;
    int i;
    uint32 size = 0;
-   uint32 len  = 0;
    uint8 *multi = NULL;
    uint32 multi_idx = 0;
 
@@ -149,7 +148,7 @@
          /*do it using rpcstr_push()*/
          multi_idx = 0;
          for(i = 0; i < data.reg_multi_sz.num_strings; i++) {
-            len = strlen(data.reg_multi_sz.strings[i]) + 1;
+            size_t len = strlen(data.reg_multi_sz.strings[i]) + 1;
 
             rpcstr_push((multi + multi_idx), data.reg_multi_sz.strings[i], len * 2, STR_TERMINATE);
 

Modified: trunk/source/rpc_parse/parse_misc.c
===================================================================
--- trunk/source/rpc_parse/parse_misc.c	2006-03-14 17:21:30 UTC (rev 14387)
+++ trunk/source/rpc_parse/parse_misc.c	2006-03-14 17:21:44 UTC (rev 14388)
@@ -597,7 +597,7 @@
 
 	/* set up string lengths. */
 	str->buf_len = create_rpc_blob(str, len*2);
-	rpcstr_push(str->buffer, buf, str->buf_len, STR_TERMINATE);
+	rpcstr_push(str->buffer, buf, (size_t)str->buf_len, STR_TERMINATE);
 	
 }
 

Modified: trunk/source/rpc_server/srv_spoolss_nt.c
===================================================================
--- trunk/source/rpc_server/srv_spoolss_nt.c	2006-03-14 17:21:30 UTC (rev 14387)
+++ trunk/source/rpc_server/srv_spoolss_nt.c	2006-03-14 17:21:44 UTC (rev 14388)
@@ -8013,7 +8013,7 @@
 			goto done;
 		}
 	
-		*out_value_len = (uint32)rpcstr_push((char *)*out_value, regval_name(val), in_value_len, 0);
+		*out_value_len = (uint32)rpcstr_push((char *)*out_value, regval_name(val), (size_t)in_value_len, 0);
 
 		/* type */
 		

Modified: trunk/source/smbd/msdfs.c
===================================================================
--- trunk/source/smbd/msdfs.c	2006-03-14 17:21:30 UTC (rev 14387)
+++ trunk/source/smbd/msdfs.c	2006-03-14 17:21:44 UTC (rev 14388)
@@ -609,7 +609,7 @@
 
 	DEBUG(10,("setting up version2 referral\nRequested path:\n"));
 
-	requestedpathlen = rpcstr_push(uni_requestedpath, pathname, -1,
+	requestedpathlen = rpcstr_push(uni_requestedpath, pathname, sizeof(pstring),
 				       STR_TERMINATE);
 
 	if (DEBUGLVL(10)) {
@@ -680,7 +680,7 @@
 		SSVAL(pdata,offset+18,uni_reqpathoffset2-offset);
 		/* copy referred path into current offset */
 		unilen = rpcstr_push(pdata+uni_curroffset, ref->alternate_path,
-				     (size_t)-1, STR_UNICODE);
+				     sizeof(pstring), STR_UNICODE);
 
 		SSVAL(pdata,offset+20,uni_curroffset-offset);
 
@@ -709,7 +709,7 @@
 	
 	DEBUG(10,("setting up version3 referral\n"));
 
-	reqpathlen = rpcstr_push(uni_reqpath, pathname, (size_t)-1, STR_TERMINATE);
+	reqpathlen = rpcstr_push(uni_reqpath, pathname, sizeof(pstring), STR_TERMINATE);
 	
 	if (DEBUGLVL(10)) {
 	    dump_data(0, (char *) uni_reqpath,reqpathlen);
@@ -764,7 +764,7 @@
 		SSVAL(pdata,offset+14,uni_reqpathoffset2-offset);
 		/* copy referred path into current offset */
 		unilen = rpcstr_push(pdata+uni_curroffset,ref->alternate_path,
-				     -1, STR_UNICODE | STR_TERMINATE);
+				     sizeof(pstring), STR_UNICODE | STR_TERMINATE);
 		SSVAL(pdata,offset+16,uni_curroffset-offset);
 		/* copy 0x10 bytes of 00's in the ServiceSite GUID */
 		memset(pdata+offset+18,'\0',16);

Modified: trunk/source/smbd/trans2.c
===================================================================
--- trunk/source/smbd/trans2.c	2006-03-14 17:21:30 UTC (rev 14387)
+++ trunk/source/smbd/trans2.c	2006-03-14 17:21:44 UTC (rev 14388)
@@ -3263,7 +3263,7 @@
 			/* Pathname with leading '\'. */
 			{
 				size_t byte_len;
-				byte_len = dos_PutUniCode(pdata+4,dos_fname,max_data_bytes,False);
+				byte_len = dos_PutUniCode(pdata+4,dos_fname,(size_t)max_data_bytes,False);
 				DEBUG(10,("call_trans2qfilepathinfo: SMB_FILE_NAME_INFORMATION\n"));
 				SIVAL(pdata,0,byte_len);
 				data_size = 4 + byte_len;
@@ -3307,7 +3307,7 @@
 			if (mode & aDIR) {
 				data_size = 0;
 			} else {
-				size_t byte_len = dos_PutUniCode(pdata+24,"::$DATA", 0xE, False);
+				size_t byte_len = dos_PutUniCode(pdata+24,"::$DATA", (size_t)0xE, False);
 				SIVAL(pdata,0,0); /* ??? */
 				SIVAL(pdata,4,byte_len); /* Byte length of unicode string ::$DATA */
 				SOFF_T(pdata,8,file_size);



More information about the samba-cvs mailing list