Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHendrik Leppkes <h.leppkes@gmail.com>2016-03-14 14:19:31 +0300
committerHendrik Leppkes <h.leppkes@gmail.com>2016-03-16 12:31:41 +0300
commiteae2d89bf715bc3edff478174b43e1f388e768bf (patch)
treee6100e71784b0ea55d279a4a2582e096cb2f2078 /libavformat/hls.c
parent0d4b8a2c163bd4f7e4ce579c139edd621c7832bf (diff)
hls: handle crypto in the protocol checks
Fixes issue 5248
Diffstat (limited to 'libavformat/hls.c')
-rw-r--r--libavformat/hls.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/libavformat/hls.c b/libavformat/hls.c
index 714d1e0e9a..fb87954316 100644
--- a/libavformat/hls.c
+++ b/libavformat/hls.c
@@ -594,12 +594,20 @@ static int open_url(AVFormatContext *s, AVIOContext **pb, const char *url,
{
HLSContext *c = s->priv_data;
AVDictionary *tmp = NULL;
- const char *proto_name = avio_find_protocol_name(url);
+ const char *proto_name = NULL;
int ret;
av_dict_copy(&tmp, opts, 0);
av_dict_copy(&tmp, opts2, 0);
+ if (av_strstart(url, "crypto", NULL)) {
+ if (url[6] == '+' || url[6] == ':')
+ proto_name = avio_find_protocol_name(url + 7);
+ }
+
+ if (!proto_name)
+ proto_name = avio_find_protocol_name(url);
+
if (!proto_name)
return AVERROR_INVALIDDATA;
@@ -608,6 +616,8 @@ static int open_url(AVFormatContext *s, AVIOContext **pb, const char *url,
return AVERROR_INVALIDDATA;
if (!strncmp(proto_name, url, strlen(proto_name)) && url[strlen(proto_name)] == ':')
;
+ else if (av_strstart(url, "crypto", NULL) && !strncmp(proto_name, url + 7, strlen(proto_name)) && url[7 + strlen(proto_name)] == ':')
+ ;
else if (strcmp(proto_name, "file") || !strncmp(url, "file,", 5))
return AVERROR_INVALIDDATA;