diff options
author | John Mark Bell <jmb@netsurf-browser.org> | 2009-12-26 16:47:30 +0000 |
---|---|---|
committer | John Mark Bell <jmb@netsurf-browser.org> | 2009-12-26 16:47:30 +0000 |
commit | 9c160fe32d6b5894670299aef89b79206feed322 (patch) | |
tree | 0ef3e2e424e3be1b99c36656ad47153f11f6a430 /render | |
parent | 914eedc11d3273f5347e6abad40a0379b0566971 (diff) | |
download | netsurf-9c160fe32d6b5894670299aef89b79206feed322.tar.gz netsurf-9c160fe32d6b5894670299aef89b79206feed322.tar.bz2 |
Only attempt to fall back to /favicon.ico if the document's base URI points to
an http(s) location.
svn path=/trunk/netsurf/; revision=9760
Diffstat (limited to 'render')
-rw-r--r-- | render/favicon.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/render/favicon.c b/render/favicon.c index cc75ca0cb..3160a0ff2 100644 --- a/render/favicon.c +++ b/render/favicon.c @@ -103,6 +103,23 @@ char *favicon_get_icon_ref(struct content *c, xmlNode *html) } } if (url2 == NULL) { + char *scheme; + + /* There was no icon link defined in the HTML source data. + * If the HTML document's base URL uses either the HTTP or + * HTTPS schemes, then try using "<scheme>://host/favicon.ico" + */ + if (url_scheme(c->data.html.base_url, &scheme) != URL_FUNC_OK) + return NULL; + + if (strcasecmp(scheme, "http") != 0 && + strcasecmp(scheme, "https") != 0) { + free(scheme); + return NULL; + } + + free(scheme); + if (url_join("/favicon.ico", c->data.html.base_url, &url2) != URL_FUNC_OK) return NULL; |