From 7f099d6675473b38a3aeba5f969731ba38a0a876 Mon Sep 17 00:00:00 2001 From: John Mark Bell Date: Tue, 30 Dec 2008 15:46:06 +0000 Subject: [PATCH] More lenient refresh delay parsing svn path=/trunk/netsurf/; revision=5948 --- render/html.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/render/html.c b/render/html.c index 804bdd7c1..cd02e21c3 100644 --- a/render/html.c +++ b/render/html.c @@ -517,7 +517,9 @@ bool html_meta_refresh(struct content *c, xmlNode *head) end = (char *) content + strlen((const char *) content); - /* content := *LWS 1*DIGIT *LWS [';' *LWS *1url *LWS] + /* content := *LWS intpart fracpart? *LWS [';' *LWS *1url *LWS] + * intpart := 1*DIGIT + * fracpart := 1*('.' | DIGIT) * url := "url" *LWS '=' *LWS (url-nq | url-sq | url-dq) * url-nq := *urlchar * url-sq := "'" *(urlchar | '"') "'" @@ -526,7 +528,7 @@ bool html_meta_refresh(struct content *c, xmlNode *head) * nonascii := [#x80-#xD7FF#xE000-#xFFFD#x10000-#x10FFFF] */ - /* *LWS 1*DIGIT */ + /* *LWS intpart */ msg_data.delay = (int)strtol((char *) content, &url, 10); /* a very small delay and self-referencing URL can cause a loop * that grinds machines to a halt. To prevent this we set a @@ -534,6 +536,12 @@ bool html_meta_refresh(struct content *c, xmlNode *head) if (msg_data.delay < 1) msg_data.delay = 1; + /* fracpart? (ignored, as delay is integer only) */ + while (url < end && (('0' <= *url && *url <= '9') || + *url == '.')) { + url++; + } + /* *LWS */ while (url < end && isspace(*url)) { url++;