@@ -27,6 +27,13 @@ def header(sock)
2727 header
2828 end
2929
30+ def send_http_and_read ( req )
31+ port = @server . connected_port
32+ sock = TCPSocket . new @host , port
33+ sock << req
34+ sock . read
35+ end
36+
3037 def test_proper_stringio_body
3138 data = nil
3239
@@ -743,19 +750,28 @@ def test_empty_header_values
743750
744751 # https://github.com/ruby/ruby/commit/d9d4a28f1cdd05a0e8dabb36d747d40bbcc30f16
745752 def test_prevent_response_splitting_headers
746- server_run app : -> ( _ ) { [ 200 , { 'X-header' => "malicious\r \n Cookie: hack" } , [ "Hello" ] ] }
753+ @server . app = -> ( _ ) { [ 200 , { 'X-header' => "malicious\r \n Cookie: hack" } , [ "Hello" ] ] }
754+
755+ @server . add_tcp_listener @host , @port
756+ @server . run
747757 data = send_http_and_read "HEAD / HTTP/1.0\r \n \r \n "
748758 refute_match 'hack' , data
749759 end
750760
751761 def test_prevent_response_splitting_headers_cr
752- server_run app : -> ( _ ) { [ 200 , { 'X-header' => "malicious\r Cookie: hack" } , [ "Hello" ] ] }
762+ @server . app = -> ( _ ) { [ 200 , { 'X-header' => "malicious\r Cookie: hack" } , [ "Hello" ] ] }
763+
764+ @server . add_tcp_listener @host , @port
765+ @server . run
753766 data = send_http_and_read "HEAD / HTTP/1.0\r \n \r \n "
754767 refute_match 'hack' , data
755768 end
756769
757770 def test_prevent_response_splitting_headers_lf
758- server_run app : -> ( _ ) { [ 200 , { 'X-header' => "malicious\n Cookie: hack" } , [ "Hello" ] ] }
771+ @server . app = -> ( _ ) { [ 200 , { 'X-header' => "malicious\n Cookie: hack" } , [ "Hello" ] ] }
772+
773+ @server . add_tcp_listener @host , @port
774+ @server . run
759775 data = send_http_and_read "HEAD / HTTP/1.0\r \n \r \n "
760776 refute_match 'hack' , data
761777 end
0 commit comments