Module Name: src Committed By: maya Date: Sat Dec 15 01:02:34 UTC 2018
Modified Files: src/libexec/httpd: bozohttpd.c Log Message: 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. To generate a diff of this commit: cvs rdiff -u -r1.101 -r1.102 src/libexec/httpd/bozohttpd.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/libexec/httpd/bozohttpd.c diff -u src/libexec/httpd/bozohttpd.c:1.101 src/libexec/httpd/bozohttpd.c:1.102 --- src/libexec/httpd/bozohttpd.c:1.101 Tue Dec 4 02:52:42 2018 +++ src/libexec/httpd/bozohttpd.c Sat Dec 15 01:02:34 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: bozohttpd.c,v 1.101 2018/12/04 02:52:42 mrg Exp $ */ +/* $NetBSD: bozohttpd.c,v 1.102 2018/12/15 01:02:34 maya Exp $ */ /* $eterna: bozohttpd.c,v 1.178 2011/11/18 09:21:15 mrg Exp $ */ @@ -585,12 +585,14 @@ process_method(bozo_httpreq_t *request, static int bozo_got_header_length(bozo_httpreq_t *request, size_t len) { + + if (len > BOZO_HEADERS_MAX_SIZE - request->hr_header_bytes) + return bozo_http_error(request->hr_httpd, 413, request, + "too many headers"); + request->hr_header_bytes += len; - if (request->hr_header_bytes < BOZO_HEADERS_MAX_SIZE) - return 0; - return bozo_http_error(request->hr_httpd, 413, request, - "too many headers"); + return 0; } /*