Increase fuzz count. Add test for [too] large HTTP requests

This commit is contained in:
Karl Seguin
2025-02-07 12:33:47 +08:00
parent 68e0ffc95c
commit f1b275d5d0

View File

@@ -530,12 +530,13 @@ fn Client(comptime S: type) type {
errdefer self.server.queueClose(self.socket); errdefer self.server.queueClose(self.socket);
if (request.len > MAX_HTTP_REQUEST_SIZE) {
self.writeHTTPErrorResponse(413, "Request too large");
return error.RequestTooLarge;
}
// we're only expecting [body-less] GET requests. // we're only expecting [body-less] GET requests.
if (std.mem.endsWith(u8, request, "\r\n\r\n") == false) { if (std.mem.endsWith(u8, request, "\r\n\r\n") == false) {
if (request.len > MAX_HTTP_REQUEST_SIZE) {
self.writeHTTPErrorResponse(413, "Request too large");
return error.RequestTooLarge;
}
// we need more data, put any more data here // we need more data, put any more data here
self.read_len = request.len; self.read_len = request.len;
return; return;
@@ -1065,6 +1066,16 @@ test "server: buildJSONVersionResponse" {
"{\"webSocketDebuggerUrl\": \"ws://127.0.0.1:9001/\"}", res); "{\"webSocketDebuggerUrl\": \"ws://127.0.0.1:9001/\"}", res);
} }
test "Client: http invalid request" {
try assertHTTPError(
error.RequestTooLarge,
413,
"Request too large",
"GET /over/9000 HTTP/1.1\r\n" ++ "Header: " ++ ("a" ** 2050) ++ "\r\n\r\n",
);
}
test "Client: http invalid handshake" { test "Client: http invalid handshake" {
try assertHTTPError( try assertHTTPError(
error.InvalidRequest, error.InvalidRequest,
@@ -1336,7 +1347,7 @@ test "Client: fuzz" {
} }
}; };
for (0..1) |_| { for (0..100) |_| {
var ms = MockServer{}; var ms = MockServer{};
defer ms.deinit(); defer ms.deinit();