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 >