Commit Graph

292 Commits

Author SHA1 Message Date
mrg e563647e37 remove some XXX comments. one isn't relevant, and the other two
have been incorrect for a long while now.
2019-12-06 05:53:20 +00:00
mrg 50851f2ac3 set -D_GNU_SOURCE, needed for linux systems and should be
harmless or ignored elsewhere.

from perry.
2019-10-30 07:28:13 +00:00
martin 9e275c0f36 Account for cgihandler being set when counting the number of CGI environment
headers we are about to set. Avoids an assertion failure (and overruninng
the array) later.
2019-03-29 14:46:44 +00:00
mrg 58a223ca24 add $NetBSD$ 2019-03-27 04:50:30 +00:00
mrg 8b21018e17 on m68010 set BOZO_WRSZ to 16k and BOZO_WRSZ to 64k. 2019-03-08 03:12:28 +00:00
mrg 767fb2605a call this bozohttpd 20190228, and merge the CHANGES entries from the
previous release.
2019-02-28 09:16:42 +00:00
mrg 08dbfa234a add ssl specific timeout value (30s). if SSL_accept() doesn't
work with in this timeout value, ssl setup now fails.

mostly different from, but inspired from the patch in PR 50655
2019-02-28 08:28:21 +00:00
dholland ad8aa774f5 fix duplicated chunk from merge 2019-01-27 04:33:29 +00:00
pgoyette d91f98a871 Merge the [pgoyette-compat] branch 2019-01-27 02:08:33 +00:00
mrg 00e064adab o don't display special files in the directory index. they aren't
served, but links to them are generated.
2019-01-22 05:32:57 +00:00
mrg 8f49d6e252 rework size_arrays():
- avoid calloc, use bozomalloc
- minor CSE
- fix bozoprefs->size setting when increasing the size (new total was
  being added to the prior total.)  found by clang static analyzer
  from rajeev_v_pillai.

pass httpd to size_arrays() now.
free(NULL) is legal.
2019-01-18 06:04:10 +00:00
mrg 5335936687 fix a few problems pointed out by clang static analyzer, from rajeev_v_pillai:
- bozostrnsep() may return with "in = NULL", so check for it.
- nul terminating in bozo_escape_rfc3986() can be simpler
- don't use uniinit variables in check_remap()
- don't use re-used freed data in check_virtual().  this one is tricky as
  the original code was:
	free(request->hr_file);
	request->hr_file = bozostrdup(httpd, request, s ? s : "/");
  however, bozostrdup() may reference request->hr_file.
2019-01-18 05:48:31 +00:00
mrg 9b91523ebd - call this 20190116
- adjust the directory indexing again:
  - don't include "index.html" in html headers
  - additional escaping of names
  - re-add top/bottom borders
  - adds an aquamarine table header
  - Zebra-stripes table rows using CSS instead of code
  all from "Rajeev V. Pillai" <rajeev_v_pillai@yahoo.com>
2019-01-17 07:46:16 +00:00
mrg d1eeb82409 add 'check' target to toplevel makefile.
fix the t11.out output now that CGI parsing works better.
2019-01-17 07:39:00 +00:00
mrg 9c0805993a - fix CGI '+' param and error handling.
- remove unused parameter to daemon_poll_err().

both from "Rajeev V. Pillai" <rajeev_v_pillai@yahoo.com>
2019-01-17 07:34:06 +00:00
mrg 4aff0e8a96 remove reference to deleted -r option. fixes PR#53840 from J. Lewis Muir. 2019-01-08 06:04:29 +00:00
mrg 48003606bd minor rewording. fix alphabeta ordering of contributors. 2018-12-19 12:40:32 +00:00
mrg ff386e5b59 fix an old spell-o and a new format-o. 2018-12-18 23:11:40 +00:00
leot 6816df1bc3 Document last changes and bump version to 20181215
Suggested by <mrg>, thanks! (Possible mistakes are mine though!)
2018-12-15 12:52:36 +00:00
leot 9644d25eb4 Fix handling of bozo_set_timeout() timeouts (and `-T' option parsing) 2018-12-15 12:43:24 +00:00
leot 6c2202365c Avoid .htpasswd exposure to authenticated users when .htpasswd is
in the slashdir too.

Problem reported by JP via tech-security@ and discussed with <mrg>, thanks!
2018-12-15 12:39:22 +00:00
leot 1f52a22c8c Avoid possible NULL dereference when sending a big request that timeout.
Problem reported by <maya> and reviewed by <maya> and <mrg>, thanks!
2018-12-15 09:28:27 +00:00
maya d6e51063d8 strings.h for strcasecmp (on linux) 2018-12-15 02:03:24 +00:00
maya 69e8cec185 Check against BOZO_HEADERS_MAX_SIZE in a way that isn't prone to overflow.
Note that this isn't reachable in practice as big requests time out.
2018-12-15 01:02:34 +00:00
maya 6807b854c1 Don't pass ${HOST} to test scripts.
htnl_cmp compares against the output of `hostname`.

This makes the tests pass on my machine.
2018-12-14 23:57:22 +00:00
mrg 34ece249a9 use html tables for directory index.
from "Rajeev V. Pillai" <rajeev_v_pillai@yahoo.com>

call this bozohttpd 20181204.
2018-12-04 02:52:42 +00:00
mrg 3d201ca797 avoid sign extension in % handling (and printing 0xFFFFFF before
wanted values.)  from Rajeev V. Pillai.
2018-12-04 00:26:15 +00:00
mrg a0c45e363d normalise some messages. 2018-11-25 23:48:14 +00:00
mrg cd79b847e8 add option fixes here. 2018-11-25 23:37:09 +00:00
mrg c53bc78857 fix -X option parsing. noted by Rajeev V. Pillai. 2018-11-25 07:37:20 +00:00
mrg ac81556715 avoid c99ism. 2018-11-24 18:38:59 +00:00
christos 201b0ce72c - add FALLTHROUGH comment
- one return is usually enough.
2018-11-24 13:08:10 +00:00
christos 47273da74b appease lint 2018-11-24 13:03:15 +00:00
christos 9034ab8ec4 one semicolon is usually enough. 2018-11-24 13:02:46 +00:00
mrg de8fdd6045 call this bozohttpd 20181124. 2018-11-24 02:35:13 +00:00
mrg 0e9761c130 fix a bug in the rework for -i option: move the real code in place.
for some reason gcc does not warn about this:

   case 'x':
     stuff_here();
     break;

     other_stuff_here();
     break;

and the other_stuff_here() was what was mis-placed.


should fix atf failures in networking.
2018-11-24 02:30:56 +00:00
mrg a49dff0c2c s/time/val/ to avoid shadowing a global indentifier. 2018-11-24 00:47:51 +00:00
mrg ed71d0d525 minor style fixes. simplify bozo_match_content_map(). 2018-11-23 08:11:20 +00:00
mrg 7cb0de5ddc add an assert() check on array bounds. 2018-11-22 18:42:06 +00:00
mrg b0d9cf700a alpha sort the option switch. 2018-11-22 18:21:59 +00:00
mrg 4cfb2183d3 many clean ups:
- keep a list of special files and their human names
- remove (void) casts on bozo_http_error()
- fix a few more misuses of bozo_http_error()
- rename check_mapping() to check_remap() and perform some CSE
- switch away from ``%s'' to '%s'
- remove a bunch of #ifdef using new have_feature defines
2018-11-22 08:54:08 +00:00
mrg 32fa179b6e use MAP_SHARED for the bzremap file. avoids netbsd kernel complaining:
WARNING: defaulted mmap() share type to MAP_PRIVATE (pid 15478 command bozohttpd)
2018-11-21 17:39:19 +00:00
mrg b4624ca902 two fixes reported by mouse:
- don't check contents of 'st' if stat(2) failed.
- round up instead of truncate.  now 10000 byte files say 10kB not 9kB.
2018-11-21 10:25:17 +00:00
mrg a3912675bc - move special files defines into bozohttpd.h, so we can ...
- consolidate all the special file checks into
  bozo_check_special_files() so that all builds check the same
  list of special files, regardless of build options.
- convert "(void)bozo_http_error(...); return -1;" into plain
  "return bozo_http_error(...);"
- fix the call to bozo_check_special_files() to be used on all
  input types.  part of the fixes for failure to reject access
  to /.htpasswd as reported by JP on tech-security.
- use warn_unused_result attribute on bozo_check_special_files(),
  and fix the failures to return failure.  second part of the
  htpasswd access fix.
- update testsuite to use a fixed fake hostname.

call this bozohttpd 20181121.
2018-11-21 09:37:02 +00:00
mrg b091ab062f also fix have_dynamic_content from the previous previous. re-order
the debug and dynamic content to match the same pattern as everything
else so similar problems are less likely in the future.
2018-11-20 01:23:06 +00:00
mrg 75e07df53f fix previous: have_debug was reversed. 2018-11-20 01:19:51 +00:00
mrg cbabfa751a move some #if support into bozohttpd.h. 2018-11-20 01:15:50 +00:00
mrg 3230a9a3d5 from CHANGES:
o  reduce default timeouts, and add expand timeouts to handle the
   initial line, each header, and the total time spent
o  add -T option to expose new timeout settings
o  minor RFC fixes related to timeout handling responses

old timeouts:
60 seconds for initial request like, 60 seconds per header line,
and no whole timeout (though the recent total header size changes
do introduce one that would be about 11 hours.)
new timeouts:
30 seconds for initial request like, 10 seconds per header line,
and a total request time of 600 seconds.


the new global timeout is implemented using CLOCK_MONOTONIC, with
a fallback to CLOCK_REALTIME if monotonic time is unavailable.


reject multiple Host: headers.  besides being protocol standard,
this closes one additional memory leak found by JP.  add a simple
test to check this.


clean up option and usage handling some.
2018-11-20 01:06:46 +00:00
mrg 1520b40a61 note the changes present in bozohttpd 20181118:
o  add url remap support via .bzremap file, from martin@netbsd.org
o  handle redirections for any protocol, not just http:
o  fix a denial of service attack against header contents, which
   is now bounded at 16KiB.  reported by JP.
2018-11-19 04:14:59 +00:00
mrg 7b01d57a61 avoid memory leak in sending multiple auth headers.
mostly mitigated by previous patch to limit total header size,
but still a real problem here.
2018-11-19 04:13:09 +00:00