Hi Ilya,
On Wed, Dec 25, 2024 at 10:10:12PM +0100, Ilia Shipitsin wrote:
> This defect was found by the coccinelle script "unchecked-strdup.cocci".
> It can be backported to all supported branches.
> ---
> src/compression.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/src/compression.c b/src/compression.c
> index a4464e09b..edf5553c1 100644
> --- a/src/compression.c
> +++ b/src/compression.c
> @@ -119,6 +119,8 @@ int comp_append_type(struct comp_type **types, const char
> *type)
> return 1;
> comp_type->name_len = strlen(type);
> comp_type->name = strdup(type);
> + if (!comp_type->name)
> + return 1;
> comp_type->next = *types;
> *types = comp_type;
> return 0;
For this one we must free comp_type before returning, since it was
allocated earlier. As in the previous series it could also be done
using jumps:
comp_type = calloc();
if (!comp_type)
goto fail;
...
comp_type->name = strdup(type);
if (!comp_type->name)
goto fail_free_comp_type;
...
return 0;
fail_free_comp_type:
free(comp_type);
fail:
return 1;
The function is short so either solutions are fine to me, that's as
you prefer.
Thanks!
Willy