aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>2015-04-28 22:37:19 +0200
committerMichael Niedermayer <michaelni@gmx.at>2015-06-10 02:13:10 +0200
commit9d5362a45cbd8777751e8a98e7cb8c26f180868c (patch)
treead49a8826c29b6bb0069601ee951d2cd09757431
parent0691554e68e36833586f5d5a9ada0f7cdbf88fb2 (diff)
downloadffmpeg-9d5362a45cbd8777751e8a98e7cb8c26f180868c.tar.gz
nutdec: fix illegal count check in decode_main_header
The existing check has two problems: 1) i + count can overflow, so that the check '< 256' returns true. 2) In the (i == 'N') case occurs a j-- so that the loop runs once more. This can trigger the assertion 'nut->header_len[0] == 0' or cause segmentation faults or infinite hangs. Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at> (cherry picked from commit 7c24ca1bda2d4df1dc9b2b982941be532d60da21) Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavformat/nutdec.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/libavformat/nutdec.c b/libavformat/nutdec.c
index 202d84c250..961f76ccd3 100644
--- a/libavformat/nutdec.c
+++ b/libavformat/nutdec.c
@@ -286,7 +286,7 @@ static int decode_main_header(NUTContext *nut)
while (tmp_fields-- > 8)
ffio_read_varlen(bc);
- if (count == 0 || i + count > 256) {
+ if (count <= 0 || count > 256 - (i <= 'N') - i) {
av_log(s, AV_LOG_ERROR, "illegal count %d at %d\n", count, i);
return AVERROR_INVALIDDATA;
}