summaryrefslogtreecommitdiff
path: root/render/html.c
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2008-12-30 15:46:06 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2008-12-30 15:46:06 +0000
commit7f099d6675473b38a3aeba5f969731ba38a0a876 (patch)
tree534c4a25bb7e6d7af83a087558839f83195118af /render/html.c
parent95039df607644c6b4836f5dda61213a77d65dfd5 (diff)
downloadnetsurf-7f099d6675473b38a3aeba5f969731ba38a0a876.tar.gz
netsurf-7f099d6675473b38a3aeba5f969731ba38a0a876.tar.bz2
More lenient refresh delay parsing
svn path=/trunk/netsurf/; revision=5948
Diffstat (limited to 'render/html.c')
-rw-r--r--render/html.c12
1 files 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++;