File 69707bb1aa.patch of Package python-Twisted.34938

From 9a35e728d8a49934f886fc99cb636b3339720c89 Mon Sep 17 00:00:00 2001
From: "Amber Brown (HawkOwl)" <hawkowl@atleastfornow.net>
Date: Wed, 10 Aug 2016 20:49:08 +0800
Subject: [PATCH 1/3] fix pyflakes

---
 twisted/web/test/test_cgi.py | 2 --
 1 file changed, 2 deletions(-)

Index: Twisted-15.2.1/twisted/web/test/test_cgi.py
===================================================================
--- Twisted-15.2.1.orig/twisted/web/test/test_cgi.py
+++ Twisted-15.2.1/twisted/web/test/test_cgi.py
@@ -5,13 +5,15 @@
 Tests for L{twisted.web.twcgi}.
 """
 
-import sys, os
+import sys
+import os
+import json
 
 from twisted.trial import unittest
 from twisted.internet import reactor, interfaces, error
 from twisted.python import util, failure, log
 from twisted.web.http import NOT_FOUND, INTERNAL_SERVER_ERROR
-from twisted.web import client, twcgi, server, resource
+from twisted.web import client, twcgi, server, resource, http_headers
 from twisted.web.test._util import _render
 from twisted.web.test.test_web import DummyRequest
 
@@ -73,6 +75,15 @@ print
 print "cgi output"
 '''
 
+HEADER_OUTPUT_CGI = '''\
+import json
+import os
+print("")
+print("")
+vals = {x:y for x,y in os.environ.items() if x.startswith("HTTP_")}
+print(json.dumps(vals))
+'''
+
 class PythonScript(twcgi.FilteredScript):
     filter = sys.executable
 
@@ -154,6 +165,32 @@ class CGITests(unittest.TestCase):
         return factory.deferred
 
 
+    def test_noProxyPassthrough(self):
+        """
+        The CGI script is never called with the Proxy header passed through.
+        """
+        cgiFilename = self.writeCGI(HEADER_OUTPUT_CGI)
+
+        portnum = self.startServer(cgiFilename)
+        url = "http://localhost:%d/cgi" % (portnum,)
+
+        agent = client.Agent(reactor)
+
+        headers = http_headers.Headers({"Proxy": ["foo"],
+                                        "X-Innocent-Header": ["bar"]})
+        d = agent.request("GET", url, headers=headers)
+
+        def checkResponse(response):
+            headers = json.loads(response)
+            self.assertEqual(
+                set(headers.keys()),
+                {"HTTP_HOST", "HTTP_CONNECTION", "HTTP_X_INNOCENT_HEADER"})
+
+        d.addCallback(client.readBody)
+        d.addCallback(checkResponse)
+        return d
+
+
     def test_duplicateHeaderCGI(self):
         """
         If a CGI script emits two instances of the same header, both are sent in
Index: Twisted-15.2.1/twisted/web/topfiles/8623.bugfix
===================================================================
--- /dev/null
+++ Twisted-15.2.1/twisted/web/topfiles/8623.bugfix
@@ -0,0 +1 @@
+twisted.web.twcgi.CGIScript will now not pass the "Proxy" header to CGI scripts, as a mitigation to CVE-2016-1000111.
Index: Twisted-15.2.1/twisted/web/twcgi.py
===================================================================
--- Twisted-15.2.1.orig/twisted/web/twcgi.py
+++ Twisted-15.2.1/twisted/web/twcgi.py
@@ -116,7 +116,7 @@ class CGIScript(resource.Resource):
         # Propagate HTTP headers
         for title, header in request.getAllHeaders().items():
             envname = title.replace('-', '_').upper()
-            if title not in ('content-type', 'content-length'):
+            if title not in ('content-type', 'content-length', 'proxy'):
                 envname = "HTTP_" + envname
             env[envname] = header
         # Propagate our environment
openSUSE Build Service is sponsored by