summaryrefslogtreecommitdiff
path: root/render
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2009-12-26 16:47:30 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2009-12-26 16:47:30 +0000
commit9c160fe32d6b5894670299aef89b79206feed322 (patch)
tree0ef3e2e424e3be1b99c36656ad47153f11f6a430 /render
parent914eedc11d3273f5347e6abad40a0379b0566971 (diff)
downloadnetsurf-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.c17
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;