mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
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 <caihaoning83@gmail.com> Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
parent
37d742b607
commit
ae9a1a9698
@ -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");
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user