diff options
Diffstat (limited to 'source4/lib/talloc.c')
-rw-r--r-- | source4/lib/talloc.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/source4/lib/talloc.c b/source4/lib/talloc.c index 5c1f3e7dcd..12b21d21e6 100644 --- a/source4/lib/talloc.c +++ b/source4/lib/talloc.c @@ -776,9 +776,9 @@ void talloc_enable_leak_report_full(void) /* talloc and zero memory. */ -void *talloc_zero(const void *ctx, size_t size) +void *_talloc_zero(const void *ctx, size_t size, const char *name) { - void *p = talloc(ctx, size); + void *p = talloc_named_const(ctx, size, name); if (p) { memset(p, '\0', size); @@ -939,6 +939,17 @@ void *talloc_array(const void *ctx, size_t el_size, unsigned count, const char * return talloc_named_const(ctx, el_size * count, name); } +/* + alloc an zero array, checking for integer overflow in the array size +*/ +void *talloc_zero_array(const void *ctx, size_t el_size, unsigned count, const char *name) +{ + if (count >= MAX_TALLOC_SIZE/el_size) { + return NULL; + } + return _talloc_zero(ctx, el_size * count, name); +} + /* realloc an array, checking for integer overflow in the array size |