[FFmpeg-cvslog] r24184 - trunk/libavcodec/libvorbis.c
skal
subversion
Sun Jul 11 08:59:21 CEST 2010
Author: skal
Date: Sun Jul 11 08:59:21 2010
New Revision: 24184
Log:
add some buffer checks
Modified:
trunk/libavcodec/libvorbis.c
Modified: trunk/libavcodec/libvorbis.c
==============================================================================
--- trunk/libavcodec/libvorbis.c Sun Jul 11 08:40:05 2010 (r24183)
+++ trunk/libavcodec/libvorbis.c Sun Jul 11 08:59:21 2010 (r24184)
@@ -172,6 +172,10 @@ static int oggvorbis_encode_frame(AVCode
* not, apparently the end of stream decision is in libogg. */
if(op.bytes==1 && op.e_o_s)
continue;
+ if (context->buffer_index + sizeof(ogg_packet) + op.bytes > BUFFER_SIZE) {
+ av_log(avccontext, AV_LOG_ERROR, "libvorbis: buffer overflow.");
+ return -1;
+ }
memcpy(context->buffer + context->buffer_index, &op, sizeof(ogg_packet));
context->buffer_index += sizeof(ogg_packet);
memcpy(context->buffer + context->buffer_index, op.packet, op.bytes);
@@ -189,6 +193,11 @@ static int oggvorbis_encode_frame(AVCode
avccontext->coded_frame->pts= av_rescale_q(op2->granulepos, (AVRational){1, avccontext->sample_rate}, avccontext->time_base);
//FIXME we should reorder the user supplied pts and not assume that they are spaced by 1/sample_rate
+ if (l > buf_size) {
+ av_log(avccontext, AV_LOG_ERROR, "libvorbis: buffer overflow.");
+ return -1;
+ }
+
memcpy(packets, op2->packet, l);
context->buffer_index -= l + sizeof(ogg_packet);
memmove(context->buffer, context->buffer + l + sizeof(ogg_packet), context->buffer_index);
More information about the ffmpeg-cvslog
mailing list