On Wed, Aug 17, 2011 at 03:05:55PM +0200, Lukas Fleischer wrote:
> On Wed, Aug 17, 2011 at 08:37:23AM -0400, Dave Reisner wrote:
> > On Wed, Aug 17, 2011 at 10:15:16AM +0200, Lukas Fleischer wrote:
> > > stat()'s behaviour is undefined if the first argument is NULL and might
> > > be prone to segfault. Add an additional check to skip the stat()
> > > invocation if no destfile is used.
> > > 
> > > Signed-off-by: Lukas Fleischer <archli...@cryptocrack.de>
> > > ---
> > >  lib/libalpm/dload.c |    2 +-
> > >  1 files changed, 1 insertions(+), 1 deletions(-)
> > > 
> > > diff --git a/lib/libalpm/dload.c b/lib/libalpm/dload.c
> > > index 5a63e48..731d807 100644
> > > --- a/lib/libalpm/dload.c
> > > +++ b/lib/libalpm/dload.c
> > > @@ -260,7 +260,7 @@ static int curl_download_internal(struct 
> > > dload_payload *payload,
> > >           curl_easy_setopt(handle->curl, CURLOPT_USERAGENT, useragent);
> > >   }
> > >  
> > > - if(!payload->allow_resume && !payload->force && stat(destfile, &st) == 
> > > 0) {
> > > + if(!payload->allow_resume && !payload->force && destfile && 
> > > stat(destfile, &st) == 0) {
> > >           /* start from scratch, but only download if our local is out of 
> > > date. */
> > >           curl_easy_setopt(handle->curl, CURLOPT_TIMECONDITION, 
> > > CURL_TIMECOND_IFMODSINCE);
> > >           curl_easy_setopt(handle->curl, CURLOPT_TIMEVALUE, 
> > > (long)st.st_mtime);
> > > -- 
> > > 1.7.6
> > > 
> > > 
> > 
> > We already check for destfile being NULL earlier, when we try to create it, 
> > line 210ish.
> 
> Yeah, we do not check that in the else branch though.
> 

And this is what I get for looking at this on the wrong branch. Yeah,
this makes sense.

Reply via email to