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);