Quoting Martin Storsjö (2017-01-13 10:55:55) > On Fri, 13 Jan 2017, Anton Khirnov wrote: > > > Quoting Diego Biurrun (2017-01-11 18:10:08) > >> From: Alexandra Hájková <alexan...@khirnov.net> > >> > >> --- > >> libavformat/rtpdec_h261.c | 19 ++++++++++--------- > >> libavformat/rtpdec_h263_rfc2190.c | 19 ++++++++++--------- > >> libavformat/rtpdec_latm.c | 24 +++++++++++++----------- > >> libavformat/rtpdec_mpeg4.c | 16 +++++++++------- > >> libavformat/rtpdec_qt.c | 31 ++++++++++++++++--------------- > >> libavformat/rtpenc_h263_rfc2190.c | 29 +++++++++++++++-------------- > >> 6 files changed, 73 insertions(+), 65 deletions(-) > >> > >> diff --git a/libavformat/rtpdec_mpeg4.c b/libavformat/rtpdec_mpeg4.c > >> index 00a732b..b3cd6c9 100644 > >> --- a/libavformat/rtpdec_mpeg4.c > >> +++ b/libavformat/rtpdec_mpeg4.c > >> @@ -27,11 +27,13 @@ > >> * @author Romain Degez > >> */ > >> > >> -#include "rtpdec_formats.h" > >> -#include "internal.h" > >> #include "libavutil/attributes.h" > >> #include "libavutil/avstring.h" > >> -#include "libavcodec/get_bits.h" > >> + > >> +#include "libavcodec/bitstream.h" > >> + > >> +#include "rtpdec_formats.h" > >> +#include "internal.h" > >> > >> #define MAX_AAC_HBR_FRAME_SIZE 8191 > >> > >> @@ -113,7 +115,7 @@ static int parse_fmtp_config(AVCodecParameters *par, > >> const char *value) > >> static int rtp_parse_mp4_au(PayloadContext *data, const uint8_t *buf, int > >> len) > >> { > >> int au_headers_length, au_header_size, i; > >> - GetBitContext getbitcontext; > >> + BitstreamContext bctx; > >> > >> if (len < 2) > >> return AVERROR_INVALIDDATA; > >> @@ -134,7 +136,7 @@ static int rtp_parse_mp4_au(PayloadContext *data, > >> const uint8_t *buf, int len) > >> if (len < data->au_headers_length_bytes) > >> return AVERROR_INVALIDDATA; > >> > >> - init_get_bits(&getbitcontext, buf, data->au_headers_length_bytes * 8); > >> + bitstream_init(&bctx, buf, data->au_headers_length_bytes * 8); > >> > >> /* XXX: Wrong if optional additional sections are present (cts, dts > >> etc...) */ > >> au_header_size = data->sizelength + data->indexlength; > >> @@ -151,8 +153,8 @@ static int rtp_parse_mp4_au(PayloadContext *data, > >> const uint8_t *buf, int len) > >> } > >> > >> for (i = 0; i < data->nb_au_headers; ++i) { > >> - data->au_headers[i].size = get_bits_long(&getbitcontext, > >> data->sizelength); > >> - data->au_headers[i].index = get_bits_long(&getbitcontext, > >> data->indexlength); > >> + data->au_headers[i].size = bitstream_read(&bctx, > >> data->sizelength); > >> + data->au_headers[i].index = bitstream_read(&bctx, > >> data->indexlength); > > > > Not really a problem introduced by this patch, but those two fields > > don't seem to be bound-checked anywhere. > > The values are parsed in parse_fmtp (with an AVOption like mechanism), > where they are limited to a maximum of 32.
Ah, ok. Everything should be fine then. -- Anton Khirnov _______________________________________________ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel