diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | gmid.h | 5 | ||||
-rw-r--r-- | regress/Makefile | 1 | ||||
-rwxr-xr-x | regress/max-length-reply | 3 | ||||
-rwxr-xr-x | regress/runtime | 3 |
5 files changed, 15 insertions, 1 deletions
@@ -1,3 +1,7 @@ +2021-03-27 Omar Polo <op@omarpolo.com> + + * gmid.h (struct client): correctly handle CGI scripts that replies with the maximum header length allowed + 2021-03-20 Omar Polo <op@omarpolo.com> * 1.6 tagged @@ -180,8 +180,11 @@ struct client { const char *meta; int fd, pfd; DIR *dir; - char sbuf[1024]; + + /* big enough to store STATUS + SPACE + META + CRLF */ + char sbuf[1029]; ssize_t len, off; + struct sockaddr_storage addr; struct vhost *host; /* host they're talking to */ }; diff --git a/regress/Makefile b/regress/Makefile index 317a460..b485d64 100644 --- a/regress/Makefile +++ b/regress/Makefile @@ -68,6 +68,7 @@ testdata: fill-file printf "# hello world\n" > testdata/index.gmi ./sha testdata/index.gmi testdata/index.gmi.sha cp hello slow err invalid serve-bigfile env testdata/ + cp max-length-reply testdata mkdir testdata/dir cp hello testdata/dir cp testdata/index.gmi testdata/dir/foo.gmi diff --git a/regress/max-length-reply b/regress/max-length-reply new file mode 100755 index 0000000..0311158 --- /dev/null +++ b/regress/max-length-reply @@ -0,0 +1,3 @@ +#!/bin/sh + +printf '20 iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii\r\n' diff --git a/regress/runtime b/regress/runtime index 80bf32c..d24ac08 100755 --- a/regress/runtime +++ b/regress/runtime @@ -183,6 +183,9 @@ echo OK GET /err with cgi eq "$(raw /invalid | wc -c | xargs)" 2048 "Unexpected body for /invalid" echo OK GET /invalid with cgi +eq "$(raw /max-length-reply | wc -c | xargs)" 1029 "Unexpected header for /max-length-reply" +echo OK GET /max-length-reply with cgi + # try a big file eq "$(head /serve-bigfile)" "20 application/octet-stream" "Unexpected head for /serve-bigfile" get /bigfile > bigfile |