Skip to content

Commit 8bc3467

Browse files
committed
Increase fuzz count. Add test for [too] large HTTP requests
1 parent 4785fd0 commit 8bc3467

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

src/server.zig

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -529,12 +529,13 @@ fn Client(comptime S: type) type {
529529

530530
errdefer self.server.queueClose(self.socket);
531531

532+
if (request.len > MAX_HTTP_REQUEST_SIZE) {
533+
self.writeHTTPErrorResponse(413, "Request too large");
534+
return error.RequestTooLarge;
535+
}
536+
532537
// we're only expecting [body-less] GET requests.
533538
if (std.mem.endsWith(u8, request, "\r\n\r\n") == false) {
534-
if (request.len > MAX_HTTP_REQUEST_SIZE) {
535-
self.writeHTTPErrorResponse(413, "Request too large");
536-
return error.RequestTooLarge;
537-
}
538539
// we need more data, put any more data here
539540
self.read_len = request.len;
540541
return;
@@ -1055,6 +1056,16 @@ test "server: buildJSONVersionResponse" {
10551056
"{\"webSocketDebuggerUrl\": \"ws://127.0.0.1:9001/\"}", res);
10561057
}
10571058

1059+
test "Client: http invalid request" {
1060+
try assertHTTPError(
1061+
error.RequestTooLarge,
1062+
413,
1063+
"Request too large",
1064+
"GET /over/9000 HTTP/1.1\r\n" ++ "Header: " ++ ("a" ** 2050) ++ "\r\n\r\n",
1065+
);
1066+
1067+
}
1068+
10581069
test "Client: http invalid handshake" {
10591070
try assertHTTPError(
10601071
error.InvalidRequest,
@@ -1327,7 +1338,7 @@ test "Client: fuzz" {
13271338
}
13281339
};
13291340

1330-
for (0..1) |_| {
1341+
for (0..100) |_| {
13311342
var ms = MockServer{};
13321343
defer ms.deinit();
13331344

0 commit comments

Comments
 (0)