summaryrefslogtreecommitdiff
path: root/libavcodec
diff options
context:
space:
mode:
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/microdvddec.c18
-rw-r--r--libavcodec/version.h2
2 files changed, 14 insertions, 6 deletions
diff --git a/libavcodec/microdvddec.c b/libavcodec/microdvddec.c
index e08cc312c0..f3c640f932 100644
--- a/libavcodec/microdvddec.c
+++ b/libavcodec/microdvddec.c
@@ -260,6 +260,7 @@ static int microdvd_decode_frame(AVCodecContext *avctx,
{
AVSubtitle *sub = data;
AVBPrint new_line;
+ char c;
char *decoded_sub;
char *line = avpkt->data;
char *end = avpkt->data + avpkt->size;
@@ -268,11 +269,16 @@ static int microdvd_decode_frame(AVCodecContext *avctx,
if (avpkt->size <= 0)
return avpkt->size;
- av_bprint_init(&new_line, 0, 2048);
+ /* To be removed later */
+ if (sscanf(line, "{%*d}{%*[0123456789]}%c", &c) == 1 &&
+ line[avpkt->size - 1] == '\n') {
+ av_log(avctx, AV_LOG_ERROR, "AVPacket is not clean (contains timing "
+ "information and a trailing line break). You need to upgrade "
+ "your libavformat or sanitize your packet.\n");
+ return AVERROR_INVALIDDATA;
+ }
- // skip {frame_start}{frame_end}
- line = strchr(line, '}'); if (!line) goto end; line++;
- line = strchr(line, '}'); if (!line) goto end; line++;
+ av_bprint_init(&new_line, 0, 2048);
// subtitle content
while (line < end && *line) {
@@ -294,8 +300,9 @@ static int microdvd_decode_frame(AVCodecContext *avctx,
line++;
}
}
+ if (new_line.len) {
+ av_bprintf(&new_line, "\r\n");
-end:
av_bprint_finalize(&new_line, &decoded_sub);
if (*decoded_sub) {
int64_t start = avpkt->pts;
@@ -306,6 +313,7 @@ end:
ff_ass_add_rect(sub, decoded_sub, ts_start, ts_duration, 0);
}
av_free(decoded_sub);
+ }
*got_sub_ptr = sub->num_rects > 0;
return avpkt->size;
diff --git a/libavcodec/version.h b/libavcodec/version.h
index af58490975..b4608a2cb0 100644
--- a/libavcodec/version.h
+++ b/libavcodec/version.h
@@ -29,7 +29,7 @@
#include "libavutil/avutil.h"
#define LIBAVCODEC_VERSION_MAJOR 54
-#define LIBAVCODEC_VERSION_MINOR 84
+#define LIBAVCODEC_VERSION_MINOR 85
#define LIBAVCODEC_VERSION_MICRO 100
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \