ffmpeg | branch: release/4.3 | ruiquan.crq <[email protected]> | Sat Oct 
17 23:17:14 2020 +0800| [c464b5c205eb81f23d4f6f7e2c4c9fda79fbe259] | committer: 
Marton Balint

lavf/url: fix relative url parsing when the query string or fragment has a colon

This disallows the usage of ? and # in libavformat specific scheme options
(e.g. subfile,,start,32815239,end,0,,:video.ts) but this change was considered
acceptable.

Signed-off-by: ruiquan.crq <[email protected]>
Signed-off-by: Marton Balint <[email protected]>
(cherry picked from commit ae9a1a96982669926a4ecb92b066814f5f27dc38)

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=c464b5c205eb81f23d4f6f7e2c4c9fda79fbe259
---

 libavformat/tests/url.c | 2 ++
 libavformat/url.c       | 2 +-
 tests/ref/fate/url      | 8 ++++++++
 3 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/libavformat/tests/url.c b/libavformat/tests/url.c
index 2440ae08bc..2eb597bb5e 100644
--- a/libavformat/tests/url.c
+++ b/libavformat/tests/url.c
@@ -90,6 +90,8 @@ int main(void)
     test_decompose("http://[::1]/dev/null";);
     test_decompose("http://[::1]:8080/dev/null";);
     test_decompose("//ffmpeg/dev/null");
+    test_decompose("test?url=http://server/path";);
+    test_decompose("dummy.mp4#t=0:02:00,121.5");
 
     printf("Testing ff_make_absolute_url:\n");
     test(NULL, "baz");
diff --git a/libavformat/url.c b/libavformat/url.c
index 3c858f0257..6db4b4e1ae 100644
--- a/libavformat/url.c
+++ b/libavformat/url.c
@@ -97,7 +97,7 @@ int ff_url_decompose(URLComponents *uc, const char *url, 
const char *end)
 
     /* scheme */
     uc->scheme = cur;
-    p = find_delim(":/", cur, end); /* lavf "schemes" can contain options */
+    p = find_delim(":/?#", cur, end); /* lavf "schemes" can contain options 
but not some RFC 3986 delimiters */
     if (*p == ':')
         cur = p + 1;
 
diff --git a/tests/ref/fate/url b/tests/ref/fate/url
index 7e6395c47b..08e80def7d 100644
--- a/tests/ref/fate/url
+++ b/tests/ref/fate/url
@@ -43,6 +43,14 @@ http://[::1]:8080/dev/null =>
   host: ffmpeg
   path: /dev/null
 
+test?url=http://server/path =>
+  path: test
+  query: ?url=http://server/path
+
+dummy.mp4#t=0:02:00,121.5 =>
+  path: dummy.mp4
+  fragment: #t=0:02:00,121.5
+
 Testing ff_make_absolute_url:
                                             (null) baz                  => baz
                                           /foo/bar baz                  => 
/foo/baz

_______________________________________________
ffmpeg-cvslog mailing list
[email protected]
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
[email protected] with subject "unsubscribe".

Reply via email to