mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
avformat/hls: do not call ffurl_seek/ffurl_size on crypto protocol
ffurl_seek() will not work even when it should be a no-op, so do not call it on crypto protocol. Also replace use of ffurl_size() for the same reason. Reported-by: Michael Schenk <Michael.Schenk@albistechnologies.com> Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
This commit is contained in:
parent
517cc81e93
commit
39b192b8e1
@ -811,14 +811,14 @@ static void intercept_id3(struct playlist *pls, uint8_t *buf,
|
|||||||
|
|
||||||
if (ff_id3v2_match(buf, ID3v2_DEFAULT_MAGIC)) {
|
if (ff_id3v2_match(buf, ID3v2_DEFAULT_MAGIC)) {
|
||||||
struct segment *seg = pls->segments[pls->cur_seq_no - pls->start_seq_no];
|
struct segment *seg = pls->segments[pls->cur_seq_no - pls->start_seq_no];
|
||||||
int64_t segsize = seg->size >= 0 ? seg->size : ffurl_size(pls->input);
|
int64_t maxsize = seg->size >= 0 ? seg->size : 1024*1024;
|
||||||
int taglen = ff_id3v2_tag_len(buf);
|
int taglen = ff_id3v2_tag_len(buf);
|
||||||
int tag_got_bytes = FFMIN(taglen, *len);
|
int tag_got_bytes = FFMIN(taglen, *len);
|
||||||
int remaining = taglen - tag_got_bytes;
|
int remaining = taglen - tag_got_bytes;
|
||||||
|
|
||||||
if (taglen > segsize) {
|
if (taglen > maxsize) {
|
||||||
av_log(pls->ctx, AV_LOG_ERROR, "Too large HLS ID3 tag (%d vs %"PRId64")\n",
|
av_log(pls->ctx, AV_LOG_ERROR, "Too large HLS ID3 tag (%d > %"PRId64" bytes)\n",
|
||||||
taglen, segsize);
|
taglen, maxsize);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -956,7 +956,7 @@ static int open_input(HLSContext *c, struct playlist *pls)
|
|||||||
/* Seek to the requested position. If this was a HTTP request, the offset
|
/* Seek to the requested position. If this was a HTTP request, the offset
|
||||||
* should already be where want it to, but this allows e.g. local testing
|
* should already be where want it to, but this allows e.g. local testing
|
||||||
* without a HTTP server. */
|
* without a HTTP server. */
|
||||||
if (ret == 0) {
|
if (ret == 0 && seg->key_type == KEY_NONE) {
|
||||||
int seekret = ffurl_seek(pls->input, seg->url_offset, SEEK_SET);
|
int seekret = ffurl_seek(pls->input, seg->url_offset, SEEK_SET);
|
||||||
if (seekret < 0) {
|
if (seekret < 0) {
|
||||||
av_log(pls->parent, AV_LOG_ERROR, "Unable to seek to offset %"PRId64" of HLS segment '%s'\n", seg->url_offset, seg->url);
|
av_log(pls->parent, AV_LOG_ERROR, "Unable to seek to offset %"PRId64" of HLS segment '%s'\n", seg->url_offset, seg->url);
|
||||||
|
Loading…
Reference in New Issue
Block a user