diff mbox series

[FFmpeg-devel,v3,2/2] avformat/tests/url: add test cases for .. and last node is ..

Message ID 20200727130748.90906-2-lq@chinaffmpeg.org
State New
Headers show
Series [FFmpeg-devel,v3,1/2] avformat/url: rework for trim_double_dot_url
Related show

Checks

Context Check Description
andriy/default pending
andriy/make success Make finished
andriy/make_fate success Make fate finished

Commit Message

Steven Liu July 27, 2020, 1:07 p.m. UTC
Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
---
 libavformat/tests/url.c | 14 ++++++++++++++
 tests/ref/fate/url      | 12 ++++++++++++
 2 files changed, 26 insertions(+)

Comments

Zlomek, Josef July 27, 2020, 1:47 p.m. UTC | #1
This does not work for the following testcases, + lines are invalid:

+    test("/foo/bar", "..");
+    test("/foo/bar/baz", "..");

-                                          /foo/bar ..                   =>
/
-                                      /foo/bar/baz ..                   =>
/foo/
+                                          /foo/bar ..                   =>
//foo/bar/baz
+                                      /foo/bar/baz ..                   =>
/foo//foo/bar/baz


This one would be also nice if it worked:

+    test("http://server/foo/bar", "a/b/../c/d/../e../..f/.../other/url/");
-                             http://server/foo/bar
a/b/../c/d/../e../..f/.../other/url/.. =>
http://server/foo/a/c/e../..f/.../other/
+                             http://server/foo/bar
a/b/../c/d/../e../..f/.../other/url/.. =>
http://server/foo/a/c/e../..f/.../other


On Mon, Jul 27, 2020 at 3:08 PM Steven Liu <lq@chinaffmpeg.org> wrote:

> Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
> ---
>  libavformat/tests/url.c | 14 ++++++++++++++
>  tests/ref/fate/url      | 12 ++++++++++++
>  2 files changed, 26 insertions(+)
>
> diff --git a/libavformat/tests/url.c b/libavformat/tests/url.c
> index 1d961a1b43..0de511caf9 100644
> --- a/libavformat/tests/url.c
> +++ b/libavformat/tests/url.c
> @@ -24,6 +24,8 @@
>  static void test(const char *base, const char *rel)
>  {
>      char buf[200], buf2[200];
> +    memset(buf, 0, 200);
> +    memset(buf2, 0, 200);
>      ff_make_absolute_url(buf, sizeof(buf), base, rel);
>      printf("%50s %-20s => %s\n", base, rel, buf);
>      if (base) {
> @@ -66,7 +68,19 @@ int main(void)
>      test("http://server/foo/bar?param=value/with/slashes", "/baz");
>      test("http://server/foo/bar?param&otherparam", "?someparam");
>      test("http://server/foo/bar", "//other/url");
> +    test("http://server/foo/bar", "../other/url");
> +    test("http://server/foo/bar", "other/url");
>      test("http://server/foo/bar", "../../../../../other/url");
> +    test("http://server/foo/bar", "../../../../../other/url/test..mp3");
> +    test("http://server/foo/bar", "../../../../../other/url/test..");
> +    test("http://server/foo/bar", "../../../../../other/url/test/...");
> +    test("http://server/foo/bar",
> "../../../../../other/url/.../test/out");
> +    test("http://server/foo/bar",
> "../../../../../other/url/.../../test/out");
> +    test("http://server/foo/bar",
> "../../../../../other/url/.../..test/out");
> +    test("http://server/foo/bar", "../../../../../other/url/..");
> +    test("http://server/foo/bar", "../../../../../other/url/..mp3");
> +    test("http://server/foo/bar", "../../../../../other/url/..test/mp3");
> +    test("http://server/foo/bar", "../../../../../other/url/test../mp3");
>      test("http://server/foo/bar", "/../../../../../other/url");
>      test("http://server/foo/bar", "/test/../../../../../other/url");
>      test("http://server/foo/bar", "/test/../../test/../../../other/url");
> diff --git a/tests/ref/fate/url b/tests/ref/fate/url
> index 533ba2cb1e..35eee25f4a 100644
> --- a/tests/ref/fate/url
> +++ b/tests/ref/fate/url
> @@ -13,7 +13,19 @@ Testing ff_make_absolute_url:
>      http://server/foo/bar?param=value/with/slashes /baz
>  => http://server/baz
>              http://server/foo/bar?param&otherparam ?someparam
>  => http://server/foo/bar?someparam
>                               http://server/foo/bar //other/url
> => http://other/url
> +                             http://server/foo/bar ../other/url =>
> http://server/other/url
> +                             http://server/foo/bar other/url =>
> http://server/foo/other/url
>                               http://server/foo/bar
> ../../../../../other/url => http://server/other/url
> +                             http://server/foo/bar
> ../../../../../other/url/test..mp3 => http://server/other/url/test..mp3
> +                             http://server/foo/bar
> ../../../../../other/url/test.. => http://server/other/url/test..
> +                             http://server/foo/bar
> ../../../../../other/url/test/... => http://server/other/url/test/...
> +                             http://server/foo/bar
> ../../../../../other/url/.../test/out =>
> http://server/other/url/.../test/out
> +                             http://server/foo/bar
> ../../../../../other/url/.../../test/out =>
> http://server/other/url/test/out
> +                             http://server/foo/bar
> ../../../../../other/url/.../..test/out =>
> http://server/other/url/.../..test/out
> +                             http://server/foo/bar
> ../../../../../other/url/.. => http://server/other
> +                             http://server/foo/bar
> ../../../../../other/url/..mp3 => http://server/other/url/..mp3
> +                             http://server/foo/bar
> ../../../../../other/url/..test/mp3 => http://server/other/url/..test/mp3
> +                             http://server/foo/bar
> ../../../../../other/url/test../mp3 => http://server/other/url/test../mp3
>                               http://server/foo/bar
> /../../../../../other/url => http://server/other/url
>                               http://server/foo/bar
> /test/../../../../../other/url => http://server/other/url
>                               http://server/foo/bar
> /test/../../test/../../../other/url => http://server/other/url
> --
> 2.25.0
>
>
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
diff mbox series

Patch

diff --git a/libavformat/tests/url.c b/libavformat/tests/url.c
index 1d961a1b43..0de511caf9 100644
--- a/libavformat/tests/url.c
+++ b/libavformat/tests/url.c
@@ -24,6 +24,8 @@ 
 static void test(const char *base, const char *rel)
 {
     char buf[200], buf2[200];
+    memset(buf, 0, 200);
+    memset(buf2, 0, 200);
     ff_make_absolute_url(buf, sizeof(buf), base, rel);
     printf("%50s %-20s => %s\n", base, rel, buf);
     if (base) {
@@ -66,7 +68,19 @@  int main(void)
     test("http://server/foo/bar?param=value/with/slashes", "/baz");
     test("http://server/foo/bar?param&otherparam", "?someparam");
     test("http://server/foo/bar", "//other/url");
+    test("http://server/foo/bar", "../other/url");
+    test("http://server/foo/bar", "other/url");
     test("http://server/foo/bar", "../../../../../other/url");
+    test("http://server/foo/bar", "../../../../../other/url/test..mp3");
+    test("http://server/foo/bar", "../../../../../other/url/test..");
+    test("http://server/foo/bar", "../../../../../other/url/test/...");
+    test("http://server/foo/bar", "../../../../../other/url/.../test/out");
+    test("http://server/foo/bar", "../../../../../other/url/.../../test/out");
+    test("http://server/foo/bar", "../../../../../other/url/.../..test/out");
+    test("http://server/foo/bar", "../../../../../other/url/..");
+    test("http://server/foo/bar", "../../../../../other/url/..mp3");
+    test("http://server/foo/bar", "../../../../../other/url/..test/mp3");
+    test("http://server/foo/bar", "../../../../../other/url/test../mp3");
     test("http://server/foo/bar", "/../../../../../other/url");
     test("http://server/foo/bar", "/test/../../../../../other/url");
     test("http://server/foo/bar", "/test/../../test/../../../other/url");
diff --git a/tests/ref/fate/url b/tests/ref/fate/url
index 533ba2cb1e..35eee25f4a 100644
--- a/tests/ref/fate/url
+++ b/tests/ref/fate/url
@@ -13,7 +13,19 @@  Testing ff_make_absolute_url:
     http://server/foo/bar?param=value/with/slashes /baz                 => http://server/baz
             http://server/foo/bar?param&otherparam ?someparam           => http://server/foo/bar?someparam
                              http://server/foo/bar //other/url          => http://other/url
+                             http://server/foo/bar ../other/url => http://server/other/url
+                             http://server/foo/bar other/url => http://server/foo/other/url
                              http://server/foo/bar ../../../../../other/url => http://server/other/url
+                             http://server/foo/bar ../../../../../other/url/test..mp3 => http://server/other/url/test..mp3
+                             http://server/foo/bar ../../../../../other/url/test.. => http://server/other/url/test..
+                             http://server/foo/bar ../../../../../other/url/test/... => http://server/other/url/test/...
+                             http://server/foo/bar ../../../../../other/url/.../test/out => http://server/other/url/.../test/out
+                             http://server/foo/bar ../../../../../other/url/.../../test/out => http://server/other/url/test/out
+                             http://server/foo/bar ../../../../../other/url/.../..test/out => http://server/other/url/.../..test/out
+                             http://server/foo/bar ../../../../../other/url/.. => http://server/other
+                             http://server/foo/bar ../../../../../other/url/..mp3 => http://server/other/url/..mp3
+                             http://server/foo/bar ../../../../../other/url/..test/mp3 => http://server/other/url/..test/mp3
+                             http://server/foo/bar ../../../../../other/url/test../mp3 => http://server/other/url/test../mp3
                              http://server/foo/bar /../../../../../other/url => http://server/other/url
                              http://server/foo/bar /test/../../../../../other/url => http://server/other/url
                              http://server/foo/bar /test/../../test/../../../other/url => http://server/other/url