summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2017-06-02 17:50:45 +0200
committerDaniel Stenberg <daniel@haxx.se>2017-06-03 00:11:51 +0200
commitcfd3e8f399c2bb2a7fdc51f01ddc12548b4f3892 (patch)
tree22fb75ddc49fbf04630071c51a703e52b64ff12f
parent10e02bc36a92a1d33067d72906784441d626c010 (diff)
downloadcurl-cfd3e8f399c2bb2a7fdc51f01ddc12548b4f3892.tar.gz
dedotdot: fixed output for ".." and "." only input
Found when updating test 1395, which I did to increase test coverage of this source file... Closes #1535
-rw-r--r--lib/dotdot.c3
-rw-r--r--tests/unit/unit1395.c9
2 files changed, 10 insertions, 2 deletions
diff --git a/lib/dotdot.c b/lib/dotdot.c
index ea7c8a04f..20603bcab 100644
--- a/lib/dotdot.c
+++ b/lib/dotdot.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -147,6 +147,7 @@ char *Curl_dedotdotify(const char *input)
else if(!strcmp(".", clone) || !strcmp("..", clone)) {
*clone=0;
+ *out=0;
}
else {
diff --git a/tests/unit/unit1395.c b/tests/unit/unit1395.c
index ba8e14f45..13ea97bc4 100644
--- a/tests/unit/unit1395.c
+++ b/tests/unit/unit1395.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -65,6 +65,13 @@ UNITTEST_START
{ "/", "/" },
{ "", "" },
{ "/.../", "/.../" },
+ { "./moo", "moo" },
+ { "../moo", "moo" },
+ { "/.", "/" },
+ { "/..", "/" },
+ { "/moo/..", "/" },
+ { "..", "" },
+ { ".", "" },
};
for(i=0; i < sizeof(pairs)/sizeof(pairs[0]); i++) {