Re: [PATCH] nano-mallocr: Prevent NULL pointer de-reference in free_list

Corinna Vinschen <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <Y/x/[email protected]>
On Feb 23 07:59, Henrik Nilsson via Newlib wrote:
> On Fri, Feb 17, 2023 at 06:56:49AM +0100, Henrik Nilsson wrote:
> > The existing code checked if there was a chunk in free_list and
> > that the tail was not the next chunk.
> > 
> > The check if there is a chunk is not needed since it's already
> > known but the case of a single chunk in free_list needs to be
> > handled differently.
> > ---
> >  newlib/libc/stdlib/nano-mallocr.c | 19 ++++++++++++++-----
> >  1 file changed, 14 insertions(+), 5 deletions(-)
> > 
> > diff --git a/newlib/libc/stdlib/nano-mallocr.c b/newlib/libc/stdlib/nano-mallocr.c
> > index b2273ba60..a2b50facc 100644
> > --- a/newlib/libc/stdlib/nano-mallocr.c
> > +++ b/newlib/libc/stdlib/nano-mallocr.c
> > @@ -333,14 +333,23 @@ void * nano_malloc(RARG malloc_size_t s)
> >                 {
> >                     p->size += alloc_size;
> >  
> > -                   /* Remove chunk from free_list */
> > +                   /* Remove chunk from free_list. Since p != NULL there is
> > +                      at least one chunk */
> >                     r = free_list;
> > -                   while (r && p != r->next)
> > +                   if (r->next == NULL)
> >                     {
> > -                     r = r->next;
> > +                       /* There is only a single chunk, remove it */
> > +                       free_list = NULL;
> > +                   }
> > +                   else
> > +                   {
> > +                       /* Search for the chunk before the one to be removed */
> > +                       while (p != r->next)
> > +                       {
> > +                           r = r->next;
> > +                       }
> > +                       r->next = NULL;
> >                     }
> > -                   r->next = NULL;
> > -
> >                     r = p;
> >                 }
> >                 else
> > -- 
> > 2.34.1
> >
> Any comment on this patch?

Pushed.

Thanks,
Corinna
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.