fix(header): fix panic when parsing header names larger than 64kb

This commit is contained in:
Sean McArthur
2018-11-05 12:59:31 -08:00
parent 976a77a673
commit 9245e9409a
2 changed files with 31 additions and 3 deletions

View File

@@ -1024,6 +1024,24 @@ fn returning_1xx_response_is_error() {
rt.block_on(fut).expect_err("1xx status code should error");
}
#[test]
fn header_name_too_long() {
let server = serve();
let mut req = connect(server.addr());
let mut write = Vec::with_capacity(1024 * 66);
write.extend_from_slice(b"GET / HTTP/1.1\r\n");
for _ in 0..(1024 * 65) {
write.push(b'x');
}
write.extend_from_slice(b": foo\r\n\r\n");
req.write_all(&write).unwrap();
let mut buf = [0; 1024];
let n = req.read(&mut buf).unwrap();
assert!(s(&buf[..n]).starts_with("HTTP/1.1 431 Request Header Fields Too Large\r\n"));
}
#[test]
fn upgrades() {
use tokio_io::io::{read_to_end, write_all};