From c12c085be7e86880924249e5cb3f898e45dee134 Mon Sep 17 00:00:00 2001 From: Tim Walker Date: Sun, 22 Nov 2015 00:02:37 +0100 Subject: dcadec: Do not check for overreads in auxiliary data The auxiliary data length field is not reliable, and incorrect overread errors could be returned for valid, real-world bitstreams. Signed-off-by: Luca Barbato --- libavcodec/dcadec.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/libavcodec/dcadec.c b/libavcodec/dcadec.c index 610857ddf2..7e9463861c 100644 --- a/libavcodec/dcadec.c +++ b/libavcodec/dcadec.c @@ -1086,12 +1086,12 @@ static int dca_subframe_footer(DCAContext *s, int base_channel) align_get_bits(&s->gb); // byte align skip_bits(&s->gb, 16); // nAUXCRC16 - // additional data (reserved, cf. ETSI TS 102 114 V1.4.1) - if ((reserved = (aux_data_end - get_bits_count(&s->gb))) < 0) { - av_log(s->avctx, AV_LOG_ERROR, - "Overread auxiliary data by %d bits\n", -reserved); - return AVERROR_INVALIDDATA; - } else if (reserved) { + /* + * additional data (reserved, cf. ETSI TS 102 114 V1.4.1) + * + * Note: don't check for overreads, aux_data_count can't be trusted. + */ + if ((reserved = (aux_data_end - get_bits_count(&s->gb))) > 0) { avpriv_request_sample(s->avctx, "Core auxiliary data reserved content"); skip_bits_long(&s->gb, reserved); -- cgit v1.2.3