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
e99c6bc0
Commit
e99c6bc0
authored
9 years ago
by
Donald Stufft
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Closes #23801 - Ignore entire preamble to multipart in cgi.FieldStorage
parent
f331c5af
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
29 additions
and
2 deletions
+29
-2
Lib/cgi.py
Lib/cgi.py
+7
-2
Lib/test/test_cgi.py
Lib/test/test_cgi.py
+19
-0
Misc/NEWS
Misc/NEWS
+3
-0
No files found.
Lib/cgi.py
View file @
e99c6bc0
...
...
@@ -693,8 +693,13 @@ class FieldStorage:
raise
ValueError
(
"%s should return bytes, got %s"
\
%
(
self
.
fp
,
type
(
first_line
).
__name__
))
self
.
bytes_read
+=
len
(
first_line
)
# first line holds boundary ; ignore it, or check that
# b"--" + ib == first_line.strip() ?
# Ensure that we consume the file until we've hit our inner boundary
while
(
first_line
.
strip
()
!=
(
b"--"
+
self
.
innerboundary
)
and
first_line
):
first_line
=
self
.
fp
.
readline
()
self
.
bytes_read
+=
len
(
first_line
)
while
True
:
parser
=
FeedParser
()
hdr_text
=
b""
...
...
This diff is collapsed.
Click to expand it.
Lib/test/test_cgi.py
View file @
e99c6bc0
...
...
@@ -248,6 +248,25 @@ class CgiTests(unittest.TestCase):
got
=
getattr
(
fs
.
list
[
x
],
k
)
self
.
assertEqual
(
got
,
exp
)
def
test_fieldstorage_multipart_leading_whitespace
(
self
):
env
=
{
'REQUEST_METHOD'
:
'POST'
,
'CONTENT_TYPE'
:
'multipart/form-data; boundary={}'
.
format
(
BOUNDARY
),
'CONTENT_LENGTH'
:
'560'
}
# Add some leading whitespace to our post data that will cause the
# first line to not be the innerboundary.
fp
=
BytesIO
(
b"
\
r
\
n
"
+
POSTDATA
.
encode
(
'latin-1'
))
fs
=
cgi
.
FieldStorage
(
fp
,
environ
=
env
,
encoding
=
"latin-1"
)
self
.
assertEqual
(
len
(
fs
.
list
),
4
)
expect
=
[{
'name'
:
'id'
,
'filename'
:
None
,
'value'
:
'1234'
},
{
'name'
:
'title'
,
'filename'
:
None
,
'value'
:
''
},
{
'name'
:
'file'
,
'filename'
:
'test.txt'
,
'value'
:
b'Testing 123.
\
n
'
},
{
'name'
:
'submit'
,
'filename'
:
None
,
'value'
:
' Add '
}]
for
x
in
range
(
len
(
fs
.
list
)):
for
k
,
exp
in
expect
[
x
].
items
():
got
=
getattr
(
fs
.
list
[
x
],
k
)
self
.
assertEqual
(
got
,
exp
)
def
test_fieldstorage_multipart_non_ascii
(
self
):
#Test basic FieldStorage multipart parsing
env
=
{
'REQUEST_METHOD'
:
'POST'
,
...
...
This diff is collapsed.
Click to expand it.
Misc/NEWS
View file @
e99c6bc0
...
...
@@ -124,6 +124,9 @@ Library
- Issue #23361: Fix possible overflow in Windows subprocess creation code.
- Issue #23801: Fix issue where cgi.FieldStorage did not always ignore the
entire preamble to a multipart body.
Tests
-----
...
...
This diff is collapsed.
Click to expand it.
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