commit - 3c1cf9d07cb679ba444566159538b510902f2de9
commit + 6a9ae707737d978bccbabdc36beae509151a7be2
blob - 8c020392806387e3f84ca44d08d68c89abba42e9
blob + 1901dacc40fcb2989ebb0fb7fd604756a49d7045
--- iri.c
+++ iri.c
/* 2. eliminate each . path name element */
for (i = path; *i; ++i) {
- if ((i == path || *i == '/') && *(i+1) == '.' &&
- *(i+2) == '/') {
+ if ((i == path || *i == '/') &&
+ *i != '.' && i[1] == '.' && i[2] == '/') {
/* move also the \0 */
memmove(i, i+2, strlen(i)-1);
i--;
blob - 6200cb7422181a3280a9e6b9e1ab5cd96ebd0f93
blob + 18a102039c98f6227da39ab5bdb7dbc3b7ff8b3c
--- iri_test.c
+++ iri_test.c
FAIL,
empty,
"reject paths that would escape the root");
+ TEST("gemini://omarpolo.com/foo/../../",
+ FAIL,
+ empty,
+ "reject paths that would escape the root")
TEST("gemini://omarpolo.com/foo/../foo/../././/bar/baz/.././.././/",
PASS,
IRI("gemini", "omarpolo.com", "", "", "", ""),