mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
movtextenc: fix pointer messup and out of array accesses
Fixes Ticket2187 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
f7b7f021e5
commit
b0635e2fcf
@ -21,6 +21,7 @@
|
||||
|
||||
#include <stdarg.h>
|
||||
#include "avcodec.h"
|
||||
#include "libavutil/avassert.h"
|
||||
#include "libavutil/avstring.h"
|
||||
#include "libavutil/intreadwrite.h"
|
||||
#include "ass_split.h"
|
||||
@ -87,15 +88,18 @@ static av_cold int mov_text_encode_init(AVCodecContext *avctx)
|
||||
static void mov_text_text_cb(void *priv, const char *text, int len)
|
||||
{
|
||||
MovTextContext *s = priv;
|
||||
av_assert0(s->end >= s->ptr);
|
||||
av_strlcpy(s->ptr, text, FFMIN(s->end - s->ptr, len + 1));
|
||||
s->ptr += len;
|
||||
s->ptr += FFMIN(s->end - s->ptr, len);
|
||||
}
|
||||
|
||||
static void mov_text_new_line_cb(void *priv, int forced)
|
||||
{
|
||||
MovTextContext *s = priv;
|
||||
av_assert0(s->end >= s->ptr);
|
||||
av_strlcpy(s->ptr, "\n", FFMIN(s->end - s->ptr, 2));
|
||||
s->ptr++;
|
||||
if (s->end > s->ptr)
|
||||
s->ptr++;
|
||||
}
|
||||
|
||||
static const ASSCodesCallbacks mov_text_callbacks = {
|
||||
|
Loading…
Reference in New Issue
Block a user