[FFmpeg-cvslog] dcadec: Do not check for overreads in auxiliary data
Tim Walker
git at videolan.org
Sun Nov 29 15:32:33 CET 2015
ffmpeg | branch: master | Tim Walker <tdskywalker at gmail.com> | Sun Nov 22 00:02:37 2015 +0100| [c12c085be7e86880924249e5cb3f898e45dee134] | committer: Luca Barbato
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 <lu_zero at gentoo.org>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=c12c085be7e86880924249e5cb3f898e45dee134
---
libavcodec/dcadec.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/libavcodec/dcadec.c b/libavcodec/dcadec.c
index 610857d..7e94638 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);
More information about the ffmpeg-cvslog
mailing list