bugfix: allow @ and : in paths

gmid would disallow the '@' and ':' characters in paths (unless
percent-encoded.)  Issue reported by freezr.
This commit is contained in:
Omar Polo 2022-07-04 08:15:39 +00:00
parent df9b379081
commit 5e41063f1b
2 changed files with 6 additions and 0 deletions

2
iri.c
View File

@ -352,6 +352,8 @@ parse_path(struct parser *p)
while (unreserved(*p->iri)
|| sub_delimiters(*p->iri)
|| *p->iri == '@'
|| *p->iri == ':'
|| *p->iri == '/'
|| parse_pct_encoded(p)
|| valid_multibyte_utf8(p))

View File

@ -198,6 +198,10 @@ main(void)
PASS,
IRI("http", "a", "", "", "", ""),
"avoid infinite loops (see v1.6.1)");
TEST("gemini://example.com/@f:b!(z$&)/baz",
PASS,
IRI("gemini", "example.com", "", "@f:b!(z$&)/baz", "", ""),
"allow @, :, !, (), $ and & in paths");
/* query */
TEST("foo://example.com/foo/?gne",