Module: libav Branch: release/0.8 Commit: 0312969b9ea7fa7027bca665bfded88690c4caa0
Author: Ronald S. Bultje <[email protected]> Committer: Reinhard Tartler <[email protected]> Date: Tue Feb 21 10:36:27 2012 -0800 rmdec: when using INT4 deinterleaving, error out if sub_packet_h <= 1. We read sub_packet_h / 2 packets per line of data (during deinterleaving), which equals zero if sub_packet_h <= 1, thus causing us to not read any data, leading to an infinite loop. Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind CC: [email protected] (cherry picked from commit e30b3e59a4f3004337cb1623b2aac988ce52b93f) Signed-off-by: Anton Khirnov <[email protected]> --- libavformat/rmdec.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/libavformat/rmdec.c b/libavformat/rmdec.c index 75e4833..3d92253 100644 --- a/libavformat/rmdec.c +++ b/libavformat/rmdec.c @@ -265,6 +265,7 @@ static int rm_read_audio_stream_info(AVFormatContext *s, AVIOContext *pb, switch (ast->deint_id) { case DEINT_ID_INT4: if (ast->coded_framesize > ast->audio_framesize || + sub_packet_h <= 1 || ast->coded_framesize * sub_packet_h > (2 + (sub_packet_h & 1)) * ast->audio_framesize) return AVERROR_INVALIDDATA; break; _______________________________________________ libav-commits mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-commits
