On Wed, Dec 30, 2015 at 09:53:35PM +0000, Eran Kornblau wrote: > > > Please let me know if you think that is ok, and I will resubmit the patch > > > with all fixes. > > > > should be ok > > > Updated patch attached, diff from previous patch is: > > --- a/libavformat/mov.c > +++ b/libavformat/mov.c > @@ -4026,6 +4026,14 @@ static int mov_read_frma(MOVContext *c, AVIOContext > *pb, MOVAtom atom) > case MKTAG('e','n','c','v'): // encrypted video > case MKTAG('e','n','c','a'): // encrypted audio > id = mov_codec_id(st, format); > + if (st->codec->codec_id != AV_CODEC_ID_NONE && > + st->codec->codec_id != id) { > + av_log(c->fc, AV_LOG_WARNING, > + "ignoring 'frma' atom of '%.4s', stream has codec id > %d\n", > + (char*)&format, st->codec->codec_id); > + break; > + } > + > st->codec->codec_id = id; > sc->format = format; > break; > @@ -4045,7 +4053,6 @@ static int mov_read_senc(MOVContext *c, AVIOContext > *pb, MOVAtom atom) > AVStream *st; > MOVStreamContext *sc; > size_t auxiliary_info_size; > - int ret; > > if (c->decryption_key_len == 0 || c->fc->nb_streams < 1) > return 0; > @@ -4091,12 +4098,7 @@ static int mov_read_senc(MOVContext *c, AVIOContext > *pb, MOVAtom atom) > return AVERROR(ENOMEM); > } > > - ret = av_aes_ctr_init(sc->cenc.aes_ctr, c->decryption_key); > - if (ret) { > - return ret; > - } > - > - return 0; > + return av_aes_ctr_init(sc->cenc.aes_ctr, c->decryption_key); > } > > static int cenc_filter(MOVContext *c, MOVStreamContext *sc, uint8_t *input, > int size) > @@ -4107,7 +4109,7 @@ static int cenc_filter(MOVContext *c, MOVStreamContext > *sc, uint8_t *input, int > uint8_t* input_end = input + size; > > /* read the iv */ > - if (sc->cenc.auxiliary_info_pos + AES_CTR_IV_SIZE > > sc->cenc.auxiliary_info_end) { > + if (AES_CTR_IV_SIZE > sc->cenc.auxiliary_info_end - > sc->cenc.auxiliary_info_pos) { > av_log(c->fc, AV_LOG_ERROR, "failed to read iv from the auxiliary > info\n"); > return AVERROR_INVALIDDATA; > } > @@ -4123,7 +4125,7 @@ static int cenc_filter(MOVContext *c, MOVStreamContext > *sc, uint8_t *input, int > } > > /* read the subsample count */ > - if (sc->cenc.auxiliary_info_pos + sizeof(uint16_t) > > sc->cenc.auxiliary_info_end) { > + if (sizeof(uint16_t) > sc->cenc.auxiliary_info_end - > sc->cenc.auxiliary_info_pos) { > av_log(c->fc, AV_LOG_ERROR, "failed to read subsample count from the > auxiliary info\n"); > return AVERROR_INVALIDDATA; > } > @@ -4133,7 +4135,7 @@ static int cenc_filter(MOVContext *c, MOVStreamContext > *sc, uint8_t *input, int > > for (; subsample_count > 0; subsample_count--) > { > - if (sc->cenc.auxiliary_info_pos + 6 > sc->cenc.auxiliary_info_end) { > + if (6 > sc->cenc.auxiliary_info_end - sc->cenc.auxiliary_info_pos) { > av_log(c->fc, AV_LOG_ERROR, "failed to read subsample from the > auxiliary info\n"); > return AVERROR_INVALIDDATA; > } > @@ -4144,7 +4146,7 @@ static int cenc_filter(MOVContext *c, MOVStreamContext > *sc, uint8_t *input, int > encrypted_bytes = AV_RB32(sc->cenc.auxiliary_info_pos); > sc->cenc.auxiliary_info_pos += sizeof(uint32_t); > > - if (input + clear_bytes + encrypted_bytes > input_end) { > + if ((uint64_t)clear_bytes + encrypted_bytes > input_end - input) { > av_log(c->fc, AV_LOG_ERROR, "subsample size exceeds the packet > size left\n"); > return AVERROR_INVALIDDATA; > } > > > > [...] > > > > -- > > Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB > > > > Thanks, Michael ! > > Eran
> Changelog | 1 > libavformat/isom.h | 13 +++ > libavformat/mov.c | 181 > +++++++++++++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 195 insertions(+) > 5974fab38debc4fae0595bcdfec63d500932495a > 0001-mov-support-cenc-common-encryption.patch > From 2021b91bd195a20ae346b877810661dddfa73144 Mon Sep 17 00:00:00 2001 > From: erankor <eran.kornb...@kaltura.com> > Date: Mon, 7 Dec 2015 12:30:50 +0200 > Subject: [PATCH 1/2] mov: support cenc (common encryption) > > support reading encrypted mp4 using aes-ctr, conforming to ISO/IEC > 23001-7. > > a new parameter was added: > - decryption_key - 128 bit decryption key (hex) > --- > Changelog | 1 + > libavformat/isom.h | 13 ++++ > libavformat/mov.c | 181 > +++++++++++++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 195 insertions(+) patch applied thanks [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB If a bugfix only changes things apparently unrelated to the bug with no further explanation, that is a good sign that the bugfix is wrong.
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel