On Thu, Dec 03, 2020 at 03:48:00PM +0100, Christian Weisgerber wrote:
> Claudio Jeker:
> 
> > In tal_parse() use strndup() to create the tal descr instead of the more
> > complex malloc, memcpy version. Result is the same but the strndup version
> > is a lot nicer.
> 
> Yes, but...
> 
> > --- tal.c   11 Oct 2020 12:39:25 -0000      1.22
> > +++ tal.c   3 Dec 2020 12:00:25 -0000
> > @@ -198,10 +198,8 @@ tal_parse(const char *fn, char *buf)
> >     dlen = strlen(d);
> >     if (strcasecmp(d + dlen - 4, ".tal") == 0)
> >             dlen -= 4;
> 
> That looks like a potential out-of-bounds access.  Are we guaranteed
> that dlen >= 4 here?

Indeed, that strcasecmp should only be done if dlen > 4. I'll change that.
 
> > -   if ((p->descr = malloc(dlen + 1)) == NULL)
> > +   if ((p->descr = strndup(d, dlen)) == NULL)
> >             err(1, NULL);
> > -   memcpy(p->descr, d, dlen);
> > -   p->descr[dlen] = '\0';
> >  
> >     return p;
> >  }
> 
> ok

-- 
:wq Claudio

Reply via email to