diff options
author | James Almer <jamrial@gmail.com> | 2022-10-22 16:41:41 -0300 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2022-10-26 10:18:33 -0300 |
commit | 4c35bb53f94e4de88a0919346f24d34f8387771c (patch) | |
tree | d1f6b43ab9cd13b671a64693e551acb03bade290 /libavcodec/aac_ac3_parser.c | |
parent | ffb691878359fd80c0b675e015765ccd0d2d467e (diff) | |
download | ffmpeg-4c35bb53f94e4de88a0919346f24d34f8387771c.tar.gz |
avcodec/ac3_parser: improve false positive detection when parsing sync frames
A two byte sync word is not enough to ensure we got a real syncframe, nor are
all the range checks we do in the first seven bytes. Do therefore an integrity
check for the sync frame in order to prevent the parser from filling avctx with
bogus information.
Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavcodec/aac_ac3_parser.c')
-rw-r--r-- | libavcodec/aac_ac3_parser.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/libavcodec/aac_ac3_parser.c b/libavcodec/aac_ac3_parser.c index 2974de1545..9ab979632d 100644 --- a/libavcodec/aac_ac3_parser.c +++ b/libavcodec/aac_ac3_parser.c @@ -114,6 +114,10 @@ get_next: buf_size -= hdr.frame_size; continue; } + /* Check for false positives since the syncword is not enough. + See section 6.1.2 of A/52. */ + if (av_crc(s->crc_ctx, 0, buf + 2, hdr.frame_size - 2)) + return i; break; } |