From: Nick Porter Date: Fri, 25 Mar 2022 13:45:06 +0000 (+0000) Subject: talloc_array_length() doesn't handle array resized by talloc_realloc_fn() (#4428) X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9e270c1bc680f44646775b022ce2abe1bd9cc681;p=thirdparty%2Ffreeradius-server.git talloc_array_length() doesn't handle array resized by talloc_realloc_fn() (#4428) --- diff --git a/src/lib/util/talloc.c b/src/lib/util/talloc.c index 947a97d1f80..cc4d9335af6 100644 --- a/src/lib/util/talloc.c +++ b/src/lib/util/talloc.c @@ -717,13 +717,15 @@ void **talloc_array_null_terminate(void **array) size_t len; TALLOC_CTX *ctx; void **new; + size_t size; if (!array) return NULL; len = talloc_array_length(array); ctx = talloc_parent(array); + size = talloc_get_size(array) / talloc_array_length(array); - new = talloc_realloc_fn(ctx, array, len + 1); + new = _talloc_realloc_array(ctx, array, size, len + 1, talloc_get_name(array)); if (!new) return NULL; new[len] = NULL; @@ -745,17 +747,19 @@ void **talloc_array_null_strip(void **array) size_t len; TALLOC_CTX *ctx; void **new; + size_t size; if (!array) return NULL; len = talloc_array_length(array); ctx = talloc_parent(array); + size = talloc_get_size(array) / talloc_array_length(array); if ((len - 1) == 0) return NULL; if (array[len - 1] != NULL) return NULL; - new = talloc_realloc_fn(ctx, array, len - 1); + new = _talloc_realloc_array(ctx, array, size, len - 1, talloc_get_name(array)); if (!new) return NULL; return new;