Skip to content
Permalink
2.7
Switch branches/tags

Commits on Apr 1, 2020

Commits on Mar 19, 2020

  1. [2.7] closes bpo-38576: Disallow control characters in hostnames in h…

    …ttp.client. (GH-19052)
    
    Add host validation for control characters for more
    CVE-2019-18348 protection.
    (cherry picked from commit 83fc701)
    
    Co-authored-by: Ashwin Ramaswami <aramaswamis@gmail.com>
    mcepl and epicfaace committed Mar 19, 2020

Commits on Jan 7, 2020

  1. Doc: Change Python 2 status to EOL. (GH-17885)

    (cherry picked from commit f4800b8)
    
    Co-authored-by: Inada Naoki <songofacandy@gmail.com>
    miss-islington and methane committed Jan 7, 2020

Commits on Jan 4, 2020

  1. bpo-27973 - Use test.support.temp_dir instead of NamedTemporaryFile f…

    …or the (#17774)
    
    desired behavior under windows platform.
    
    Suggestion by David Bolen
    orsenthil committed Jan 4, 2020

Commits on Jan 3, 2020

  1. Update copyright year in macOS installer license copy (GH-17806)

    (cherry picked from commit 32f1443)
    
    Co-authored-by: Ned Deily <nad@python.org>
    miss-islington and ned-deily committed Jan 3, 2020
  2. [2.7] Bring Python into the next decade. (GH-17805)

    (cherry picked from commit 946b29e)
    
    Co-authored-by: Benjamin Peterson <benjamin@python.org>
    benjaminp committed Jan 3, 2020

Commits on Dec 31, 2019

  1. [2.7] bpo-27973 - Fix for urllib.urlretrieve() failing on second ftp …

    …transfer (#1040)
    
    * bpo-27973: Fix urllib.urlretrieve failing on subsequent ftp transfers from the same host.
    
    * bpo-35411: Skip test_urllibnet FTP tests on Travis CI.
    orsenthil committed Dec 31, 2019

Commits on Dec 25, 2019

  1. [2.7] Minor C API documentation improvements. (GH-17699)

    (cherry picked from commit 5c7ed75)
    
    Co-authored-by: William Ayd <william.ayd@icloud.com>
    benjaminp and WillAyd committed Dec 25, 2019

Commits on Dec 17, 2019

  1. bpo-38295: prevent test_relative_path of test_py_compile failure on m…

    …acOS Catalina (GH-17636)
    
    (cherry picked from commit bf3aa10)
    
    Co-authored-by: Ned Deily <nad@python.org>
    miss-islington and ned-deily committed Dec 17, 2019
  2. bpo-38730: Replace strncpy in import.c with memcpy. (GH-17633)

    In all these cases, we know the exact length we want copied, so memcpy is the right function to use.
    benjaminp committed Dec 17, 2019

Commits on Dec 14, 2019

Commits on Dec 3, 2019

  1. [2.7] bpo-38945: UU Encoding: Don't let newline in filename corrupt t…

    …he output format (GH-17418). (#17452)
    
    (cherry picked from commit a62ad47)
    
    Co-authored-by: Matthew Rollings <1211162+stealthcopter@users.noreply.github.com>
    stealthcopter authored and gvanrossum committed Dec 3, 2019

Commits on Dec 1, 2019

  1. document threading.Lock.locked() (GH-17427)

    (cherry picked from commit fdafa1d)
    
    Co-authored-by: idomic <michael.ido@gmail.com>
    miss-islington and idomic committed Dec 1, 2019

Commits on Nov 24, 2019

  1. bpo-38804: Fix REDoS in http.cookiejar (GH-17157) (GH-17345)

    The regex http.cookiejar.LOOSE_HTTP_DATE_RE was vulnerable to regular
    expression denial of service (REDoS).
    
    LOOSE_HTTP_DATE_RE.match is called when using http.cookiejar.CookieJar
    to parse Set-Cookie headers returned by a server.
    Processing a response from a malicious HTTP server can lead to extreme
    CPU usage and execution will be blocked for a long time.
    
    The regex contained multiple overlapping \s* capture groups.
    Ignoring the ?-optional capture groups the regex could be simplified to
    
        \d+-\w+-\d+(\s*\s*\s*)$
    
    Therefore, a long sequence of spaces can trigger bad performance.
    
    Matching a malicious string such as
    
        LOOSE_HTTP_DATE_RE.match("1-c-1" + (" " * 2000) + "!")
    
    caused catastrophic backtracking.
    
    The fix removes ambiguity about which \s* should match a particular
    space.
    
    You can create a malicious server which responds with Set-Cookie headers
    to attack all python programs which access it e.g.
    
        from http.server import BaseHTTPRequestHandler, HTTPServer
    
        def make_set_cookie_value(n_spaces):
            spaces = " " * n_spaces
            expiry = f"1-c-1{spaces}!"
            return f"b;Expires={expiry}"
    
        class Handler(BaseHTTPRequestHandler):
            def do_GET(self):
                self.log_request(204)
                self.send_response_only(204)  # Don't bother sending Server and Date
                n_spaces = (
                    int(self.path[1:])  # Can GET e.g. /100 to test shorter sequences
                    if len(self.path) > 1 else
                    65506  # Max header line length 65536
                )
                value = make_set_cookie_value(n_spaces)
                for i in range(99):  # Not necessary, but we can have up to 100 header lines
                    self.send_header("Set-Cookie", value)
                self.end_headers()
    
        if __name__ == "__main__":
            HTTPServer(("", 44020), Handler).serve_forever()
    
    This server returns 99 Set-Cookie headers. Each has 65506 spaces.
    Extracting the cookies will pretty much never complete.
    
    Vulnerable client using the example at the bottom of
    https://docs.python.org/3/library/http.cookiejar.html :
    
        import http.cookiejar, urllib.request
        cj = http.cookiejar.CookieJar()
        opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
        r = opener.open("http://localhost:44020/")
    
    The popular requests library was also vulnerable without any additional
    options (as it uses http.cookiejar by default):
    
        import requests
        requests.get("http://localhost:44020/")
    
    * Regression test for http.cookiejar REDoS
    
    If we regress, this test will take a very long time.
    
    * Improve performance of http.cookiejar.ISO_DATE_RE
    
    A string like
    
    "444444" + (" " * 2000) + "A"
    
    could cause poor performance due to the 2 overlapping \s* groups,
    although this is not as serious as the REDoS in LOOSE_HTTP_DATE_RE was.
    
    (cherry picked from commit 1b779bf)
    vstinner committed Nov 24, 2019

Commits on Oct 26, 2019

  1. bpo-38557: Improve documentation for list and tuple C API. (GH-16925)

    (cherry picked from commit d898d20)
    
    Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
    miss-islington and serhiy-storchaka committed Oct 26, 2019
  2. [2.7] bpo-38535: Fix positions for AST nodes for calls without argume…

    …nts in decorators. (GH-16861). (GH-16931)
    
    (cherry picked from commit 26ae9f6)
    serhiy-storchaka committed Oct 26, 2019

Commits on Oct 23, 2019

  1. Update URL in macOS installer copy of license (GH-16905)

    (cherry picked from commit 01659ca)
    
    Co-authored-by: Ned Deily <nad@python.org>
    miss-islington and ned-deily committed Oct 23, 2019
  2. bpo-37025: AddRefActCtx() shouldn't be checked for failure (GH-16897)

    AddRefActCtx() does not return a value.
    ZackerySpytz authored and zooba committed Oct 23, 2019

Commits on Oct 22, 2019

  1. Fix Zope URL (GH-16880)

    (cherry picked from commit dfe726b)
    
    Co-authored-by: Kyle Stanley <aeros167@gmail.com>
    miss-islington and aeros committed Oct 22, 2019

Commits on Oct 21, 2019

Commits on Oct 19, 2019

  1. 2.2.17+

    benjaminp committed Oct 19, 2019
Older