ok, I'll try to handle such leaks better

чт, 26 дек. 2024 г. в 11:06, Willy Tarreau <w...@1wt.eu>:

> 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
>

Reply via email to