File CVE-2020-5247.patch of Package rubygem-puma.15815

diff --git a/lib/puma/const.rb b/lib/puma/const.rb
--- a/lib/puma/const.rb
+++ b/lib/puma/const.rb
@@ -238,6 +238,7 @@
     COLON = ": ".freeze

     NEWLINE = "\n".freeze
+    HTTP_INJECTION_REGEX = /[\r\n]/.freeze

     HIJACK_P = "rack.hijack?".freeze
     HIJACK = "rack.hijack".freeze
diff --git a/lib/puma/server.rb b/lib/puma/server.rb
--- a/lib/puma/server.rb
+++ b/lib/puma/server.rb
@@ -640,6 +640,7 @@
         headers.each do |k, vs|
           case k.downcase
           when CONTENT_LENGTH2
+            next if possible_header_injection?(vs)
             content_length = vs
             next
           when TRANSFER_ENCODING
@@ -652,6 +653,7 @@
 
           if vs.respond_to?(:to_s)
             vs.to_s.split(NEWLINE).each do |v|
+              next if possible_header_injection?(v)
               lines.append k, colon, v, line_ending
             end
           else
@@ -895,5 +897,10 @@
       end
     end
     private :fast_write
+
+    def possible_header_injection?(header_value)
+      HTTP_INJECTION_REGEX =~ header_value.to_s
+    end
+    private :possible_header_injection?
   end
 end
openSUSE Build Service is sponsored by