提交 ffabff1b 编写于 作者: M Marton Balint

avformat/concatdec: add support for very long line sizes

Fixes ticket #6761.
Signed-off-by: NMarton Balint <cus@passwd.hu>
上级 dcb2ef22
......@@ -20,6 +20,7 @@
#include "libavutil/avassert.h"
#include "libavutil/avstring.h"
#include "libavutil/bprint.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/opt.h"
#include "libavutil/parseutils.h"
......@@ -386,18 +387,18 @@ static int concat_read_close(AVFormatContext *avf)
static int concat_read_header(AVFormatContext *avf)
{
ConcatContext *cat = avf->priv_data;
uint8_t buf[4096];
AVBPrint bp;
uint8_t *cursor, *keyword;
int ret, line = 0, i;
int line = 0, i;
unsigned nb_files_alloc = 0;
ConcatFile *file = NULL;
int64_t time = 0;
int64_t ret, time = 0;
while (1) {
if ((ret = ff_get_line(avf->pb, buf, sizeof(buf))) <= 0)
break;
av_bprint_init(&bp, 0, AV_BPRINT_SIZE_UNLIMITED);
while ((ret = ff_read_line_to_bprint_overwrite(avf->pb, &bp)) >= 0) {
line++;
cursor = buf;
cursor = bp.str;
keyword = get_keyword(&cursor);
if (!*keyword || *keyword == '#')
continue;
......@@ -473,7 +474,7 @@ static int concat_read_header(AVFormatContext *avf)
FAIL(AVERROR_INVALIDDATA);
}
}
if (ret < 0)
if (ret != AVERROR_EOF && ret < 0)
goto fail;
if (!cat->nb_files)
FAIL(AVERROR_INVALIDDATA);
......@@ -499,9 +500,11 @@ static int concat_read_header(AVFormatContext *avf)
MATCH_ONE_TO_ONE;
if ((ret = open_file(avf, 0)) < 0)
goto fail;
av_bprint_finalize(&bp, NULL);
return 0;
fail:
av_bprint_finalize(&bp, NULL);
concat_read_close(avf);
return ret;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册