Skip to content

Enhance process_request to handle non-numeric content length #430

New issue

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

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

Already on GitHub? # to your account

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

helloleonguan
Copy link

We encountered errors with non-numeric content lengths. Exceptions are threw with 500. It's better to handle ill-formatted HTTP headers.

content_length = int(request.META.get("CONTENT_LENGTH") or 0)
content_length = 0
raw_content_length = request.META.get("CONTENT_LENGTH", "")
if raw_content_length.isdigit():
Copy link
Contributor

Choose a reason for hiding this comment

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

I wouldn't bother with the isdigit() call, but use try..except ValueError, TypeError instead: isdigit would return True for digits that int() would still fail to convert, for example . It is unlikely that this would happen in real world, but it is theoretically possible.

I would also add a unit test for this change.

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants