diff options
-rw-r--r-- | plugins/check_http.c | 14 |
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) |