8000 Merge tag v3.5.8rc1 into branch 3.5-slp. · stackless-dev/stackless@c593c28 · GitHub
[go: up one dir, main page]

Skip to content
This repository was archived by the owner on Feb 13, 2025. It is now read-only.

Commit c593c28

Browse files
author
Anselm Kruis
committed
Merge tag v3.5.8rc1 into branch 3.5-slp.
2 parents d65ea53 + 4452cdc commit c593c28

File tree

22 files changed

+12777
-116
lines changed

22 files changed

+12777
-116
lines changed

Doc/README.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,15 @@ Then, from the ``Doc`` directory, run ::
104104
where ``<builder>`` is one of html, text, latex, or htmlhelp (for explanations
105105
see the make targets above).
106106

107+
Deprecation header
108+
==================
109+
110+
You can define the ``outdated`` variable in ``html_context`` to show a
111+
red banner on each page redirecting to the "latest" version.
112+
113+
The link points to the same page on ``/3/``, sadly for the moment the
114+
language is lost during the process.
115+
107116

108117
Contributing
109118
============

Doc/conf.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@
4949
# By default, highlight as Python 3.
5050
highlight_language = 'python3'
5151

52-
# Require Sphinx 1.2 for build.
53-
needs_sphinx = '1.2'
52+
# Require Sphinx 1.8 for build.
53+
needs_sphinx = '1.8'
5454

5555
# Ignore any .rst files in the venv/ directory.
5656
venvdir = os.getenv('VENVDIR', 'venv')

Doc/tools/templates/layout.html

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,15 @@
11
{% extends "!layout.html" %}
2+
3+
{% block header %}
4+
{%- if outdated %}
5+
<div id="outdated-warning" style="padding: .5em; text-align: center; background-color: #FFBABA; color: #6A0E0E;">
6+
{% trans %}This document is for an old version of Python that is no longer supported.
7+
You should upgrade, and read the {% endtrans %}
8+
<a href="/3/{{ pagename }}{{ file_suffix }}">{% trans %} Python documentation for the current stable release{% endtrans %}</a>.
9+
</div>
10+
{%- endif %}
11+
{% endblock %}
12+
213
{% block rootrellink %}
314
<li><img src="{{ pathto('_static/py.png', 1) }}" alt=""
415
style="vertical-align: middle; margin-top: -1px"/></li>

Include/patchlevel.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@
1818
/*--start constants--*/
1919
#define PY_MAJOR_VERSION 3
2020
#define PY_MINOR_VERSION 5
21-
#define PY_MICRO_VERSION 7
22-
#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL
23-
#define PY_RELEASE_SERIAL 0
21+
#define PY_MICRO_VERSION 8
22+
#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_GAMMA
23+
#define PY_RELEASE_SERIAL 1
2424

2525
/* Version as a string */
26-
#define PY_VERSION "3.5.7"
26+
#define PY_VERSION "3.5.8rc1"
2727
/*--end constants--*/
2828

2929
/* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2.

Lib/email/_header_value_parser.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1964,6 +1964,8 @@ def get_domain(value):
19641964
token, value = get_dot_atom(value)
19651965
except errors.HeaderParseError:
19661966
token, value = get_atom(value)
1967+
if value and value[0] == '@':
1968+
raise errors.HeaderParseError('Invalid Domain')
19671969
if leader is not None:
19681970
token[:0] = [leader]
19691971
domain.append(token)
@@ -2769,6 +2771,9 @@ def get_parameter(value):
27692771
while value:
27702772
if value[0] in WSP:
27712773
token, value = get_fws(value)
2774+
elif value[0] == '"':
2775+
token = ValueTerminal('"', 'DQUOTE')
2776+
value = value[1:]
27722777
else:
27732778
token, value = get_qcontent(value)
27742779
v.append(token)

Lib/email/_parseaddr.py

< 10000 /div>
Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,12 @@ def getaddrspec(self):
379379
aslist.append('@')
380380
self.pos += 1
381381
self.gotonext()
382-
return EMPTYSTRING.join(aslist) + self.getdomain()
382+
domain = self.getdomain()
383+
if not domain:
384+
# Invalid domain, return an empty address instead of returning a
385+
# local part to denote failed parsing.
386+
return EMPTYSTRING
387+
return EMPTYSTRING.join(aslist) + domain
383388

384389
def getdomain(self):
385390
"""Get the complete domain name from an address."""
@@ -394,6 +399,10 @@ def getdomain(self):
394399
elif self.field[self.pos] == '.':
395400
self.pos += 1
396401
sdlist.append('.')
402+
elif self.field[self.pos] == '@':
403+
# bpo-34155: Don't parse domains with two `@` like
404+
# `a@malicious.org@important.com`.
405+
return EMPTYSTRING
397406
elif self.field[self.pos] in self.atomends:
398407
break
399408
else:

Lib/http/client.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,16 @@
141141
_is_legal_header_name = re.compile(rb'[^:\s][^:\r\n]*').fullmatch
142142
_is_illegal_header_value = re.compile(rb'\n(?![ \t])|\r(?![ \t\n])').search
143143

144+
# These characters are not allowed within HTTP URL paths.
145+
# See https://tools.ietf.org/html/rfc3986#section-3.3 and the
146+
# https://tools.ietf.org/html/rfc3986#appendix-A pchar definition.
147+
# Prevents CVE-2019-9740. Includes control characters such as \r\n.
148+
# We don't restrict chars above \x7f as putrequest() limits us to ASCII.
149+
_contains_disallowed_url_pchar_re = re.compile('[\x00-\x20\x7f]')
150+
# Arguably only these _should_ allowed:
151+
# _is_allowed_url_pchars_re = re.compile(r"^[/!$&'()*+,;=:@%a-zA-Z0-9._~-]+$")
152+
# We are more lenient for assumed real world compatibility purposes.
153+
144154
# We always set the Content-Length header for these methods because some
145155
# servers will otherwise respond with a 411
146156
_METHODS_EXPECTING_BODY = {'PATCH', 'POST', 'PUT'}
@@ -978,6 +988,12 @@ def putrequest(self, method, url, skip_host=False,
978988
self._method = method
979989
if not url:
980990
url = '/'
991+
# Prevent CVE-2019-9740.
992+
match = _contains_disallowed_url_pchar_re.search(url)
993+
if match:
994+
raise InvalidURL("URL can't contain control characters. {!r} "
995+
"(found at least {!r})".format(url,
996+
match.group()))
981997
request = '%s %s %s' % (method, url, self._http_vsn_str)
982998

983999
# Non-ASCII characters should have been eliminated earlier

Lib/pydoc_data/topics.py

Lines changed: 12422 additions & 78 deletions
Large diffs are not rendered by default.

Lib/test/capath/efa5f9c3.0

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIF9zCCA9+gAwIBAgIUH98b4Fw/DyugC9cV7VK7ZODzHsIwDQYJKoZIhvcNAQEL
3+
BQAwgYoxCzAJBgNVBAYTAlhZMRcwFQYDVQQIDA5DYXN0bGUgQW50aHJheDEYMBYG
4+
A1UEBwwPQXJndW1lbnQgQ2xpbmljMSMwIQYDVQQKDBpQeXRob24gU29mdHdhcmUg
5+
Rm91bmRhdGlvbjEjMCEGA1UEAwwac2VsZi1zaWduZWQucHl0aG9udGVzdC5uZXQw
6+
HhcNMTkwNTA4MDEwMjQzWhcNMjcwNzI0MDEwMjQzWjCBijELMAkGA1UEBhMCWFkx
7+
FzAVBgNVBAgMDkNhc3RsZSBBbnRocmF4MRgwFgYDVQQHDA9Bcmd1bWVudCBDbGlu
8+
aWMxIzAhBgNVBAoMGlB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uMSMwIQYDVQQD
9+
DBpzZWxmLXNpZ25lZC5weXRob250ZXN0Lm5ldDCCAiIwDQYJKoZIhvcNAQEBBQAD
10+
ggIPADCCAgoCggIBAMKdJlyCThkahwoBb7pl5q64Pe9Fn5jrIvzsveHTc97TpjV2
11+
RLfICnXKrltPk/ohkVl6K5SUZQZwMVzFubkyxE0nZPHYHlpiKWQxbsYVkYv01rix
12+
IFdLvaxxbGYke2jwQao31s4o61AdlsfK1SdpHQUynBBMssqI3SB4XPmcA7e+wEEx
13+
jxjVish4ixA1vuIZOx8yibu+CFCf/geEjoBMF3QPdzULzlrCSw8k/45iZCSoNbvK
14+
DoL4TVV07PHOxpheDh8ZQmepGvU6pVqhb9m4lgmV0OGWHgozd5Ur9CbTVDmxIEz3
15+
TSoRtNJK7qtyZdGNqwjksQxgZTjM/d/Lm/BJG99AiOmYOjsl9gbQMZgvQmMAtUsI
16+
aMJnQuZ6R+KEpW/TR5qSKLWZSG45z/op+tzI2m+cE6HwTRVAWbcuJxcAA55MZjqU
17+
OOOu3BBYMjS5nf2sQ9uoXsVBFH7i0mQqoW1SLzr9opI8KsWwFxQmO2vBxWYaN+lH
18+
OmwBZBwyODIsmI1YGXmTp09NxRYz3Qe5GCgFzYowpMrcxUC24iduIdMwwhRM7rKg
19+
7GtIWMSrFfuI1XCLRmSlhDbhNN6fVg2f8Bo9PdH9ihiIyxSrc+FOUasUYCCJvlSZ
20+
8hFUlLvcmrZlWuazohm0lsXuMK1JflmQr/DA/uXxP9xzFfRy+RU3jDyxJbRHAgMB
21+
AAGjUzBRMB0GA1UdDgQWBBSQJyxiPMR F438 K01i+0BsV9zUwDiBaHzAfBgNVHSMEGDAW
22+
gBSQJyxiPMRK01i+0BsV9zUwDiBaHzAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3
23+
DQEBCwUAA4ICAQCR+7a7N/m+WLkxPPIA/CB4MOr2Uf8ixTv435Nyv6rXOun0+lTP
24+
ExSZ0uYQ+L0WylItI3cQHULldDueD+s8TGzxf5woaLKf6tqyr0NYhKs+UeNEzDnN
25+
9PHQIhX0SZw3XyXGUgPNBfRCg2ZDdtMMdOU4XlQN/IN/9hbYTrueyY7eXq9hmtI9
26+
1srftAMqr9SR1JP7aHI6DVgrEsZVMTDnfT8WmLSGLlY1HmGfdEn1Ip5sbo9uSkiH
27+
AEPgPfjYIvR5LqTOMn4KsrlZyBbFIDh9Sl99M1kZzgH6zUGVLCDg1y6Cms69fx/e
28+
W1HoIeVkY4b4TY7Bk7JsqyNhIuqu7ARaxkdaZWhYaA2YyknwANdFfNpfH+elCLIk
29+
BUt5S3f4i7DaUePTvKukCZiCq4Oyln7RcOn5If73wCeLB/ZM9Ei1HforyLWP1CN8
30+
XLfpHaoeoPSWIveI0XHUl65LsPN2UbMbul/F23hwl+h8+BLmyAS680Yhn4zEN6Ku
31+
B7Po90HoFa1Du3bmx4jsN73UkT/dwMTi6K072FbipnC1904oGlWmLwvAHvrtxxmL
32+
Pl3pvEaZIu8wa/PNF6Y7J7VIewikIJq6Ta6FrWeFfzMWOj2qA1ZZi6fUaDSNYvuV
33+
J5quYKCc/O+I/yDDf8wyBbZ/gvUXzUHTMYGG+bFrn1p7XDbYYeEJ6R/xEg==
34+
-----END CERTIFICATE-----
Lines changed: 32 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,34 @@
11
-----BEGIN CERTIFICATE-----
2-
MIIClTCCAf6gAwIBAgIJAKGU95wKR8pTMA0GCSqGSIb3DQEBBQUAMHAxCzAJBgNV
3-
BAYTAlhZMRcwFQYDVQQHDA5DYXN0bGUgQW50aHJheDEjMCEGA1UECgwaUHl0aG9u
4-
IFNvZnR3YXJlIEZvdW5kYXRpb24xIzAhBgNVBAMMGnNlbGYtc2lnbmVkLnB5dGhv
5-
bnRlc3QubmV0MB4XDTE0MTEwMjE4MDkyOVoXDTI0MTAzMDE4MDkyOVowcDELMAkG
6-
A1UEBhMCWFkxFzAVBgNVBAcMDkNhc3RsZSBBbnRocmF4MSMwIQYDVQQKDBpQeXRo
7-
b24gU29mdHdhcmUgRm91bmRhdGlvbjEjMCEGA1UEAwwac2VsZi1zaWduZWQucHl0
8-
aG9udGVzdC5uZXQwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANDXQXW9tjyZ
9-
Xt0Iv2tLL1+jinr4wGg36ioLDLFkMf+2Y1GL0v0BnKYG4N1OKlAU15LXGeGer8vm
10-
Sv/yIvmdrELvhAbbo3w4a9TMYQA4XkIVLdvu3mvNOAet+8PMJxn26dbDhG809ALv
11-
EHY57lQsBS3G59RZyBPVqAqmImWNJnVzAgMBAAGjNzA1MCUGA1UdEQQeMByCGnNl
12-
bGYtc2lnbmVkLnB5dGhvbnRlc3QubmV0MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcN
13-
AQEFBQADgYEAIuzAhgMouJpNdf3URCHIineyoSt6WK/9+eyUcjlKOrDoXNZaD72h
14-
TXMeKYoWvJyVcSLKL8ckPtDobgP2OTt0UkyAaj0n+ZHaqq1lH2yVfGUA1ILJv515
15-
C8BqbvVZuqm3i7ygmw3bqE/lYMgOrYtXXnqOrz6nvsE6Yc9V9rFflOM=
2+
MIIF9zCCA9+gAwIBAgIUH98b4Fw/DyugC9cV7VK7ZODzHsIwDQYJKoZIhvcNAQEL
3+
BQAwgYoxCzAJBgNVBAYTAlhZMRcwFQYDVQQIDA5DYXN0bGUgQW50aHJheDEYMBYG
4+
A1UEBwwPQXJndW1lbnQgQ2xpbmljMSMwIQYDVQQKDBpQeXRob24gU29mdHdhcmUg
5+
Rm91bmRhdGlvbjEjMCEGA1UEAwwac2VsZi1zaWduZWQucHl0aG9udGVzdC5uZXQw
6+
HhcNMTkwNTA4MDEwMjQzWhcNMjcwNzI0MDEwMjQzWjCBijELMAkGA1UEBhMCWFkx
7+
FzAVBgNVBAgMDkNhc3RsZSBBbnRocmF4MRgwFgYDVQQHDA9Bcmd1bWVudCBDbGlu
8+
aWMxIzAhBgNVBAoMGlB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uMSMwIQYDVQQD
9+
DBpzZWxmLXNpZ25lZC5weXRob250ZXN0Lm5ldDCCAiIwDQYJKoZIhvcNAQEBBQAD
10+
ggIPADCCAgoCggIBAMKdJlyCThkahwoBb7pl5q64Pe9Fn5jrIvzsveHTc97TpjV2
11+
RLfICnXKrltPk/ohkVl6K5SUZQZwMVzFubkyxE0nZPHYHlpiKWQxbsYVkYv01rix
12+
IFdLvaxxbGYke2jwQao31s4o61AdlsfK1SdpHQUynBBMssqI3SB4XPmcA7e+wEEx
13+
jxjVish4ixA1vuIZOx8yibu+CFCf/geEjoBMF3QPdzULzlrCSw8k/45iZCSoNbvK
14+
DoL4TVV07PHOxpheDh8ZQmepGvU6pVqhb9m4lgmV0OGWHgozd5Ur9CbTVDmxIEz3
15+
TSoRtNJK7qtyZdGNqwjksQxgZTjM/d/Lm/BJG99AiOmYOjsl9gbQMZgvQmMAtUsI
16+
aMJnQuZ6R+KEpW/TR5qSKLWZSG45z/op+tzI2m+cE6HwTRVAWbcuJxcAA55MZjqU
17+
OOOu3BBYMjS5nf2sQ9uoXsVBFH7i0mQqoW1SLzr9opI8KsWwFxQmO2vBxWYaN+lH
18+
OmwBZBwyODIsmI1YGXmTp09NxRYz3Qe5GCgFzYowpMrcxUC24iduIdMwwhRM7rKg
19+
7GtIWMSrFfuI1XCLRmSlhDbhNN6fVg2f8Bo9PdH9ihiIyxSrc+FOUasUYCCJvlSZ
20+
8hFUlLvcmrZlWuazohm0lsXuMK1JflmQr/DA/uXxP9xzFfRy+RU3jDyxJbRHAgMB
21+
AAGjUzBRMB0GA1UdDgQWBBSQJyxiPMRK01i+0BsV9zUwDiBaHzAfBgNVHSMEGDAW
22+
gBSQJyxiPMRK01i+0BsV9zUwDiBaHzAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3
23+
DQEBCwUAA4ICAQCR+7a7N/m+WLkxPPIA/CB4MOr2Uf8ixTv435Nyv6rXOun0+lTP
24+
ExSZ0uYQ+L0WylItI3cQHULldDueD+s8TGzxf5woaLKf6tqyr0NYhKs+UeNEzDnN
25+
9PHQIhX0SZw3XyXGUgPNBfRCg2ZDdtMMdOU4XlQN/IN/9hbYTrueyY7eXq9hmtI9
26+
1srftAMqr9SR1JP7aHI6DVgrEsZVMTDnfT8WmLSGLlY1HmGfdEn1Ip5sbo9uSkiH
27+
AEPgPfjYIvR5LqTOMn4KsrlZyBbFIDh9Sl99M1kZzgH6zUGVLCDg1y6Cms69fx/e
28+
W1HoIeVkY4b4TY7Bk7JsqyNhIuqu7ARaxkdaZWhYaA2YyknwANdFfNpfH+elCLIk
29+
BUt5S3f4i7DaUePTvKukCZiCq4Oyln7RcOn5If73wCeLB/ZM9Ei1HforyLWP1CN8
30+
XLfpHaoeoPSWIveI0XHUl65LsPN2UbMbul/F23hwl+h8+BLmyAS680Yhn4zEN6Ku
31+
B7Po90HoFa1Du3bmx4jsN73UkT/dwMTi6K072FbipnC1904oGlWmLwvAHvrtxxmL
32+
Pl3pvEaZIu8wa/PNF6Y7J7VIewikIJq6Ta6FrWeFfzMWOj2qA1ZZi6fUaDSNYvuV
33+
J5quYKCc/O+I/yDDf8wyBbZ/gvUXzUHTMYGG+bFrn1p7XDbYYeEJ6R/xEg==
1634
-----END CERTIFICATE-----

Lib/test/test_asyncio/test_events.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,12 @@
3838
from asyncio import test_support as support
3939

4040

41+
if ssl is not None:
42+
IS_OPENSSL_1_1_1 = ssl.OPENSSL_VERSION_INFO >= (1, 1, 1)
43+
else:
44+
IS_OPENSSL_1_1_1 = False
45+
46+
4147
def data_file(filename):
4248
if hasattr(support, 'TEST_HOME_DIR'):
4349
fullname = os.path.join(support.TEST_HOME_DIR, filename)
@@ -1145,6 +1151,7 @@ def test_legacy_create_unix_server_ssl_verify_failed(self):
11451151
self.test_create_unix_server_ssl_verify_failed()
11461152

11471153
@unittest.skipIf(ssl is None, 'No ssl module')
1154+
@unittest.skipIf(IS_OPENSSL_1_1_1, "bpo-36576: fail on OpenSSL 1.1.1")
11481155
def test_create_server_ssl_match_failed(self):
11491156
proto = MyProto(loop=self.loop)
11501157
server, host, port = self._make_ssl_server(

Lib/test/test_email/test__header_value_parser.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1418,6 +1418,16 @@ def test_get_addr_spec_dot_atom(self):
14181418
self.assertEqual(addr_spec.domain, 'example.com')
14191419
self.assertEqual(addr_spec.addr_spec, 'star.a.star@example.com')
14201420

1421+
def test_get_addr_spec_multiple_domains(self):
1422+
with self.assertRaises(errors.HeaderParseError):
1423+
parser.get_addr_spec('star@a.star@example.com')
1424+
1425+
with self.assertRaises(errors.HeaderParseError):
1426+
parser.get_addr_spec('star@a@example.com')
1427+
1428+
with self.assertRaises(errors.HeaderParseError):
1429+
parser.get_addr_spec('star@172.17.0.1@example.com')
1430+
14211431
# get_obs_route
14221432

14231433
def test_get_obs_route_simple(self):
@@ -2563,6 +2573,13 @@ def mime_parameters_as_value(self,
25632573
# Defects are apparent missing *0*, and two 'out of sequence'.
25642574
[errors.InvalidHeaderDefect]*3),
25652575

2576+
# bpo-37461: Check that we don't go into an infinite loop.
2577+
'extra_dquote': (
2578+
'r*="\'a\'\\"',
2579+
' r="\\""',
2580+
'r*=\'a\'"',
2581+
[('r', '"')],
2582+
[errors.InvalidHeaderDefect]*2),
25662583
}
25672584

25682585
@parameterize

Lib/test/test_email/test_email.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3015,6 +3015,20 @@ def test_parseaddr_empty(self):
30153015
self.assertEqual(utils.parseaddr('<>'), ('', ''))
30163016
self.assertEqual(utils.formataddr(utils.parseaddr('<>')), '')
30173017

3018+
def test_parseaddr_multiple_domains(self):
3019+
self.assertEqual(
3020+
utils.parseaddr('a@b@c'),
3021+
('', '')
3022+
)
3023+
self.assertEqual(
3024+
utils.parseaddr('a@b.c@c'),
3025+
('', '')
3026+
)
3027+
self.assertEqual(
3028+
utils.parseaddr('a@172.17.0.1@c'),
3029+
('', '')
3030+
)
3031+
30183032
def test_noquote_dump(self):
30193033
self.assertEqual(
30203034
utils.formataddr(('A Silly Person', 'person@dom.ain')),

Lib/test/test_ssl.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
HOST = support.HOST
2626
IS_LIBRESSL = ssl.OPENSSL_VERSION.startswith('LibreSSL')
2727
IS_OPENSSL_1_1 = not IS_LIBRESSL and ssl.OPENSSL_VERSION_INFO >= (1, 1, 0)
28+
IS_OPENSSL_1_1_1 = not IS_LIBRESSL and ssl.OPENSSL_VERSION_INFO >= (1, 1, 1)
2829

2930

3031
def data_file(*name):
@@ -857,6 +858,7 @@ def test_ciphers(self):
857858
ctx.set_ciphers("^$:,;?*'dorothyx")
858859

859860
@skip_if_broken_ubuntu_ssl
861+
@unittest.skipIf(IS_OPENSSL_1_1_1, "bpo-36576: fail on OpenSSL 1.1.1")
860862
def test_options(self):
861863
ctx = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
862864
# OP_ALL | OP_NO_SSLv2 | OP_NO_SSLv3 is the default value
@@ -3047,6 +3049,7 @@ def test_version_basic(self):
30473049
self.assertIs(s.version(), None)
30483050

30493051
@unittest.skipUnless(ssl.HAS_ECDH, "test requires ECDH-enabled OpenSSL")
3052+
@unittest.skipIf(IS_OPENSSL_1_1_1, "bpo-36576: fail on OpenSSL 1.1.1")
30503053
def test_default_ecdh_curve(self):
30513054
# Issue #21015: elliptic curve-based Diffie Hellman key exchange
30523055
# should be enabled by default on SSL contexts.
@@ -3176,6 +3179,7 @@ def test_selected_alpn_protocol_if_server_uses_alpn(self):
31763179
self.assertIs(stats['client_alpn_protocol'], None)
31773180

31783181
@unittest.skipUnless(ssl.HAS_ALPN, "ALPN support needed for this test")
3182+
@unittest.skipIf(IS_OPENSSL_1_1_1, "bpo-36576: fail on OpenSSL 1.1.1")
31793183
def test_alpn_protocols(self):
31803184
server_protocols = ['foo', 'bar', 'milkshake']
31813185
protocol_tests = [
@@ -3356,6 +3360,7 @@ def cb_wrong_return_type(ssl_sock, server_name, initial_context):
33563360
self.assertEqual(cm.exception.reason, 'TLSV1_ALERT_INTERNAL_ERROR')
33573361
self.assertIn("TypeError", stderr.getvalue())
33583362

3363+
@unittest.skipIf(IS_OPENSSL_1_1_1, "bpo-36576: fail on OpenSSL 1.1.1")
33593364
def test_shared_ciphers(self):
33603365
server_context = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
33613366
server_context.load_cert_chain(SIGNED_CERTFILE)

0 commit comments

Comments
 (0)
0