mirror of
https://github.com/moparisthebest/wget
synced 2024-07-03 16:38:41 -04:00
Add NULL value check to fix #45289
* src/recur.c (retrieve_tree): Check return value of url_parse()
This commit is contained in:
parent
bd0ffcf8bc
commit
80303366ae
93
src/recur.c
93
src/recur.c
@ -298,52 +298,63 @@ retrieve_tree (struct url *start_url_parsed, struct iri *pi)
|
|||||||
char *redirected = NULL;
|
char *redirected = NULL;
|
||||||
struct url *url_parsed = url_parse (url, &url_err, i, true);
|
struct url *url_parsed = url_parse (url, &url_err, i, true);
|
||||||
|
|
||||||
status = retrieve_url (url_parsed, url, &file, &redirected, referer,
|
if (!url_parsed)
|
||||||
&dt, false, i, true);
|
|
||||||
|
|
||||||
if (html_allowed && file && status == RETROK
|
|
||||||
&& (dt & RETROKF) && (dt & TEXTHTML))
|
|
||||||
{
|
{
|
||||||
descend = true;
|
char *error = url_error (url, url_err);
|
||||||
is_css = false;
|
logprintf (LOG_NOTQUIET, "%s: %s.\n",url, error);
|
||||||
}
|
xfree (error);
|
||||||
|
inform_exit_status (URLERROR);
|
||||||
/* a little different, css_allowed can override content type
|
|
||||||
lots of web servers serve css with an incorrect content type
|
|
||||||
*/
|
|
||||||
if (file && status == RETROK
|
|
||||||
&& (dt & RETROKF) &&
|
|
||||||
((dt & TEXTCSS) || css_allowed))
|
|
||||||
{
|
|
||||||
descend = true;
|
|
||||||
is_css = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (redirected)
|
|
||||||
{
|
|
||||||
/* We have been redirected, possibly to another host, or
|
|
||||||
different path, or wherever. Check whether we really
|
|
||||||
want to follow it. */
|
|
||||||
if (descend)
|
|
||||||
{
|
|
||||||
if (!descend_redirect_p (redirected, url_parsed, depth,
|
|
||||||
start_url_parsed, blacklist, i))
|
|
||||||
descend = false;
|
|
||||||
else
|
|
||||||
/* Make sure that the old pre-redirect form gets
|
|
||||||
blacklisted. */
|
|
||||||
blacklist_add (blacklist, url);
|
|
||||||
}
|
|
||||||
|
|
||||||
xfree (url);
|
|
||||||
url = redirected;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
xfree (url);
|
|
||||||
url = xstrdup (url_parsed->url);
|
status = retrieve_url (url_parsed, url, &file, &redirected, referer,
|
||||||
|
&dt, false, i, true);
|
||||||
|
|
||||||
|
if (html_allowed && file && status == RETROK
|
||||||
|
&& (dt & RETROKF) && (dt & TEXTHTML))
|
||||||
|
{
|
||||||
|
descend = true;
|
||||||
|
is_css = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* a little different, css_allowed can override content type
|
||||||
|
lots of web servers serve css with an incorrect content type
|
||||||
|
*/
|
||||||
|
if (file && status == RETROK
|
||||||
|
&& (dt & RETROKF) &&
|
||||||
|
((dt & TEXTCSS) || css_allowed))
|
||||||
|
{
|
||||||
|
descend = true;
|
||||||
|
is_css = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (redirected)
|
||||||
|
{
|
||||||
|
/* We have been redirected, possibly to another host, or
|
||||||
|
different path, or wherever. Check whether we really
|
||||||
|
want to follow it. */
|
||||||
|
if (descend)
|
||||||
|
{
|
||||||
|
if (!descend_redirect_p (redirected, url_parsed, depth,
|
||||||
|
start_url_parsed, blacklist, i))
|
||||||
|
descend = false;
|
||||||
|
else
|
||||||
|
/* Make sure that the old pre-redirect form gets
|
||||||
|
blacklisted. */
|
||||||
|
blacklist_add (blacklist, url);
|
||||||
|
}
|
||||||
|
|
||||||
|
xfree (url);
|
||||||
|
url = redirected;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xfree (url);
|
||||||
|
url = xstrdup (url_parsed->url);
|
||||||
|
}
|
||||||
|
url_free (url_parsed);
|
||||||
}
|
}
|
||||||
url_free (url_parsed);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (opt.spider)
|
if (opt.spider)
|
||||||
|
Loading…
Reference in New Issue
Block a user