Hi Ilya,

On Thu, Jan 02, 2025 at 10:02:01PM +0100, ???? ??????? wrote:
> ??, 2 ???. 2025 ?. ? 21:46, Miroslav Zagorac <z...@fly-etf.net>:
> 
> > On 02. 01. 2025. 21:40, ???? ??????? wrote:
> > > Honestly, I think those elements must be deallocated on program exit,
> > > not only if something failed during allocation.
> > >
> > > but I did not check that
> > >
> >
> > That is correct.  However, the calloc() result is not checked before
> > strdup()
> > either, so the patch is not good.
> >
> 
> I did not pretend to add "calloc" check for this patch.
> we have dedicated *dev/coccinelle/unchecked-calloc.cocci *script which
> allows us to detect unchecked "calloc". no worry, it won't be forgotten

In general, when reworking some functions' memory allocation and checks,
it's better to fix it at once when you find that multiple checks are
missing, rather than attempting incremental fixes that remain partially
incorrect.

One reason is that very often, dealing with allocations unrolling requires
an exit label where allocations are unrolled in reverse order, and doing
them one at a time tends to stay away from that approach. Or sometimes
you'll figure that fixing certain unchecked allocations require to
completely change the approach that was used for previous fixes.

Thus if you think you've figured how to completely fix that function, do
not hesitate, please just fix it all at once, indicating in the commit
message what you fixed. If you think you can fix it incrementatlly without
having to change your fix later, then it's fine to do it that way as well
of course.

> > >>> +             if (name->name == NULL) {
> > >>> +                     memprintf(err,"Out of memory.");
                                          ^^^^
BTW, beware of the missing space here.

> > >>> +                     goto fail_free_name;
> > >>> +             }

Cheers,
Willy


Reply via email to