Pull up following revision(s) (requested by mrg in ticket #1357):

libexec/httpd/CHANGES: revision 1.25
	libexec/httpd/bozohttpd.8: revisions 1.63-1.65
	libexec/httpd/bozohttpd.c: revisions 1.85, 1.86
	libexec/httpd/bozohttpd.h: revision 1.47
	libexec/httpd/cgi-bozo.c: revisions 1.36, 1.37
	libexec/httpd/libbozohttpd/libbozohttpd.3: revision 1.4
	libexec/httpd/testsuite/Makefile: revision 1.7
	libexec/httpd/testsuite/html_cmp: revision 1.5
	libexec/httpd/testsuite/test-bigfile: revision 1.4
	libexec/httpd/testsuite/test-simple: revisions 1.3, 1.4
	libexec/httpd/testsuite/t11.in: revision 1.1
	libexec/httpd/testsuite/t11.out: revision 1.1
	libexec/httpd/testsuite/cgi-bin/empty: revision 1.1
Update bozohttpd to 20170201:
- fix an infinite loop in cgi processing
- fixes and clean up for the testsuite
- no longer sends encoding header for compressed formats
This commit is contained in:
snj 2017-02-12 21:59:44 +00:00
parent 4e1b458c54
commit 532bf0e8ea
13 changed files with 89 additions and 46 deletions

View File

@ -1,7 +1,12 @@
$NetBSD: CHANGES,v 1.19.2.1.2.2 2016/12/23 07:47:40 snj Exp $
$NetBSD: CHANGES,v 1.19.2.1.2.3 2017/02/12 21:59:44 snj Exp $
changes in bozohttpd 20170201:
o fix an infinite loop in cgi processing
o fixes and clean up for the testsuite
o no longer sends encoding header for compressed formats
changes in bozohttpd 20160517:
o add a bozo_get_version() function which returns the version number
o add a bozo_get_version() function which returns the version number
changes in bozohttpd 20160415:
o add search-word support for CGI

View File

@ -1,8 +1,8 @@
.\" $NetBSD: bozohttpd.8,v 1.46.4.4.2.2 2016/12/23 07:47:40 snj Exp $
.\" $NetBSD: bozohttpd.8,v 1.46.4.4.2.3 2017/02/12 21:59:44 snj Exp $
.\"
.\" $eterna: bozohttpd.8,v 1.101 2011/11/18 01:25:11 mrg Exp $
.\"
.\" Copyright (c) 1997-2016 Matthew R. Green
.\" Copyright (c) 1997-2017 Matthew R. Green
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
@ -26,7 +26,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.Dd December 11, 2016
.Dd February 1, 2017
.Dt BOZOHTTPD 8
.Os
.Sh NAME
@ -190,7 +190,7 @@ when a URL in the form
is being accessed.
The function is passed three tables as arguments, the server
environment, the request headers, and the decoded query string
plus any data that was send as application/x-www-form-urlencoded.
plus any data that was sent as application/x-www-form-urlencoded.
.It Fl M Ar suffix type encoding encoding11
Adds a new entry to the table that converts file suffixes to
content type and encoding.
@ -384,7 +384,7 @@ user transformations (NO_USER_SUPPORT),
directory index support (NO_DIRINDEX_SUPPORT),
daemon mode support (NO_DAEMON_MODE),
dynamic MIME content (NO_DYNAMIC_CONTENT),
Lua suport (NO_LUA_SUPPORT),
Lua support (NO_LUA_SUPPORT),
and SSL support (NO_SSL_SUPPORT)
by defining the listed macros when building
.Nm .
@ -446,7 +446,7 @@ with
on the compiler command line.
.Ss COMPRESSION
.Nm
supports a very basic form compression.
supports a very basic form of compression.
.Nm
will serve the requested file postpended with
.Dq Pa .gz
@ -531,7 +531,7 @@ The focus has always been simplicity and security, with minimal features
and regular code audits.
This manual documents
.Nm
version 20160720.
version 20170201.
.Sh AUTHORS
.An -nosplit
.Nm
@ -631,6 +631,10 @@ provided some clean up for memory leaks
.Aq Mt jlam@NetBSD.org
provided man page fixes
.It
.An Dennis Lindroos
.Aq Mt denafcm@gmail.com
provided a cgi-bin fix
.It
.An Julio Merino
.Aq Mt jmmv@NetBSD.org
Added the

View File

@ -1,9 +1,9 @@
/* $NetBSD: bozohttpd.c,v 1.56.2.4.2.2 2016/12/23 07:47:40 snj Exp $ */
/* $NetBSD: bozohttpd.c,v 1.56.2.4.2.3 2017/02/12 21:59:44 snj Exp $ */
/* $eterna: bozohttpd.c,v 1.178 2011/11/18 09:21:15 mrg Exp $ */
/*
* Copyright (c) 1997-2016 Matthew R. Green
* Copyright (c) 1997-2017 Matthew R. Green
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -109,7 +109,7 @@
#define INDEX_HTML "index.html"
#endif
#ifndef SERVER_SOFTWARE
#define SERVER_SOFTWARE "bozohttpd/20160720"
#define SERVER_SOFTWARE "bozohttpd/20170201"
#endif
#ifndef DIRECT_ACCESS_FILE
#define DIRECT_ACCESS_FILE ".bzdirect"

View File

@ -1,9 +1,9 @@
/* $NetBSD: bozohttpd.h,v 1.33.2.2.2.2 2016/12/23 07:47:40 snj Exp $ */
/* $NetBSD: bozohttpd.h,v 1.33.2.2.2.3 2017/02/12 21:59:44 snj Exp $ */
/* $eterna: bozohttpd.h,v 1.39 2011/11/18 09:21:15 mrg Exp $ */
/*
* Copyright (c) 1997-2015 Matthew R. Green
* Copyright (c) 1997-2017 Matthew R. Green
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@ -1,9 +1,9 @@
/* $NetBSD: cgi-bozo.c,v 1.25.2.2.2.3 2016/12/23 07:47:40 snj Exp $ */
/* $NetBSD: cgi-bozo.c,v 1.25.2.2.2.4 2017/02/12 21:59:44 snj Exp $ */
/* $eterna: cgi-bozo.c,v 1.40 2011/11/18 09:21:15 mrg Exp $ */
/*
* Copyright (c) 1997-2015 Matthew R. Green
* Copyright (c) 1997-2017 Matthew R. Green
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -235,7 +235,8 @@ parse_search_string(bozo_httpreq_t *request, const char *query, size_t *args_len
*/
*args_len = 1;
/* count '+' in str */
for (s = str; (s = strchr(s, '+')); (*args_len)++);
for (s = str; (s = strchr(s, '+')); (*args_len)++)
s++;
args = bozomalloc(httpd, sizeof(*args) * (*args_len + 1));

View File

@ -1,4 +1,4 @@
.\" $NetBSD: libbozohttpd.3,v 1.3 2014/03/18 18:20:38 riastradh Exp $
.\" $NetBSD: libbozohttpd.3,v 1.3.12.1 2017/02/12 21:59:44 snj Exp $
.\"
.\" $eterna: libbozohttpd.3,v 1.2 2010/05/10 02:48:23 mrg Exp $
.\"
@ -29,7 +29,7 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
.Dd November 5, 2009
.Dd February 2, 2017
.Dt LIBBOZOHTTPD 3
.Os
.Sh NAME
@ -41,7 +41,7 @@
.In bozohttpd.h
.Ft int
.Fo bozo_set_pref
.Fa "bozoprefs_t *prefs" "char *name" "char *value"
.Fa "bozohttpd_t *httpd" "bozoprefs_t *prefs" "char *name" "char *value"
.Fc
.Ft char *
.Fo bozo_get_pref

View File

@ -1,6 +1,7 @@
# $eterna: Makefile,v 1.14 2009/05/22 21:51:39 mrg Exp $
SIMPLETESTS= t1 t2 t3 t4 t5 t6 t7 t8 t9 t10
CGITESTS= t11
BIGFILETESTS= partial4000 partial8000
BOZOHTTPD?= ../bozohttpd
@ -22,11 +23,16 @@ clean:
rm -f tmp.$$a.out tmp.$$a.err; \
done
check: check-simple check-bigfile
check: check-simple check-cgi check-bigfile
check-simple:
.for a in $(SIMPLETESTS)
${SILENT}$(.CURDIR)/test-simple "$a" "${BOZOHTTPD}" "${DATA}" "${VERBOSE}"
${SILENT}$(.CURDIR)/test-simple "$a" "${BOZOHTTPD}" "${DATA}" "${.CURDIR}" "${VERBOSE}"
.endfor
check-cgi:
.for a in $(CGITESTS)
${SILENT}$(.CURDIR)/test-simple "$a" "${BOZOHTTPD}" "${DATA}" "${.CURDIR}" "${VERBOSE}" -c "${.CURDIR}/cgi-bin"
.endfor
check-bigfile:

View File

View File

@ -2,12 +2,20 @@
#
# $eterna: html_cmp,v 1.9 2011/11/17 22:18:02 mrg Exp $
#
# like cmp(1) but compares to files after making their `Date: ' headers
# the same, to allow `now' and `then' to work properly. it also tries
# to find servername's that might be the local host and converts those
# as well..
# like cmp(1)/diff(1) but compares to files after making their
# `Date: ' headers the same, to allow `now' and `then' to work properly.
# it also tries to find servername's that might be the local host and
# converts those as well..
#
# it must be called like `cmp file1 file1' *only*.
# it must be called like `html_cmp cmp|diff file1 file1' *only*.
if [ "cmp" = "$1" ]; then
cmd="cmp -s"
elif [ "diff" = "$1" ]; then
cmd="diff -u"
else
exit 77
fi
h=`hostname || uname -n`
@ -17,10 +25,10 @@ sedcmd="s/^Date: .*/Date: nowish/;
s/^Server: .*/^Server: bozotic HTTP server version 5.08/;
s/^Content-Length: .*/Content-Length: 223/;"
sed -e "$sedcmd" < "$1" > "f1.tmp.$$"
sed -e "$sedcmd" < "$2" > "f2.tmp.$$"
sed -e "$sedcmd" < "$2" > "f1.tmp.$$"
sed -e "$sedcmd" < "$3" > "f2.tmp.$$"
cmp -s "f1.tmp.$$" "f2.tmp.$$"
${cmd} "f1.tmp.$$" "f2.tmp.$$"
rv=$?
rm -f "f1.tmp.$$" "f2.tmp.$$"

View File

@ -0,0 +1,3 @@
GET /cgi-bin/echo.bat?&dir+c:\\ HTTP/1.1
Host:

View File

@ -0,0 +1 @@
HTTP/1.1 200 OK

View File

@ -1,5 +1,5 @@
#! /bin/sh
# $NetBSD: test-bigfile,v 1.1.1.1.32.2 2016/12/23 07:47:40 snj Exp $
# $NetBSD: test-bigfile,v 1.1.1.1.32.3 2017/02/12 21:59:45 snj Exp $
test="$1" # partial4000 or partial8000
bozohttpd="$2"
@ -7,30 +7,35 @@ wget="$3"
datadir="$4"
verbose="$5"
tmperr="tmp.$test.err"
if [ "yes" = "$verbose" ]; then
echo "Running test $test"
else
exec 2>tmp.$test.err
exec 2>"$tmperr"
fi
bozotestport=11111
# copy beginning file
cp ${datadir}/bigfile.${test} ./bigfile
cp "${datadir}/bigfile.${test}" ./bigfile
# fire up bozohttpd
${bozohttpd} -b -b -I ${bozotestport} -n -s -f ${datadir} &
${bozohttpd} -b -b -I ${bozotestport} -n -s -f "${datadir}" &
bozopid=$!
${wget} -c http://localhost:${bozotestport}/bigfile
"${wget}" -c http://localhost:${bozotestport}/bigfile
kill -9 $bozopid
if cmp ./bigfile ${datadir}/bigfile; then
if cmp ./bigfile "${datadir}/bigfile"; then
rm -f ./bigfile
exit 0
else
rm -f ./bigfile
[ "yes" = "$verbose" ] || echo "Failed test $test: `cat tmp.$test.err`"
if [ "yes" = "$verbose" ]; then
echo "Failed test $test:"
cat "$tmperr"
fi
exit 1
fi

View File

@ -1,23 +1,33 @@
#! /bin/sh
# $NetBSD: test-simple,v 1.2.6.2 2016/12/23 07:47:40 snj Exp $
# $NetBSD: test-simple,v 1.2.6.3 2017/02/12 21:59:45 snj Exp $
test="$1"
bozohttpd="$2"
datadir="$3"
verbose="$4"
test="$1"; shift
bozohttpd="$1"; shift
datadir="$1"; shift
curdir="$1"; shift
verbose="$1"; shift
in="$curdir/$test.in"
out="$curdir/$test.out"
tmpout="tmp.$test.out"
tmperr="tmp.$test.err"
if [ "yes" = "$verbose" ]; then
echo "Running test $test"
else
exec 2>tmp.$test.err
exec 2>"$tmperr"
fi
bozotestport=11111
${bozohttpd} ${datadir} < $test.in > tmp.$test.out
if ./html_cmp $test.out tmp.$test.out; then
${bozohttpd} "$@" "${datadir}" < "$in" > "$tmpout"
if "$curdir/html_cmp" cmp "$out" "$tmpout"; then
exit 0
else
[ "yes" = "$verbose" ] || echo "Failed test $test: `cat tmp.$test.err; echo; cat $test.out`"
if [ "yes" = "$verbose" ]; then
echo "Failed test $test:"
cat "$tmperr"
$curdir/html_cmp diff "$out" "$tmpout"
fi
exit 1
fi