1
0
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:
hniksic 2005-05-08 10:52:26 -07:00
parent 79c4490734
commit ee18acce0a
3 changed files with 25 additions and 8 deletions

View File

@ -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> 2005-05-08 Hrvoje Niksic <hniksic@xemacs.org>
* init.c (run_command): Correctly interpret the return value of * init.c (run_command): Correctly interpret the return value of

View File

@ -1850,15 +1850,25 @@ ftp_loop (struct url *u, int *dt, struct url *proxy)
} }
else else
{ {
int wild = has_wildcards_p (u->file); int ispattern = 0;
if ((opt.ftp_glob && wild) || opt.recursive || opt.timestamping) 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 /* ftp_retrieve_glob is a catch-all function that gets called
if we need globbing, time-stamping or recursion. Its if we need globbing, time-stamping or recursion. Its
third argument is just what we really need. */ third argument is just what we really need. */
res = ftp_retrieve_glob (u, &con, res = ftp_retrieve_glob (u, &con,
(opt.ftp_glob && wild) ispattern ? GLOB_GLOBALL : GLOB_GETONE);
? GLOB_GLOBALL : GLOB_GETONE);
} }
else else
res = ftp_loop_internal (u, NULL, &con); res = ftp_loop_internal (u, NULL, &con);

View File

@ -2004,10 +2004,8 @@ http_loop (struct url *u, char **newloc, char **local_file, const char *referer,
*newloc = NULL; *newloc = NULL;
/* Warn on (likely bogus) wildcard usage in HTTP. Don't use /* Warn on (likely bogus) wildcard usage in HTTP. */
has_wildcards_p because it would also warn on `?', and we know that if (has_wildcards_p (u->path))
shows up in CGI paths a *lot*. */
if (strchr (u->url, '*'))
logputs (LOG_VERBOSE, _("Warning: wildcards not supported in HTTP.\n")); logputs (LOG_VERBOSE, _("Warning: wildcards not supported in HTTP.\n"));
xzero (hstat); xzero (hstat);