bug-wget
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bug-wget] [PATCH 09/25] Enforce Metalink file name verification, st


From: Matthew White
Subject: Re: [Bug-wget] [PATCH 09/25] Enforce Metalink file name verification, strip directory if necessary
Date: Tue, 13 Sep 2016 05:44:12 +0200

On Mon, 12 Sep 2016 20:18:30 +0300
Eli Zaretskii <address@hidden> wrote:

> > From: Tim Ruehsen <address@hidden>
> > Date: Mon, 12 Sep 2016 13:00:32 +0200
> > 
> > > +  char *basename = name;
> > > +
> > > +  while ((name = strstr (basename, "/")))
> > > +    basename = name + 1;
> > 
> > Could you use strrchr() ? something like
> > 
> > char *basename = strrchr (name, '/');
> > 
> > if (basename)
> >   basename += 1;
> > else
> >   basename = name;
> 
> I think we want to use ISSEP, no?  Otherwise Windows file names with
> backslashes will misfire.
> 

Thanks Eli. A possible implementation if ISSEP is shown below.

#if defined(WINDOWS) || defined(MSDOS)
# define ISSEP(c) ((c) == '/' || (c) == '\\')
#else
# define ISSEP(c) ((c) == '/')
#endif

char *
get_metalink_basename (char *name)
{
  char *basename;

  if (!name)
    return NULL;

  basename = name + strlen (name);

  while (basename > name && !ISSEP (*basename))
    --basename;

  if (ISSEP (*basename))
    ++basename;

  return metalink_check_safe_path (basename) ? basename : NULL;
}

Regards,
Matthew

-- 
Matthew White <address@hidden>

Attachment: pgpJgIqr_ECHm.pgp
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]