1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-26 18:50:30 +03:00

Add extra argument free_on_fail to realloc_array() in Samba 4, as used by Samba 3.

This commit is contained in:
Jelmer Vernooij 2008-10-18 14:12:56 +02:00
parent 3189d14152
commit fcce58cc61
3 changed files with 5 additions and 11 deletions

View File

@ -40,20 +40,12 @@
/**
* Allocate an array of elements of one data type. Does type-checking.
*/
#if _SAMBA_BUILD_ == 3
#define malloc_array_p(type, count) (type *)realloc_array(NULL, sizeof(type), count, false)
#else
#define malloc_array_p(type, count) (type *)realloc_array(NULL, sizeof(type), count)
#endif
/**
* Resize an array of elements of one data type. Does type-checking.
*/
#if _SAMBA_BUILD_ == 3
#define realloc_p(p, type, count) (type *)realloc_array(p, sizeof(type), count, false)
#else
#define realloc_p(p, type, count) (type *)realloc_array(p, sizeof(type), count)
#endif
/**
* zero a structure

View File

@ -569,11 +569,13 @@ _PUBLIC_ bool all_zero(const uint8_t *ptr, size_t size)
/**
realloc an array, checking for integer overflow in the array size
*/
_PUBLIC_ void *realloc_array(void *ptr, size_t el_size, unsigned count)
_PUBLIC_ void *realloc_array(void *ptr, size_t el_size, unsigned count, bool free_on_fail)
{
#define MAX_MALLOC_SIZE 0x7fffffff
if (count == 0 ||
count >= MAX_MALLOC_SIZE/el_size) {
if (free_on_fail)
SAFE_FREE(ptr);
return NULL;
}
if (!ptr) {
@ -588,7 +590,7 @@ _PUBLIC_ void *realloc_array(void *ptr, size_t el_size, unsigned count)
void *malloc_array(size_t el_size, unsigned int count)
{
return realloc_array(NULL, el_size, count);
return realloc_array(NULL, el_size, count, false);
}
_PUBLIC_ void *talloc_check_name_abort(const void *ptr, const char *name)

View File

@ -634,7 +634,7 @@ _PUBLIC_ bool all_zero(const uint8_t *ptr, size_t size);
/**
realloc an array, checking for integer overflow in the array size
*/
_PUBLIC_ void *realloc_array(void *ptr, size_t el_size, unsigned count);
_PUBLIC_ void *realloc_array(void *ptr, size_t el_size, unsigned count, bool free_on_fail);
/* The following definitions come from lib/util/fsusage.c */