8000 Merge tag v3.5.8 into branch 3.5-slp. · stackless-dev/stackless@e2563c3 · 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 e2563c3

Browse files
author
Anselm Kruis
committed
Merge tag v3.5.8 into branch 3.5-slp.
2 parents 8389534 + ac39a51 commit e2563c3

File tree

8 files changed

+62
-9
lines changed

8 files changed

+62
-9
lines changed

Include/patchlevel.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@
1919
#define PY_MAJOR_VERSION 3
2020
#define PY_MINOR_VERSION 5
2121
#define PY_MICRO_VERSION 8
22-
#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_GAMMA
23-
#define PY_RELEASE_SERIAL 2
22+
#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL
23+
#define PY_RELEASE_SERIAL 0
2424

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

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

Lib/pydoc_data/topics.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# -*- coding: utf-8 -*-
2-
# Autogenerated by Sphinx on Sat Oct 12 12:05:57 2019
2+
# Autogenerated by Sphinx on Mon Oct 28 23:07:04 2019
33
topics = {'assert': 'The "assert" statement\n'
44
'**********************\n'
55
'\n'

Lib/test/test_dbm.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,7 @@ def delete_files():
3939

4040

4141
class AnyDBMTestCase:
42-
_dict = {'0': b'',
43-
'a': b'Python:',
42+
_dict = {'a': b'Python:',
4443
'b': b'Programming',
4544
'c': b'the',
4645
'd': b'way',
@@ -101,6 +100,20 @@ def test_anydbm_keys(self):
101100
keys = self.keys_helper(f)
102101
f.close()
103102

103+
def test_empty_value(self):
104+
if getattr(dbm._defaultmod, 'library', None) == 'Berkeley DB':
105+
self.skipTest("Berkeley DB doesn't distinguish the empty value "
106+
"from the absent one")
107+
f = dbm.open(_fname, 'c')
108+
self.assertEqual(f.keys(), [])
109+
f[b'empty'] = b''
110+
self.assertEqual(f.keys(), [b'empty'])
111+
self.assertIn(b'empty', f)
112+
self.assertEqual(f[b'empty'], b'')
113+
self.assertEqual(f.get(b'empty'), b'')
114+
self.assertEqual(f.setdefault(b'empty'), b'')
115+
f.close()
116+
104117
def test_anydbm_access(self):
105118
self.init_db()
106119
f = dbm.open(_fname, 'r')

Lib/test/test_dbm_ndbm.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,20 @@ def test_keys(self):
2929
self.assertEqual(self.d[b'bytes'], b'data')
3030
self.d.close()
3131

32+
def test_empty_value(self):
33+
if dbm.ndbm.library == 'Berkeley DB':
34+
self.skipTest("Berkeley DB doesn't distinguish the empty value "
35+
"from the absent one")
36+
self.d = dbm.ndbm.open(self.filename, 'c')
37+
self.assertEqual(self.d.keys(), [])
38+
self.d['empty'] = ''
39+
self.assertEqual(self.d.keys(), [b'empty'])
40+
self.assertIn(b'empty', self.d)
41+
self.assertEqual(self.d[b'empty'], b'')
42+
self.assertEqual(self.d.get(b'empty'), b'')
43+
self.assertEqual(self.d.setdefault(b'empty'), b'')
44+
self.d.close()
45+
3246
def test_modes(self):
3347
for mode in ['r', 'rw', 'w', 'n']:
3448
try:

Lib/test/test_docxmlrpc.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from xmlrpc.server import DocXMLRPCServer
22
import http.client
3+
import re
34
import sys
45
from test import support
56
threading = support.import_module('threading')
@@ -193,6 +194,21 @@ def test_annotations(self):
193194
b'method_annotation</strong></a>(x: bytes)</dt></dl>'),
194195
response.read())
195196

197+
def test_server_title_escape(self):
198+
# bpo-38243: Ensure that the server title and documentation
199+
# are escaped for HTML.
200+
self.serv.set_server_title('test_title<script>')
201+
self.serv.set_server_documentation('test_documentation<script>')
202+
self.assertEqual('test_title<script>', self.serv.server_title)
203+
self.assertEqual('test_documentation<script>',
204+
self.serv.server_documentation)
205+
206+
generated = self.serv.generate_html_documentation()
207+
title = re.search(r'<title>(.+?)</title>', generated).group()
208+
documentation = re.search(r'<p><tt>(.+?)</tt></p>', generated).group()
209+
self.assertEqual('<title>Python: test_title&lt;script&gt;</title>', title)
210+
self.assertEqual('<p><tt>test_documentation&lt;script&gt;</tt></p>', documentation)
211+
196212

197213
if __name__ == '__main__':
198214
unittest.main()

Lib/xmlrpc/server.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ def export_add(self, x, y):
106106

107107
from xmlrpc.client import Fault, dumps, loads, gzip_encode, gzip_decode
108108
from http.server import BaseHTTPRequestHandler
109+
import html
109110
import http.server
110111
import socketserver
111112
import sys
@@ -892,7 +893,7 @@ def generate_html_documentation(self):
892893
methods
893894
)
894895

895-
return documenter.page(self.server_title, documentation)
896+
return documenter.page(html.escape(self.server_title), documentation)
896897

897898
class DocXMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
898899
"""XML-RPC and documentation request handler class.

Misc/NEWS.d/3.5.8.rst

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
.. bpo: 38243
2+
.. date: 2019-09-25-13-21-09
3+
.. nonce: 1pfz24
4+
.. release date: 2019-10-28
5+
.. section: Security
6+
7+
Escape the server title of :class:`xmlrpc.server.DocXMLRPCServer` when
8+
rendering the document page as HTML. (Contributed by Dong-hee Na in
9+
:issue:`38243`.)

README

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
This is Python version 3.5.8rc2
2-
===============================
1+
This is Python version 3.5.8
2+
============================
33

44
Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
55
2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Python Software

0 commit comments

Comments
 (0)
0