mirror of
https://github.com/moparisthebest/wget
synced 2024-07-03 16:38:41 -04:00
[svn] Check for wildcards in unescaped URL path.
This commit is contained in:
parent
79c4490734
commit
ee18acce0a
@ -1,3 +1,12 @@
|
||||
2005-05-08 Hrvoje Niksic <hniksic@xemacs.org>
|
||||
|
||||
* http.c (http_loop): Check for wildcards in the URL path
|
||||
component, not in the whole URL.
|
||||
|
||||
* ftp.c (ftp_loop): Check for wildcards in URL path before
|
||||
unescaping, so the users can escape globbing metacharacters with %
|
||||
escapes.
|
||||
|
||||
2005-05-08 Hrvoje Niksic <hniksic@xemacs.org>
|
||||
|
||||
* init.c (run_command): Correctly interpret the return value of
|
||||
|
18
src/ftp.c
18
src/ftp.c
@ -1850,15 +1850,25 @@ ftp_loop (struct url *u, int *dt, struct url *proxy)
|
||||
}
|
||||
else
|
||||
{
|
||||
int wild = has_wildcards_p (u->file);
|
||||
if ((opt.ftp_glob && wild) || opt.recursive || opt.timestamping)
|
||||
int ispattern = 0;
|
||||
if (opt.ftp_glob)
|
||||
{
|
||||
/* Treat the URL as a pattern if the file name part of the
|
||||
URL path contains wildcards. (Don't check for u->file
|
||||
because it is unescaped and therefore doesn't leave users
|
||||
the option to escape literal '*' as %2A.) */
|
||||
char *file_part = strrchr (u->path, '/');
|
||||
if (!file_part)
|
||||
file_part = u->path;
|
||||
ispattern = has_wildcards_p (file_part);
|
||||
}
|
||||
if (ispattern || opt.recursive || opt.timestamping)
|
||||
{
|
||||
/* ftp_retrieve_glob is a catch-all function that gets called
|
||||
if we need globbing, time-stamping or recursion. Its
|
||||
third argument is just what we really need. */
|
||||
res = ftp_retrieve_glob (u, &con,
|
||||
(opt.ftp_glob && wild)
|
||||
? GLOB_GLOBALL : GLOB_GETONE);
|
||||
ispattern ? GLOB_GLOBALL : GLOB_GETONE);
|
||||
}
|
||||
else
|
||||
res = ftp_loop_internal (u, NULL, &con);
|
||||
|
@ -2004,10 +2004,8 @@ http_loop (struct url *u, char **newloc, char **local_file, const char *referer,
|
||||
|
||||
*newloc = NULL;
|
||||
|
||||
/* Warn on (likely bogus) wildcard usage in HTTP. Don't use
|
||||
has_wildcards_p because it would also warn on `?', and we know that
|
||||
shows up in CGI paths a *lot*. */
|
||||
if (strchr (u->url, '*'))
|
||||
/* Warn on (likely bogus) wildcard usage in HTTP. */
|
||||
if (has_wildcards_p (u->path))
|
||||
logputs (LOG_VERBOSE, _("Warning: wildcards not supported in HTTP.\n"));
|
||||
|
||||
xzero (hstat);
|
||||
|
Loading…
Reference in New Issue
Block a user