Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
cd96b4f1
Commit
cd96b4f1
authored
Feb 18, 2012
by
Charles-François Natali
Browse files
Options
Browse Files
Download
Plain Diff
Issue #14001: CVE-2012-0845: xmlrpc: Fix an endless loop in SimpleXMLRPCServer
upon malformed POST request.
parents
ead1de2f
ec1712a1
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
15 additions
and
7 deletions
+15
-7
Lib/test/test_xmlrpc.py
Lib/test/test_xmlrpc.py
+8
-6
Lib/xmlrpc/server.py
Lib/xmlrpc/server.py
+4
-1
Misc/NEWS
Misc/NEWS
+3
-0
No files found.
Lib/test/test_xmlrpc.py
View file @
cd96b4f1
...
...
@@ -474,12 +474,7 @@ class BaseServerTestCase(unittest.TestCase):
def
tearDown
(
self
):
# wait on the server thread to terminate
self
.
evt
.
wait
(
4.0
)
# XXX this code does not work, and in fact stop_serving doesn't exist.
if
not
self
.
evt
.
is_set
():
self
.
evt
.
set
()
stop_serving
()
raise
RuntimeError
(
"timeout reached, test has failed"
)
self
.
evt
.
wait
()
# disable traceback reporting
xmlrpc
.
server
.
SimpleXMLRPCServer
.
_send_traceback_header
=
False
...
...
@@ -626,6 +621,13 @@ class SimpleServerTestCase(BaseServerTestCase):
server
=
xmlrpclib
.
ServerProxy
(
"http://%s:%d/RPC2"
%
(
ADDR
,
PORT
))
self
.
assertEqual
(
server
.
add
(
"a"
,
"
\
xe9
"
),
"a
\
xe9
"
)
def
test_partial_post
(
self
):
# Check that a partial POST doesn't make the server loop: issue #14001.
conn
=
http
.
client
.
HTTPConnection
(
ADDR
,
PORT
)
conn
.
request
(
'POST'
,
'/RPC2 HTTP/1.0
\
r
\
n
Content-Length: 100
\
r
\
n
\
r
\
n
bye'
)
conn
.
close
()
class
MultiPathServerTestCase
(
BaseServerTestCase
):
threadFunc
=
staticmethod
(
http_multi_server
)
request_count
=
2
...
...
Lib/xmlrpc/server.py
View file @
cd96b4f1
...
...
@@ -474,7 +474,10 @@ class SimpleXMLRPCRequestHandler(BaseHTTPRequestHandler):
L
=
[]
while
size_remaining
:
chunk_size
=
min
(
size_remaining
,
max_chunk_size
)
L
.
append
(
self
.
rfile
.
read
(
chunk_size
))
chunk
=
self
.
rfile
.
read
(
chunk_size
)
if
not
chunk
:
break
L
.
append
(
chunk
)
size_remaining
-=
len
(
L
[
-
1
])
data
=
b''
.
join
(
L
)
...
...
Misc/NEWS
View file @
cd96b4f1
...
...
@@ -116,6 +116,9 @@ Core and Builtins
Library
-------
- Issue #14001: CVE-2012-0845: xmlrpc: Fix an endless loop in
SimpleXMLRPCServer upon malformed POST request.
- Issue #2489: pty.spawn could consume 100% cpu when it encountered an EOF.
- Issue #13014: Fix a possible reference leak in SSLSocket.getpeercert().
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment