return PAM_CONV_ERR;
}
- reply = malloc(sizeof(struct pam_response) * num_msg);
+ reply = malloc_array_p(struct pam_response, num_msg);
if (!reply)
return PAM_CONV_ERR;
struct chat_struct *t;
while (1) {
- t = (struct chat_struct *)malloc(sizeof(*t));
+ t = malloc_p(struct chat_struct);
if (!t) {
DEBUG(0,("make_pw_chat: malloc failed!\n"));
return NULL;
return PAM_CONV_ERR;
}
- reply = malloc(sizeof(struct pam_response) * num_msg);
+ reply = malloc_array_p(struct pam_response, num_msg);
if (!reply) {
DEBUG(0,("smb_pam_passchange_conv: malloc for reply failed!\n"));
free_pw_chat(pw_chat);
static struct pam_conv *smb_setup_pam_conv(smb_pam_conv_fn smb_pam_conv_fnptr, const char *user,
const char *passwd, const char *newpass)
{
- struct pam_conv *pconv = (struct pam_conv *)malloc(sizeof(struct pam_conv));
- struct smb_pam_userdata *udp = (struct smb_pam_userdata *)malloc(sizeof(struct smb_pam_userdata));
+ struct pam_conv *pconv = malloc_p(struct pam_conv);
+ struct smb_pam_userdata *udp = malloc_p(struct smb_pam_userdata);
if (pconv == NULL || udp == NULL) {
SAFE_FREE(pconv);
if (len >= PATH_MAX)
return(NULL);
- info.matches = (char **)malloc(sizeof(info.matches[0])*MAX_COMPLETIONS);
+ info.matches = malloc_array_p(char *, MAX_COMPLETIONS);
if (!info.matches) return NULL;
info.matches[0] = NULL;
char **matches;
int i, len, samelen = 0, count=1;
- matches = (char **)malloc(sizeof(matches[0])*MAX_COMPLETIONS);
+ matches = malloc_array_p(char *, MAX_COMPLETIONS);
if (!matches) return NULL;
matches[0] = NULL;
struct {
uint32_t num_changes;
- struct {
+ struct notify_changes {
uint32_t action;
WIRE_STRING name;
} *changes;
time_t t;
unsigned i;
- v = (char*)malloc(sizeof(char) *
- (databuf.dsize - TIMEOUT_LEN));
+ v = malloc_array_p(char, databuf.dsize - TIMEOUT_LEN);
SAFE_FREE(databuf.dptr);
sscanf(entry_buf, CACHE_DATA_FMT, (int*)&i, v);
}
entry = strndup(databuf.dptr, databuf.dsize);
SAFE_FREE(databuf.dptr);
- valstr = (char*)malloc(sizeof(char) * (databuf.dsize - TIMEOUT_LEN));
+ valstr = malloc_array_p(char, databuf.dsize - TIMEOUT_LEN);
sscanf(entry, CACHE_DATA_FMT, (int*)(&i), valstr);
timeout = i;
return;
}
- iface = (struct interface *)malloc(sizeof(*iface));
+ iface = malloc_p(struct interface);
if (!iface) return;
ZERO_STRUCTPN(iface);
return NT_STATUS_OBJECT_NAME_COLLISION;
}
- entry = malloc(sizeof(struct reg_init_function_entry));
+ entry = malloc_p(struct reg_init_function_entry);
entry->functions = functions;
DLIST_ADD(backends, entry);
TALLOC_CTX *mem_ctx;
struct registry_context *ret;
mem_ctx = talloc_init("registry handle");
- ret = talloc(mem_ctx, sizeof(struct registry_context));
+ ret = talloc_p(mem_ctx, struct registry_context);
ret->mem_ctx = mem_ctx;
ZERO_STRUCTP(ret);
*_ret = ret;
{
SEC_DESC *tmp;
- tmp = (SEC_DESC *)malloc(sizeof(SEC_DESC));
+ tmp = malloc_p(SEC_DESC);
tmp->revision = 1;
tmp->type = SEC_DESC_SELF_RELATIVE | SEC_DESC_DACL_PRESENT;
REGF *regf = h->backend_data;
KEY_SEC_DESC *tsec = NULL;
- tsec = (KEY_SEC_DESC *)malloc(sizeof(KEY_SEC_DESC));
+ tsec = malloc_p(KEY_SEC_DESC);
tsec->ref_cnt = 1;
tsec->state = SEC_DESC_NBK;
{
REGF *regf = h->backend_data;
if (!regf->sk_map) { /* Allocate a block of 10 */
- regf->sk_map = (SK_MAP *)malloc(sizeof(SK_MAP) * 10);
+ regf->sk_map = malloc_array_p(SK_MAP, 10);
regf->sk_map_size = 10;
regf->sk_count = 1;
(regf->sk_map)[0].sk_off = sk_off;
return tmp;
}
else { /* Allocate a new one */
- tmp = (KEY_SEC_DESC *)malloc(sizeof(KEY_SEC_DESC));
+ tmp = malloc_p(KEY_SEC_DESC);
memset(tmp, 0, sizeof(KEY_SEC_DESC)); /* Neatly sets offset to 0 */
tmp->state = SEC_DESC_RES;
if (!alloc_sk_map_entry(h, tmp, sk_off)) {
{
SEC_DESC *tmp = NULL;
- tmp = (SEC_DESC *)malloc(sizeof(SEC_DESC));
+ tmp = malloc_p(SEC_DESC);
tmp->revision = SVAL(&sec_desc->revision,0);
tmp->type = SVAL(&sec_desc->type,0);
*/
if (!tmp) {
- tmp = (KEY_SEC_DESC *)malloc(sizeof(KEY_SEC_DESC));
+ tmp = malloc_p(KEY_SEC_DESC);
memset(tmp, 0, sizeof(KEY_SEC_DESC));
/*
size = (size + (REGF_HDR_BLKSIZ - 1)) & ~(REGF_HDR_BLKSIZ - 1);
- tmp = (HBIN_BLK *)malloc(sizeof(HBIN_BLK));
+ tmp = malloc_p(HBIN_BLK);
memset(tmp, 0, sizeof(HBIN_BLK));
tmp->data = malloc(size);
REGF *regf = h->backend_data;
HBIN_BLK *tmp = NULL;
- tmp = (HBIN_BLK *)malloc(sizeof(HBIN_BLK));
+ tmp = malloc_p(HBIN_BLK);
memset(tmp, 0, sizeof(HBIN_BLK));
tmp->type = REG_OUTBLK_HDR;
char **matches;
int i, len, samelen=0, count=1;
- matches = (char **)malloc(sizeof(matches[0])*MAX_COMPLETIONS);
+ matches = malloc_array_p(char *, MAX_COMPLETIONS);
if (!matches) return NULL;
matches[0] = NULL;
TALLOC_CTX *mem_ctx;
/* Complete argument */
- matches = (char **)malloc(sizeof(matches[0])*MAX_COMPLETIONS);
+ matches = malloc_array_p(char *, MAX_COMPLETIONS);
if (!matches) return NULL;
matches[0] = NULL;
struct group *g;
char *gr;
- if((grouplst = (gid_t *)malloc(sizeof(gid_t) * max_gr)) == NULL) {
+ if((grouplst = malloc_array_p(gid_t, max_gr)) == NULL) {
DEBUG(0,("initgroups: malloc fail !\n"));
return -1;
}
if (s[0] == '\n') i++;
}
- ret = (char **)malloc(sizeof(ret[0])*(i+2));
+ ret = malloc_array_p(char *, i+2);
if (!ret) {
SAFE_FREE(p);
return NULL;
struct sys_grent *gent;
struct group *grp;
- gent = (struct sys_grent *) malloc(sizeof(struct sys_grent));
+ gent = malloc_p(struct sys_grent);
if (gent == NULL) {
DEBUG (0, ("Out of memory in getgrent_list!\n"));
return NULL;
;
/* alloc space for gr_mem string pointers */
- if ((gent->gr_mem = (char **) malloc((num+1) * sizeof(char *))) == NULL)
+ if ((gent->gr_mem = malloc_array_p(char *, num+1)) == NULL)
goto err;
memset(gent->gr_mem, '\0', (num+1) * sizeof(char *));
grp = getgrent();
if (grp) {
- gent->next = (struct sys_grent *) malloc(sizeof(struct sys_grent));
+ gent->next = malloc_p(struct sys_grent);
if (gent->next == NULL)
goto err;
gent = gent->next;
struct sys_pwent *pent;
struct passwd *pwd;
- pent = (struct sys_pwent *) malloc(sizeof(struct sys_pwent));
+ pent = malloc_p(struct sys_pwent);
if (pent == NULL) {
DEBUG (0, ("Out of memory in getpwent_list!\n"));
return NULL;
pwd = getpwent();
if (pwd) {
- pent->next = (struct sys_pwent *) malloc(sizeof(struct sys_pwent));
+ pent->next = malloc_p(struct sys_pwent);
if (pent->next == NULL)
goto err;
pent = pent->next;
;
for (i = 0; i < num_users; i++) {
- struct sys_userlist *entry = (struct sys_userlist *)malloc(sizeof(*entry));
+ struct sys_userlist *entry = malloc_p(struct sys_userlist);
if (entry == NULL) {
free_userlist(list_head);
return NULL;
if (lp_wins_support()) {
/* give the caller something to chew on. This makes
the rest of the logic simpler (ie. less special cases) */
- ret = (char **)malloc(sizeof(char *)*2);
+ ret = malloc_array_p(char *, 2);
if (!ret) return NULL;
ret[0] = strdup("*");
ret[1] = NULL;
{
XFILE *ret;
- ret = (XFILE *)malloc(sizeof(XFILE));
+ ret = malloc_p(XFILE);
if (!ret) return NULL;
memset(ret, 0, sizeof(XFILE));
if (!in_val) return NULL;
- value = talloc_zero(ctx, sizeof(struct berval));
+ value = talloc_zero_p(ctx, struct berval);
if (value == NULL)
return NULL;
if (in_val->bv_len == 0) return value;
if (!in_vals) return NULL;
for (i=0; in_vals[i]; i++); /* count values */
- values = (char ** ) talloc_zero(ctx, (i+1)*sizeof(char *));
+ values = talloc_zero_array_p(ctx, char *, i+1);
if (!values) return NULL;
for (i=0; in_vals[i]; i++) {
if (!in_vals) return NULL;
for (i=0; in_vals[i]; i++); /* count values */
- values = (char **) talloc_zero(ctx, (i+1)*sizeof(char *));
+ values = talloc_zero_array_p(ctx, char *, i+1);
if (!values) return NULL;
for (i=0; in_vals[i]; i++) {
#define ADS_MODLIST_ALLOC_SIZE 10
LDAPMod **mods;
- if ((mods = (LDAPMod **) talloc_zero(ctx, sizeof(LDAPMod *) *
- (ADS_MODLIST_ALLOC_SIZE + 1))))
+ if ((mods = talloc_zero_array_p(ctx, LDAPMod *, ADS_MODLIST_ALLOC_SIZE + 1))) {
/* -1 is safety to make sure we don't go over the end.
need to reset it to NULL before doing ldap modify */
mods[ADS_MODLIST_ALLOC_SIZE] = (LDAPMod *) -1;
+ }
return mods;
}
*mods = modlist;
}
- if (!(modlist[curmod] = talloc_zero(ctx, sizeof(LDAPMod))))
+ if (!(modlist[curmod] = talloc_zero_p(ctx, LDAPMod)))
return ADS_ERROR(LDAP_NO_MEMORY);
modlist[curmod]->mod_type = talloc_strdup(ctx, name);
if (mod_op & LDAP_MOD_BVALUES) {
return -1;
}
- sa = malloc( sizeof(struct sockaddr) * num_kdcs );
+ sa = malloc_array_p(struct sockaddr, num_kdcs);
if (!sa) {
DEBUG(0, ("krb5_locate_kdc: malloc failed\n"));
krb5_krbhst_free(ctx, hnd);
return -1;
}
- *addr_pp = malloc(sizeof(struct sockaddr) * num_kdcs);
+ *addr_pp = malloc_array_p(struct sockaddr, num_kdcs);
memset(*addr_pp, '\0', sizeof(struct sockaddr) * num_kdcs );
for (i = 0; i < num_kdcs && (rc = krb5_krbhst_next(ctx, hnd, &hinfo) == 0); i++) {
asn1_start_tag(asn1, ASN1_CONTEXT(0));
asn1_start_tag(asn1, ASN1_SEQUENCE(0));
- token->mechTypes = talloc(NULL, sizeof(*token->mechTypes));
+ token->mechTypes = talloc_p(NULL, const char *);
for (i = 0; !asn1->has_error &&
0 < asn1_tag_remaining(asn1); i++) {
token->mechTypes =
if (val && strchr("()&|", *val))
return NULL;
- ret = talloc(mem_ctx, sizeof(*ret));
+ ret = talloc_p(mem_ctx, struct ldap_parse_tree);
if (!ret) {
errno = ENOMEM;
return NULL;
{
struct ldap_parse_tree *ret, *next;
- ret = talloc(mem_ctx, sizeof(*ret));
-
+ ret = talloc_p(mem_ctx, struct ldap_parse_tree);
if (!ret) {
errno = ENOMEM;
return NULL;
ret->operation = op;
ret->u.list.num_elements = 1;
- ret->u.list.elements = talloc(mem_ctx, sizeof(*ret->u.list.elements));
+ ret->u.list.elements = talloc_p(mem_ctx, struct ldap_parse_tree *);
if (!ret->u.list.elements) {
errno = ENOMEM;
return NULL;
{
struct ldap_parse_tree *ret;
- ret = talloc(mem_ctx, sizeof(*ret));
+ ret = talloc_p(mem_ctx, struct ldap_parse_tree);
if (!ret) {
errno = ENOMEM;
return NULL;
struct res_rec **recs, int count)
{
int i;
- *recs = (struct res_rec *)malloc(sizeof(**recs)*count);
+ *recs = malloc_array_p(struct res_rec, count);
if (!*recs) return(False);
memset((char *)*recs,'\0',sizeof(**recs)*count);
struct nmb_packet *copy_nmb;
struct packet_struct *pkt_copy;
- if(( pkt_copy = (struct packet_struct *)malloc(sizeof(*packet))) == NULL)
+ if(( pkt_copy = malloc_p(struct packet_struct)) == NULL)
{
DEBUG(0,("copy_nmb_packet: malloc fail.\n"));
return NULL;
blob2.data = blob->data + ofs;
blob2.length = ea_size - ofs;
- *eas = talloc_realloc(mem_ctx, *eas, sizeof(**eas) * (n+1));
+ *eas = talloc_realloc_p(mem_ctx, *eas, struct ea_struct, n+1);
if (! *eas) return NT_STATUS_NO_MEMORY;
len = ea_pull_struct(&blob2, mem_ctx, &(*eas)[n]);
blob2.data = blob->data + ofs + 4;
blob2.length = blob->length - (ofs + 4);
- *eas = talloc_realloc(mem_ctx, *eas, sizeof(**eas) * (n+1));
+ *eas = talloc_realloc_p(mem_ctx, *eas, struct ea_struct, n+1);
if (! *eas) return NT_STATUS_NO_MEMORY;
len = ea_pull_struct(&blob2, mem_ctx, &(*eas)[n]);
}
/* allocate array */
- parms->out.changes = talloc(mem_ctx, sizeof(parms->out.changes[0]) *
- parms->out.num_changes);
+ parms->out.changes = talloc_array_p(mem_ctx, struct notify_changes, parms->out.num_changes);
if (!parms->out.changes) {
return NT_STATUS_NO_MEMORY;
}
pkt.u.bind.max_recv_frag = 5840;
pkt.u.bind.assoc_group_id = 0;
pkt.u.bind.num_contexts = 1;
- pkt.u.bind.ctx_list = talloc(mem_ctx, sizeof(pkt.u.bind.ctx_list[0]));
+ pkt.u.bind.ctx_list = talloc_p(mem_ctx, struct dcerpc_ctx_list);
if (!pkt.u.bind.ctx_list) {
return NT_STATUS_NO_MEMORY;
}
pkt.u.alter.max_recv_frag = 0x2000;
pkt.u.alter.assoc_group_id = 0;
pkt.u.alter.num_contexts = 1;
- pkt.u.alter.ctx_list = talloc(mem_ctx, sizeof(pkt.u.alter.ctx_list[0]));
+ pkt.u.alter.ctx_list = talloc_p(mem_ctx, struct dcerpc_ctx_list);
if (!pkt.u.alter.ctx_list) {
return NT_STATUS_NO_MEMORY;
}
return NT_STATUS_INVALID_PARAMETER;
}
- private = talloc(req->tcon, sizeof(struct cvfs_private));
+ private = talloc_p(req->tcon, struct cvfs_private);
if (!private) {
return NT_STATUS_NO_MEMORY;
}
{
int i;
SAFE_FREE(pservice->copymap);
- pservice->copymap = (BOOL *)malloc(sizeof(BOOL) * NUMPARAMETERS);
+ pservice->copymap = malloc_array_p(BOOL, NUMPARAMETERS);
if (!pservice->copymap)
DEBUG(0,
("Couldn't allocate copymap!! (size %d)\n",
goto done;
}
- r->out.buffer = (DATA_BLOB *)talloc(mem_ctx, sizeof(DATA_BLOB));
+ r->out.buffer = talloc_p(mem_ctx, DATA_BLOB);
if (!r->out.buffer) {
result = WERR_NOMEM;
}
/* parse out the setup words */
- trans.in.setup = talloc(req, trans.in.setup_count * sizeof(uint16_t));
+ trans.in.setup = talloc_array_p(req, uint16_t, trans.in.setup_count);
if (!trans.in.setup) {
req_reply_error(req, NT_STATUS_NO_MEMORY);
return;
}
/* parse out the setup words */
- trans.in.setup = talloc(req, trans.in.setup_count * sizeof(uint16_t));
+ trans.in.setup = talloc_array_p(req, uint16_t, trans.in.setup_count);
if (trans.in.setup_count && !trans.in.setup) {
req_reply_error(req, NT_STATUS_NO_MEMORY);
return;
status = smb_raw_trans2(cli->tree, mem_ctx, t2);
if (!NT_STATUS_IS_OK(status)) continue;
- t2b = talloc(mem_ctx, sizeof(*t2b));
+ t2b = talloc_p(mem_ctx, struct trans2_blobs);
t2b->level = level;
t2b->params = t2->out.params;
t2b->data = t2->out.data;
if (!NT_STATUS_IS_OK(status) &&
!NT_STATUS_EQUAL(status, NT_STATUS_INVALID_PARAMETER)) continue;
- t2b = talloc(mem_ctx, sizeof(*t2b));
+ t2b = talloc_p(mem_ctx, struct trans2_blobs);
t2b->level = level;
t2b->params = t2->out.params;
t2b->data = t2->out.data;
if (!NT_STATUS_IS_OK(ret)) return;
- f = malloc(sizeof(struct ftable));
+ f = malloc_p(struct ftable);
f->handle = handle;
f->fd = io.ntcreatex.out.fnum;
/* with EAs */
md.t2mkdir.in.num_eas = 1;
- md.t2mkdir.in.eas = talloc(mem_ctx, sizeof(md.t2mkdir.in.eas[0]));
+ md.t2mkdir.in.eas = talloc_p(mem_ctx, struct ea_struct);
md.t2mkdir.in.eas[0].flags = 0;
md.t2mkdir.in.eas[0].name.s = "EAONE";
md.t2mkdir.in.eas[0].value = data_blob_talloc(mem_ctx, "1", 1);
io.t2open.in.size = 0;
io.t2open.in.timeout = 0;
- io.t2open.in.eas = talloc(mem_ctx, sizeof(io.t2open.in.eas[0]));
+ io.t2open.in.eas = talloc_p(mem_ctx, struct ea_struct);
io.t2open.in.num_eas = 1;
io.t2open.in.eas[0].flags = 0;
io.t2open.in.eas[0].name.s = "EAONE";
fgets(line, sizeof(line), stdin);
sd->group_sid = dom_sid_parse_talloc(mem_ctx, line);
- acl = talloc(mem_ctx, sizeof(struct security_acl));
+ acl = talloc_p(mem_ctx, struct security_acl);
acl->revision = 2;
acl->size = 0;