http-parser
http-parser copied to clipboard
Fix http_parser_parse_url to handle very long URLs
Earlier http_parser_parse_url would incorrectly parse very long URLs: The resulting off and len parameters would just get truncated. Even though very long URLs are typically considered invalid by servers they could still end up being parsed by http_parser_parse_url. Thus it's better handle this situation gracefully.
This change is unfortunately not backwards ABI compatible due to changes in http_parser_url structure field types, hence the major version number bump.
I'd also note that the issue of failing to parse very long URLs properly might also have a security impact: For example if a security critical code would use http_parser_parse_url function to parse the path of a request and then examine the path to see if it should be passed thru some filter. Due to this issue the parsed and actual paths could differ, which might result in filter bypass.
However, to be exploitable the actual implementation would still been to accept the very long URL.
If this PR is deemed too drastic of a change, alternatively adding checks for off
and len
overflows should be done instead.