svn commit: samba r22588 - in branches: SAMBA_3_0/source/libmsrpc SAMBA_3_0/source/locking SAMBA_3_0/source/registry SAMBA_3_0/source/rpc_client SAMBA_3_0/source/rpc_parse SAMBA_3_0/source/rpc_server SAMBA_3_0/source/rpcclient SAMBA_3_0/source/utils SAMBA_3_0_25/source/libmsrpc SAMBA_3_0_25/source/locking SAMBA_3_0_25/source/registry SAMBA_3_0_25/source/rpc_client SAMBA_3_0_25/source/rpc_parse SAMBA_3_0_25/source/rpc_server SAMBA_3_0_25/source/rpcclient SAMBA_3_0_25/source/utils

jra at samba.org jra at samba.org
Mon Apr 30 01:34:36 GMT 2007


Author: jra
Date: 2007-04-30 01:34:28 +0000 (Mon, 30 Apr 2007)
New Revision: 22588

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

Log:
Make all uses of TALLOC_MEMDUP consistent.
Jeremy.

Modified:
   branches/SAMBA_3_0/source/libmsrpc/libmsrpc_internal.c
   branches/SAMBA_3_0/source/locking/brlock.c
   branches/SAMBA_3_0/source/registry/reg_objects.c
   branches/SAMBA_3_0/source/rpc_client/cli_spoolss.c
   branches/SAMBA_3_0/source/rpc_parse/parse_spoolss.c
   branches/SAMBA_3_0/source/rpc_server/srv_spoolss_nt.c
   branches/SAMBA_3_0/source/rpcclient/cmd_spoolss.c
   branches/SAMBA_3_0/source/utils/net_rpc_printer.c
   branches/SAMBA_3_0_25/source/libmsrpc/libmsrpc_internal.c
   branches/SAMBA_3_0_25/source/locking/brlock.c
   branches/SAMBA_3_0_25/source/registry/reg_objects.c
   branches/SAMBA_3_0_25/source/rpc_client/cli_spoolss.c
   branches/SAMBA_3_0_25/source/rpc_parse/parse_spoolss.c
   branches/SAMBA_3_0_25/source/rpc_server/srv_spoolss_nt.c
   branches/SAMBA_3_0_25/source/rpcclient/cmd_spoolss.c
   branches/SAMBA_3_0_25/source/utils/net_rpc_printer.c


Changeset:
Modified: branches/SAMBA_3_0/source/libmsrpc/libmsrpc_internal.c
===================================================================
--- branches/SAMBA_3_0/source/libmsrpc/libmsrpc_internal.c	2007-04-30 01:17:34 UTC (rev 22587)
+++ branches/SAMBA_3_0/source/libmsrpc/libmsrpc_internal.c	2007-04-30 01:34:28 UTC (rev 22588)
@@ -264,13 +264,16 @@
 
 		data->reg_binary.data_length = size;
 
-		data->reg_binary.data =
-			( uint8 * ) TALLOC_MEMDUP( mem_ctx, buf.buffer,
-						   size );
-		if ( !data->reg_binary.data ) {
-			TALLOC_FREE( data );
-			errno = ENOMEM;
-			data = NULL;
+		if (size) {
+			data->reg_binary.data =
+				( uint8 * ) TALLOC_MEMDUP( mem_ctx, buf.buffer, size );
+			if ( !data->reg_binary.data ) {
+				TALLOC_FREE( data );
+				errno = ENOMEM;
+				data = NULL;
+			}
+		} else {
+			data->reg_binary.data = NULL;
 		}
 		break;
 

Modified: branches/SAMBA_3_0/source/locking/brlock.c
===================================================================
--- branches/SAMBA_3_0/source/locking/brlock.c	2007-04-30 01:17:34 UTC (rev 22587)
+++ branches/SAMBA_3_0/source/locking/brlock.c	2007-04-30 01:34:28 UTC (rev 22588)
@@ -1283,10 +1283,15 @@
 			unsigned int num_locks_copy;
 
 			/* Copy the current lock array. */
-			locks_copy = (struct lock_struct *)TALLOC_MEMDUP(br_lck, locks, br_lck->num_locks * sizeof(struct lock_struct));
-			if (!locks_copy) {
-				smb_panic("brl_close_fnum: talloc fail.\n");
+			if (br_lck->num_locks) {
+				locks_copy = (struct lock_struct *)TALLOC_MEMDUP(br_lck, locks, br_lck->num_locks * sizeof(struct lock_struct));
+				if (!locks_copy) {
+					smb_panic("brl_close_fnum: talloc fail.\n");
+	 			}
+			} else {	
+				locks_copy = NULL;
 			}
+
 			num_locks_copy = br_lck->num_locks;
 
 			for (i=0; i < num_locks_copy; i++) {

Modified: branches/SAMBA_3_0/source/registry/reg_objects.c
===================================================================
--- branches/SAMBA_3_0/source/registry/reg_objects.c	2007-04-30 01:17:34 UTC (rev 22587)
+++ branches/SAMBA_3_0/source/registry/reg_objects.c	2007-04-30 01:34:28 UTC (rev 22588)
@@ -310,8 +310,16 @@
 	
 	fstrcpy( ctr->values[ctr->num_values]->valuename, name );
 	ctr->values[ctr->num_values]->type = type;
-	ctr->values[ctr->num_values]->data_p = (uint8 *)TALLOC_MEMDUP(
-		ctr, data_p, size );
+	if (size) {
+		ctr->values[ctr->num_values]->data_p = (uint8 *)TALLOC_MEMDUP(
+			ctr, data_p, size );
+		if (!ctr->values[ctr->num_values]->data_p) {
+			ctr->num_values = 0;
+			return 0;
+		}
+	} else {
+		ctr->values[ctr->num_values]->data_p = NULL;
+	}
 	ctr->values[ctr->num_values]->size = size;
 	ctr->num_values++;
 
@@ -350,8 +358,16 @@
 	
 		fstrcpy( ctr->values[ctr->num_values]->valuename, val->valuename );
 		ctr->values[ctr->num_values]->type = val->type;
-		ctr->values[ctr->num_values]->data_p = (uint8 *)TALLOC_MEMDUP(
-			ctr, val->data_p, val->size );
+		if (val->size) {
+			ctr->values[ctr->num_values]->data_p = (uint8 *)TALLOC_MEMDUP(
+				ctr, val->data_p, val->size );
+			if (!ctr->values[ctr->num_values]->data_p) {
+				ctr->num_values = 0;
+				return 0;
+			}
+		} else {
+			ctr->values[ctr->num_values]->data_p = NULL;
+		}
 		ctr->values[ctr->num_values]->size = val->size;
 		ctr->num_values++;
 	}

Modified: branches/SAMBA_3_0/source/rpc_client/cli_spoolss.c
===================================================================
--- branches/SAMBA_3_0/source/rpc_client/cli_spoolss.c	2007-04-30 01:17:34 UTC (rev 22587)
+++ branches/SAMBA_3_0/source/rpc_client/cli_spoolss.c	2007-04-30 01:34:28 UTC (rev 22588)
@@ -1609,7 +1609,11 @@
 
 	/* Return output parameters */
 
-	value->data_p = (uint8 *)TALLOC_MEMDUP(mem_ctx, out.data, out.needed);
+	if (out.needed) {
+		value->data_p = (uint8 *)TALLOC_MEMDUP(mem_ctx, out.data, out.needed);
+	} else {
+		value->data_p = NULL;
+	}
 	value->type = out.type;
 	value->size = out.size;
 
@@ -1662,7 +1666,11 @@
 
 	/* Return output parameters */
 
-	value->data_p = (uint8 *)TALLOC_MEMDUP(mem_ctx, out.data, out.needed);
+	if (out.needed) {
+		value->data_p = (uint8 *)TALLOC_MEMDUP(mem_ctx, out.data, out.needed);
+	} else {
+		value->data_p = NULL;
+	}
 	value->type = out.type;
 	value->size = out.needed;
 	
@@ -1758,8 +1766,12 @@
 	if (value) {
 		rpcstr_pull(value->valuename, out.value, sizeof(value->valuename), -1,
 			    STR_TERMINATE);
-		value->data_p = (uint8 *)TALLOC_MEMDUP(mem_ctx, out.data,
+		if (out.realdatasize) {
+			value->data_p = (uint8 *)TALLOC_MEMDUP(mem_ctx, out.data,
 						       out.realdatasize);
+		} else {
+			value->data_p = NULL;
+		}
 		value->type = out.type;
 		value->size = out.realdatasize;
 	}

Modified: branches/SAMBA_3_0/source/rpc_parse/parse_spoolss.c
===================================================================
--- branches/SAMBA_3_0/source/rpc_parse/parse_spoolss.c	2007-04-30 01:17:34 UTC (rev 22587)
+++ branches/SAMBA_3_0/source/rpc_parse/parse_spoolss.c	2007-04-30 01:34:28 UTC (rev 22588)
@@ -5251,9 +5251,13 @@
 
 	buf5->buf_len = len;
 	if (src) {
-		if((buf5->buffer=(uint16*)TALLOC_MEMDUP(mem_ctx, src, sizeof(uint16)*len)) == NULL) {
-			DEBUG(0,("make_spoolss_buffer5: Unable to malloc memory for buffer!\n"));
-			return False;
+		if (len) {
+			if((buf5->buffer=(uint16*)TALLOC_MEMDUP(mem_ctx, src, sizeof(uint16)*len)) == NULL) {
+				DEBUG(0,("make_spoolss_buffer5: Unable to malloc memory for buffer!\n"));
+				return False;
+			}
+		} else {
+			buf5->buffer = NULL;
 		}
 	} else {
 		buf5->buffer=NULL;

Modified: branches/SAMBA_3_0/source/rpc_server/srv_spoolss_nt.c
===================================================================
--- branches/SAMBA_3_0/source/rpc_server/srv_spoolss_nt.c	2007-04-30 01:17:34 UTC (rev 22587)
+++ branches/SAMBA_3_0/source/rpc_server/srv_spoolss_nt.c	2007-04-30 01:34:28 UTC (rev 22588)
@@ -1416,11 +1416,15 @@
 			return NULL;
 	}
 
-	d->dev_private = (uint8 *)TALLOC_MEMDUP(ctx, devmode->dev_private,
+	if (devmode->driverextra) {
+		d->dev_private = (uint8 *)TALLOC_MEMDUP(ctx, devmode->dev_private,
 						devmode->driverextra);
-	if (!d->dev_private) {
-		return NULL;
-	}	
+		if (!d->dev_private) {
+			return NULL;
+		}	
+	} else {
+		d->dev_private = NULL;
+	}
 	return d;
 }
 

Modified: branches/SAMBA_3_0/source/rpcclient/cmd_spoolss.c
===================================================================
--- branches/SAMBA_3_0/source/rpcclient/cmd_spoolss.c	2007-04-30 01:17:34 UTC (rev 22587)
+++ branches/SAMBA_3_0/source/rpcclient/cmd_spoolss.c	2007-04-30 01:34:28 UTC (rev 22588)
@@ -2027,15 +2027,23 @@
 		UNISTR2 data;
 		init_unistr2(&data, argv[4], UNI_STR_TERMINATE);
 		value.size = data.uni_str_len * 2;
-		value.data_p = (uint8 *)TALLOC_MEMDUP(mem_ctx, data.buffer,
+		if (value.size) {
+			value.data_p = (uint8 *)TALLOC_MEMDUP(mem_ctx, data.buffer,
 						      value.size);
+		} else {
+			value.data_p = NULL;
+		}
 		break;
 	}
 	case REG_DWORD: {
 		uint32 data = strtoul(argv[4], NULL, 10);
 		value.size = sizeof(data);
-		value.data_p = (uint8 *)TALLOC_MEMDUP(mem_ctx, &data,
+		if (sizeof(data)) {
+			value.data_p = (uint8 *)TALLOC_MEMDUP(mem_ctx, &data,
 						      sizeof(data));
+		} else {
+			value.data_p = NULL;
+		}
 		break;
 	}
 	case REG_BINARY: {

Modified: branches/SAMBA_3_0/source/utils/net_rpc_printer.c
===================================================================
--- branches/SAMBA_3_0/source/utils/net_rpc_printer.c	2007-04-30 01:17:34 UTC (rev 22587)
+++ branches/SAMBA_3_0/source/utils/net_rpc_printer.c	2007-04-30 01:34:28 UTC (rev 22588)
@@ -2331,7 +2331,11 @@
 
 					value.type = REG_SZ;
 					value.size = data.uni_str_len * 2;
-					value.data_p = (uint8 *)TALLOC_MEMDUP(mem_ctx, data.buffer, value.size);
+					if (value.size) {
+						value.data_p = (uint8 *)TALLOC_MEMDUP(mem_ctx, data.buffer, value.size);
+					} else {
+						value.data_p = NULL;
+					}
 
 					if (opt_verbose) 
 						display_reg_value(subkey, value);

Modified: branches/SAMBA_3_0_25/source/libmsrpc/libmsrpc_internal.c
===================================================================
--- branches/SAMBA_3_0_25/source/libmsrpc/libmsrpc_internal.c	2007-04-30 01:17:34 UTC (rev 22587)
+++ branches/SAMBA_3_0_25/source/libmsrpc/libmsrpc_internal.c	2007-04-30 01:34:28 UTC (rev 22588)
@@ -264,13 +264,16 @@
 
 		data->reg_binary.data_length = size;
 
-		data->reg_binary.data =
-			( uint8 * ) TALLOC_MEMDUP( mem_ctx, buf.buffer,
-						   size );
-		if ( !data->reg_binary.data ) {
-			TALLOC_FREE( data );
-			errno = ENOMEM;
-			data = NULL;
+		if (size) {
+			data->reg_binary.data =
+				( uint8 * ) TALLOC_MEMDUP( mem_ctx, buf.buffer, size );
+			if ( !data->reg_binary.data ) {
+				TALLOC_FREE( data );
+				errno = ENOMEM;
+				data = NULL;
+			}
+		} else {
+			data->reg_binary.data = NULL;
 		}
 		break;
 

Modified: branches/SAMBA_3_0_25/source/locking/brlock.c
===================================================================
--- branches/SAMBA_3_0_25/source/locking/brlock.c	2007-04-30 01:17:34 UTC (rev 22587)
+++ branches/SAMBA_3_0_25/source/locking/brlock.c	2007-04-30 01:34:28 UTC (rev 22588)
@@ -1283,10 +1283,15 @@
 			unsigned int num_locks_copy;
 
 			/* Copy the current lock array. */
-			locks_copy = (struct lock_struct *)TALLOC_MEMDUP(br_lck, locks, br_lck->num_locks * sizeof(struct lock_struct));
-			if (!locks_copy) {
-				smb_panic("brl_close_fnum: talloc fail.\n");
+			if (br_lck->num_locks) {
+				locks_copy = (struct lock_struct *)TALLOC_MEMDUP(br_lck, locks, br_lck->num_locks * sizeof(struct lock_struct));
+				if (!locks_copy) {
+					smb_panic("brl_close_fnum: talloc fail.\n");
+	 			}
+			} else {	
+				locks_copy = NULL;
 			}
+
 			num_locks_copy = br_lck->num_locks;
 
 			for (i=0; i < num_locks_copy; i++) {

Modified: branches/SAMBA_3_0_25/source/registry/reg_objects.c
===================================================================
--- branches/SAMBA_3_0_25/source/registry/reg_objects.c	2007-04-30 01:17:34 UTC (rev 22587)
+++ branches/SAMBA_3_0_25/source/registry/reg_objects.c	2007-04-30 01:34:28 UTC (rev 22588)
@@ -308,8 +308,16 @@
 	
 	fstrcpy( ctr->values[ctr->num_values]->valuename, name );
 	ctr->values[ctr->num_values]->type = type;
-	ctr->values[ctr->num_values]->data_p = (uint8 *)TALLOC_MEMDUP(
-		ctr, data_p, size );
+	if (size) {
+		ctr->values[ctr->num_values]->data_p = (uint8 *)TALLOC_MEMDUP(
+			ctr, data_p, size );
+		if (!ctr->values[ctr->num_values]->data_p) {
+			ctr->num_values = 0;
+			return 0;
+		}
+	} else {
+		ctr->values[ctr->num_values]->data_p = NULL;
+	}
 	ctr->values[ctr->num_values]->size = size;
 	ctr->num_values++;
 
@@ -348,8 +356,16 @@
 	
 		fstrcpy( ctr->values[ctr->num_values]->valuename, val->valuename );
 		ctr->values[ctr->num_values]->type = val->type;
-		ctr->values[ctr->num_values]->data_p = (uint8 *)TALLOC_MEMDUP(
-			ctr, val->data_p, val->size );
+		if (val->size) {
+			ctr->values[ctr->num_values]->data_p = (uint8 *)TALLOC_MEMDUP(
+				ctr, val->data_p, val->size );
+			if (!ctr->values[ctr->num_values]->data_p) {
+				ctr->num_values = 0;
+				return 0;
+			}
+		} else {
+			ctr->values[ctr->num_values]->data_p = NULL;
+		}
 		ctr->values[ctr->num_values]->size = val->size;
 		ctr->num_values++;
 	}

Modified: branches/SAMBA_3_0_25/source/rpc_client/cli_spoolss.c
===================================================================
--- branches/SAMBA_3_0_25/source/rpc_client/cli_spoolss.c	2007-04-30 01:17:34 UTC (rev 22587)
+++ branches/SAMBA_3_0_25/source/rpc_client/cli_spoolss.c	2007-04-30 01:34:28 UTC (rev 22588)
@@ -1609,7 +1609,11 @@
 
 	/* Return output parameters */
 
-	value->data_p = (uint8 *)TALLOC_MEMDUP(mem_ctx, out.data, out.needed);
+	if (out.needed) {
+		value->data_p = (uint8 *)TALLOC_MEMDUP(mem_ctx, out.data, out.needed);
+	} else {
+		value->data_p = NULL;
+	}
 	value->type = out.type;
 	value->size = out.size;
 
@@ -1662,7 +1666,11 @@
 
 	/* Return output parameters */
 
-	value->data_p = (uint8 *)TALLOC_MEMDUP(mem_ctx, out.data, out.needed);
+	if (out.needed) {
+		value->data_p = (uint8 *)TALLOC_MEMDUP(mem_ctx, out.data, out.needed);
+	} else {
+		value->data_p = NULL;
+	}
 	value->type = out.type;
 	value->size = out.needed;
 	
@@ -1758,8 +1766,12 @@
 	if (value) {
 		rpcstr_pull(value->valuename, out.value, sizeof(value->valuename), -1,
 			    STR_TERMINATE);
-		value->data_p = (uint8 *)TALLOC_MEMDUP(mem_ctx, out.data,
+		if (out.realdatasize) {
+			value->data_p = (uint8 *)TALLOC_MEMDUP(mem_ctx, out.data,
 						       out.realdatasize);
+		} else {
+			value->data_p = NULL;
+		}
 		value->type = out.type;
 		value->size = out.realdatasize;
 	}

Modified: branches/SAMBA_3_0_25/source/rpc_parse/parse_spoolss.c
===================================================================
--- branches/SAMBA_3_0_25/source/rpc_parse/parse_spoolss.c	2007-04-30 01:17:34 UTC (rev 22587)
+++ branches/SAMBA_3_0_25/source/rpc_parse/parse_spoolss.c	2007-04-30 01:34:28 UTC (rev 22588)
@@ -5255,9 +5255,13 @@
 
 	buf5->buf_len = len;
 	if (src) {
-		if((buf5->buffer=(uint16*)TALLOC_MEMDUP(mem_ctx, src, sizeof(uint16)*len)) == NULL) {
-			DEBUG(0,("make_spoolss_buffer5: Unable to malloc memory for buffer!\n"));
-			return False;
+		if (len) {
+			if((buf5->buffer=(uint16*)TALLOC_MEMDUP(mem_ctx, src, sizeof(uint16)*len)) == NULL) {
+				DEBUG(0,("make_spoolss_buffer5: Unable to malloc memory for buffer!\n"));
+				return False;
+			}
+		} else {
+			buf5->buffer = NULL;
 		}
 	} else {
 		buf5->buffer=NULL;

Modified: branches/SAMBA_3_0_25/source/rpc_server/srv_spoolss_nt.c
===================================================================
--- branches/SAMBA_3_0_25/source/rpc_server/srv_spoolss_nt.c	2007-04-30 01:17:34 UTC (rev 22587)
+++ branches/SAMBA_3_0_25/source/rpc_server/srv_spoolss_nt.c	2007-04-30 01:34:28 UTC (rev 22588)
@@ -1408,11 +1408,15 @@
 			return NULL;
 	}
 
-	d->dev_private = (uint8 *)TALLOC_MEMDUP(ctx, devmode->dev_private,
+	if (devmode->driverextra) {
+		d->dev_private = (uint8 *)TALLOC_MEMDUP(ctx, devmode->dev_private,
 						devmode->driverextra);
-	if (!d->dev_private) {
-		return NULL;
-	}	
+		if (!d->dev_private) {
+			return NULL;
+		}	
+	} else {
+		d->dev_private = NULL;
+	}
 	return d;
 }
 

Modified: branches/SAMBA_3_0_25/source/rpcclient/cmd_spoolss.c
===================================================================
--- branches/SAMBA_3_0_25/source/rpcclient/cmd_spoolss.c	2007-04-30 01:17:34 UTC (rev 22587)
+++ branches/SAMBA_3_0_25/source/rpcclient/cmd_spoolss.c	2007-04-30 01:34:28 UTC (rev 22588)
@@ -2022,15 +2022,23 @@
 		UNISTR2 data;
 		init_unistr2(&data, argv[4], UNI_STR_TERMINATE);
 		value.size = data.uni_str_len * 2;
-		value.data_p = (uint8 *)TALLOC_MEMDUP(mem_ctx, data.buffer,
+		if (value.size) {
+			value.data_p = (uint8 *)TALLOC_MEMDUP(mem_ctx, data.buffer,
 						      value.size);
+		} else {
+			value.data_p = NULL;
+		}
 		break;
 	}
 	case REG_DWORD: {
 		uint32 data = strtoul(argv[4], NULL, 10);
 		value.size = sizeof(data);
-		value.data_p = (uint8 *)TALLOC_MEMDUP(mem_ctx, &data,
+		if (sizeof(data)) {
+			value.data_p = (uint8 *)TALLOC_MEMDUP(mem_ctx, &data,
 						      sizeof(data));
+		} else {
+			value.data_p = NULL;
+		}
 		break;
 	}
 	case REG_BINARY: {

Modified: branches/SAMBA_3_0_25/source/utils/net_rpc_printer.c
===================================================================
--- branches/SAMBA_3_0_25/source/utils/net_rpc_printer.c	2007-04-30 01:17:34 UTC (rev 22587)
+++ branches/SAMBA_3_0_25/source/utils/net_rpc_printer.c	2007-04-30 01:34:28 UTC (rev 22588)
@@ -2327,7 +2327,11 @@
 
 					value.type = REG_SZ;
 					value.size = data.uni_str_len * 2;
-					value.data_p = TALLOC_MEMDUP(mem_ctx, data.buffer, value.size);
+					if (value.size) {
+						value.data_p = TALLOC_MEMDUP(mem_ctx, data.buffer, value.size);
+					} else {
+						value.data_p = NULL;
+					}
 
 					if (opt_verbose) 
 						display_reg_value(subkey, value);



More information about the samba-cvs mailing list