Prevent segfault due to reading over the end of the input buffer.
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 4 Mar 2008 21:39:21 +0000 (21:39 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 4 Mar 2008 21:39:21 +0000 (21:39 +0000)
Originally committed as revision 12315 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/apedec.c

index 032bc73..915a2f3 100644 (file)
@@ -256,7 +256,10 @@ static inline void range_start_decoding(APEContext * ctx)
 static inline void range_dec_normalize(APEContext * ctx)
 {
     while (ctx->rc.range <= BOTTOM_VALUE) {
-        ctx->rc.buffer = (ctx->rc.buffer << 8) | bytestream_get_byte(&ctx->ptr);
+        ctx->rc.buffer <<= 8;
+        if(ctx->ptr < ctx->data_end)
+            ctx->rc.buffer += *ctx->ptr;
+        ctx->ptr++;
         ctx->rc.low    = (ctx->rc.low << 8)    | ((ctx->rc.buffer >> 1) & 0xFF);
         ctx->rc.range  <<= 8;
     }