You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-15 14:13:16 +02:00
lavc/ass: error if not passed exactly 1 rect
This never produced valid output.
This commit is contained in:
@@ -45,27 +45,26 @@ static int ass_encode_frame(AVCodecContext *avctx,
|
|||||||
unsigned char *buf, int bufsize,
|
unsigned char *buf, int bufsize,
|
||||||
const AVSubtitle *sub)
|
const AVSubtitle *sub)
|
||||||
{
|
{
|
||||||
int i, len, total_len = 0;
|
int len;
|
||||||
|
|
||||||
for (i=0; i<sub->num_rects; i++) {
|
if (sub->num_rects != 1) {
|
||||||
const char *ass = sub->rects[i]->ass;
|
av_log(avctx, AV_LOG_ERROR, "Only one rect per AVSubtitle is supported in ASS.\n");
|
||||||
|
return AVERROR_INVALIDDATA;
|
||||||
|
}
|
||||||
|
|
||||||
if (sub->rects[i]->type != SUBTITLE_ASS) {
|
if (sub->rects[0]->type != SUBTITLE_ASS) {
|
||||||
av_log(avctx, AV_LOG_ERROR, "Only SUBTITLE_ASS type supported.\n");
|
av_log(avctx, AV_LOG_ERROR, "Only SUBTITLE_ASS type supported.\n");
|
||||||
return AVERROR(EINVAL);
|
return AVERROR(EINVAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
len = av_strlcpy(buf+total_len, ass, bufsize-total_len);
|
len = av_strlcpy(buf, sub->rects[0]->ass, bufsize);
|
||||||
|
|
||||||
if (len > bufsize-total_len-1) {
|
if (len > bufsize - 1) {
|
||||||
av_log(avctx, AV_LOG_ERROR, "Buffer too small for ASS event.\n");
|
av_log(avctx, AV_LOG_ERROR, "Buffer too small for ASS event.\n");
|
||||||
return AVERROR_BUFFER_TOO_SMALL;
|
return AVERROR_BUFFER_TOO_SMALL;
|
||||||
}
|
}
|
||||||
|
|
||||||
total_len += len;
|
return len;
|
||||||
}
|
|
||||||
|
|
||||||
return total_len;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if CONFIG_SSA_ENCODER
|
#if CONFIG_SSA_ENCODER
|
||||||
|
Reference in New Issue
Block a user