From 64731e974b384b5efb29e9403c0df9c34f9002fe Mon Sep 17 00:00:00 2001 From: Ben Ubois Date: Wed, 24 Jun 2026 14:31:10 +0200 Subject: [PATCH] Check for nil host before `match?`. --- lib/http/request.rb | 6 ++---- test/http/request_test.rb | 12 ++++++++++++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/lib/http/request.rb b/lib/http/request.rb index c09daaf8..13b130c0 100644 --- a/lib/http/request.rb +++ b/lib/http/request.rb @@ -326,11 +326,9 @@ def port # @return [String] # @api private def default_host_header_value - value = PORTS[@scheme] == port ? host : "#{host}:#{port}" + raise RequestError, "Invalid host: #{host.inspect}" if host.nil? || host.match?(/\s/) - raise RequestError, "Invalid host: #{value.inspect}" if value.match?(/\s/) - - value + PORTS[@scheme] == port ? host : "#{host}:#{port}" end # Parse and normalize the URI, setting scheme diff --git a/test/http/request_test.rb b/test/http/request_test.rb index 7a9f38ee..81342ce7 100644 --- a/test/http/request_test.rb +++ b/test/http/request_test.rb @@ -266,6 +266,18 @@ def test_host_header_when_host_contains_whitespace_includes_invalid_host_in_erro assert_includes err.message, "exam ple.com".inspect end + def test_host_header_when_host_is_nil_raises_request_error + normalizer = lambda { |uri| + u = HTTP::URI.parse(uri) + u.host = nil + u + } + + assert_raises(HTTP::RequestError) do + HTTP::Request.new(verb: :get, uri: "http://example.com/", uri_normalizer: normalizer) + end + end + # User-Agent header def test_user_agent_header_defaults_to_http_request_user_agent