summaryrefslogtreecommitdiffstats
path: root/libavcodec/movtextenc.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-02-05 21:54:02 +0100
committerMichael Niedermayer <michaelni@gmx.at>2013-02-05 21:54:02 +0100
commitb0635e2fcf80717dd618ef75d3317d62ed85c300 (patch)
treeebb3f2584358d25192e09113f8bbfef8f9cf5d1d /libavcodec/movtextenc.c
parentf7b7f021e52827ccc82e0f1338b5738d4b653ae2 (diff)
downloadffmpeg-streaming-b0635e2fcf80717dd618ef75d3317d62ed85c300.zip
ffmpeg-streaming-b0635e2fcf80717dd618ef75d3317d62ed85c300.tar.gz
movtextenc: fix pointer messup and out of array accesses
Fixes Ticket2187 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/movtextenc.c')
-rw-r--r--libavcodec/movtextenc.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/libavcodec/movtextenc.c b/libavcodec/movtextenc.c
index 7f1b5b8..9b0a6c5 100644
--- a/libavcodec/movtextenc.c
+++ b/libavcodec/movtextenc.c
@@ -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 = {
OpenPOWER on IntegriCloud