From 863d5c77c31ed01001c2671b90741e964f6f98db Mon Sep 17 00:00:00 2001 From: John Mark Bell Date: Sun, 11 Apr 2010 14:06:02 +0000 Subject: Forbid redirects to file:/// URLs svn path=/trunk/netsurf/; revision=10352 --- content/llcache.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'content') diff --git a/content/llcache.c b/content/llcache.c index b09f1bab6..aee22c585 100644 --- a/content/llcache.c +++ b/content/llcache.c @@ -1590,6 +1590,7 @@ nserror llcache_fetch_redirect(llcache_object *object, const char *target, llcache_object_user *user, *next; const llcache_post_data *post = object->fetch.post; char *url, *absurl; + char *scheme; url_func_result result; /* Extract HTTP response code from the fetch object */ long http_code = fetch_http_code(object->fetch.fetch); @@ -1640,7 +1641,20 @@ nserror llcache_fetch_redirect(llcache_object *object, const char *target, return NSERROR_NOMEM; } - /** \todo Ensure that redirects to file:/// don't happen? */ + /* Ensure that redirects to file:/// don't happen */ + result = url_scheme(url, &scheme); + if (result != URL_FUNC_OK) { + free(url); + return NSERROR_NOMEM; + } + + if (strcasecmp(scheme, "file") == 0) { + free(scheme); + free(url); + return NSERROR_OK; + } + + free(scheme); /* Bail out if we've no way of handling this URL */ if (fetch_can_fetch(url) == false) { -- cgit v1.2.3