Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[3.9] bpo-43882 Remove the newline, and tab early. From query and fragments. #25853

Merged
merged 2 commits into from
May 3, 2021
Merged

[3.9] bpo-43882 Remove the newline, and tab early. From query and fragments. #25853

merged 2 commits into from
May 3, 2021

Conversation

orsenthil
Copy link
Member

@orsenthil orsenthil commented May 3, 2021

Based on the review comment #25726 (review)

Moving the fix for removing newline and tabs early to include both query strings and fragments, (Entire URL).

https://bugs.python.org/issue43882

@orsenthil orsenthil requested a review from gpshead May 3, 2021 14:09
@orsenthil orsenthil changed the title bpo-43882 Remove the newline, and tab early. From query and fragments. [3.9] bpo-43882 Remove the newline, and tab early. From query and fragments. May 3, 2021
Lib/test/test_urlparse.py Show resolved Hide resolved
@@ -614,32 +614,40 @@ def test_urlsplit_attributes(self):

def test_urlsplit_remove_unsafe_bytes(self):
# Remove ASCII tabs and newlines from input
url = "http://www.python.org/java\nscript:\talert('msg\r\n')/#frag"
url = "http\t://www.python.org/java\nscript:\talert('msg\r\n')/?query\n=\tsomething#frag\nment"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i suggest also adding a \r in the middle of the netloc for good measure. www.python\r.org perhaps?

@bedevere-bot
Copy link

When you're done making the requested changes, leave the comment: I have made the requested changes; please review again.

@gpshead
Copy link
Member

gpshead commented May 3, 2021

fwiw this PR is against 3.9. i assume you'll "backport to main and 3.10" once those aren't actively being release branched and renamed?

@orsenthil
Copy link
Member Author

i assume you'll "backport to main and 3.10" once those aren't actively being release branched and renamed?

Yes, exactly. I wanted to time window to be utilized for 3.9 and 3.8.
I will port it to rest of the active branches immediately.

@orsenthil orsenthil merged commit 8a59574 into python:3.9 May 3, 2021
@bedevere-bot
Copy link

@orsenthil: Please replace # with GH- in the commit message next time. Thanks!


for b in _UNSAFE_URL_BYTES_TO_REMOVE:
url = url.replace(b, "")
scheme = scheme.replace(b, "")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

According to the typeshed, the scheme argument to urlparse is Optional. However, with this change, a value of None will result in an error like:

AttributeError: 'NoneType' object has no attribute 'replace'

I'm not sure whether the typeshed is wrong or if this line should be guarded with if scheme is not None, but we should definitely fix one or the other and perhaps improve the documentation on this option.

Thanks to @branchvincent for doing the digging and reporting this issue to me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants