mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
srtdec: ensure we don't read 1 byte after buffer end if the buffer is not
properly terminated. Originally committed as revision 26201 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
6734f2c89e
commit
f5dd1eb7b5
@ -65,7 +65,7 @@ static const char *srt_to_ass(AVCodecContext *avctx, char *out, char *out_end,
|
|||||||
out += snprintf(out, out_end-out, "{\\an1}{\\pos(%d,%d)}", x1, y1);
|
out += snprintf(out, out_end-out, "{\\an1}{\\pos(%d,%d)}", x1, y1);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (; *in && out < out_end && !end; in++) {
|
for (; out < out_end && !end && *in; in++) {
|
||||||
switch (*in) {
|
switch (*in) {
|
||||||
case '\r':
|
case '\r':
|
||||||
break;
|
break;
|
||||||
@ -211,13 +211,14 @@ static int srt_decode_frame(AVCodecContext *avctx,
|
|||||||
int ts_start, ts_end, x1 = -1, y1 = -1, x2 = -1, y2 = -1;
|
int ts_start, ts_end, x1 = -1, y1 = -1, x2 = -1, y2 = -1;
|
||||||
char buffer[2048];
|
char buffer[2048];
|
||||||
const char *ptr = avpkt->data;
|
const char *ptr = avpkt->data;
|
||||||
|
const char *end = avpkt->data + avpkt->size;
|
||||||
|
|
||||||
if (avpkt->size <= 0)
|
if (avpkt->size <= 0)
|
||||||
return avpkt->size;
|
return avpkt->size;
|
||||||
|
|
||||||
ff_ass_init(sub);
|
ff_ass_init(sub);
|
||||||
|
|
||||||
while (*ptr) {
|
while (ptr < end && *ptr) {
|
||||||
ptr = read_ts(ptr, &ts_start, &ts_end, &x1, &y1, &x2, &y2);
|
ptr = read_ts(ptr, &ts_start, &ts_end, &x1, &y1, &x2, &y2);
|
||||||
if (!ptr)
|
if (!ptr)
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user