|
|
|
@ -494,6 +494,16 @@ static int save_avio_options(AVFormatContext *s) |
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int nested_io_open(AVFormatContext *s, AVIOContext **pb, const char *url, |
|
|
|
|
int flags, AVDictionary **opts) |
|
|
|
|
{ |
|
|
|
|
av_log(s, AV_LOG_ERROR, |
|
|
|
|
"A HLS playlist item '%s' referred to an external file '%s'. " |
|
|
|
|
"Opening this file was forbidden for security reasons\n", |
|
|
|
|
s->filename, url); |
|
|
|
|
return AVERROR(EPERM); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int hls_read_header(AVFormatContext *s) |
|
|
|
|
{ |
|
|
|
|
HLSContext *c = s->priv_data; |
|
|
|
@ -579,6 +589,7 @@ static int hls_read_header(AVFormatContext *s) |
|
|
|
|
goto fail; |
|
|
|
|
} |
|
|
|
|
v->ctx->pb = &v->pb; |
|
|
|
|
v->ctx->io_open = nested_io_open; |
|
|
|
|
v->stream_offset = stream_offset; |
|
|
|
|
ret = avformat_open_input(&v->ctx, v->segments[0]->url, in_fmt, NULL); |
|
|
|
|
if (ret < 0) |
|
|
|
|