1
0
Fork 0
mirror of https://github.com/warmcat/libwebsockets.git synced 2025-03-23 00:00:06 +01:00
libwebsockets/READMEs/README.http_parser.md

34 lines
935 B
Markdown
Raw Normal View History

# Notes on http parser corner cases
## Dealing with %00
%00 is considered illegal in
- the path part of the URL. A lot of user code handles it as a NUL terminated string,
even though the header get apis are based around length. So it is disallowed to
avoid ambiguity.
- the name part of a urlarg, like ?name=value
%00 is valid in
- the value part of a urlarg, like ?name=value
When the parser sees %00 where it is not allowed, it simply drops the connection.
## Note on proper urlarg handling
urlargs are allowed to contain non-NUL terminated binary. So it is important to
use the length-based urlarg apis
- `lws_hdr_copy_fragment()`
- `lws_get_urlarg_by_name_safe()`
The non-length based urlarg api
- `lws_get_urlarg_by_name()`
...is soft-deprecated, it's still allowed but it will be fooled by the first %00
seen in the argument into truncating the argument. Use `lws_get_urlarg_by_name_safe()`
instead.