Skip to content

Commit f1b275d

Browse files
committed
Increase fuzz count. Add test for [too] large HTTP requests
1 parent 68e0ffc commit f1b275d

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
@@ -530,12 +530,13 @@ fn Client(comptime S: type) type {
530530

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

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

1069+
test "Client: http invalid request" {
1070+
try assertHTTPError(
1071+
error.RequestTooLarge,
1072+
413,
1073+
"Request too large",
1074+
"GET /over/9000 HTTP/1.1\r\n" ++ "Header: " ++ ("a" ** 2050) ++ "\r\n\r\n",
1075+
);
1076+
1077+
}
1078+
10681079
test "Client: http invalid handshake" {
10691080
try assertHTTPError(
10701081
error.InvalidRequest,
@@ -1336,7 +1347,7 @@ test "Client: fuzz" {
13361347
}
13371348
};
13381349

1339-
for (0..1) |_| {
1350+
for (0..100) |_| {
13401351
var ms = MockServer{};
13411352
defer ms.deinit();
13421353

0 commit comments

Comments
 (0)