aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/check_http.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/plugins/check_http.c b/plugins/check_http.c
index f2f7a18a..6773e65b 100644
--- a/plugins/check_http.c
+++ b/plugins/check_http.c
@@ -1099,7 +1099,19 @@ redir (char *pos, char *status_line)
}
pos += i;
- pos += strspn (pos, " \t\r\n");
+ pos += strspn (pos, " \t");
+
+ /*
+ * RFC 2616 (4.2): ``Header fields can be extended over multiple lines by
+ * preceding each extra line with at least one SP or HT.''
+ */
+ for (; (i = strspn (pos, "\r\n")); pos += i) {
+ pos += i;
+ if (!(i = strspn (pos, " \t"))) {
+ die (STATE_UNKNOWN, _("HTTP UNKNOWN - Empty redirect location%s\n"),
+ display_html ? "</A>" : "");
+ }
+ }
url = realloc (url, strcspn (pos, "\r\n") + 1);
if (url == NULL)