From: Patrick Steinhardt Date: Mon, 30 Dec 2024 07:25:10 GMT Subject: Re: [PATCH v2 3/4] reftable: handle realloc error in parse_names() Message-ID: In-Reply-To: On Sat, Dec 28, 2024 at 10:48:50AM +0100, René Scharfe wrote: > Check the final reallocation for adding the terminating NULL and handle > it just like those in the loop. Simply use REFTABLE_ALLOC_GROW instead > of keeping the REFTABLE_REALLOC_ARRAY call and adding code to preserve > the original pointer value around it. > > Signed-off-by: René Scharfe > --- > reftable/basics.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/reftable/basics.c b/reftable/basics.c > index cd6b39dbe9..fe2b83ff83 100644 > --- a/reftable/basics.c > +++ b/reftable/basics.c > @@ -241,7 +241,8 @@ char **parse_names(char *buf, int size) > p = next + 1; > } > > - REFTABLE_REALLOC_ARRAY(names, names_len + 1); > + if (REFTABLE_ALLOC_GROW(names, names_len + 1, names_cap)) > + goto err; > names[names_len] = NULL; Okay. We may be overallocating in some cases now, but it's most likely that we can completely skip this allocation here because `names_cap` is big enough already. Patrick