On Wed, Sep 25, 2019 at 10:30 AM James Almer <jamr...@gmail.com> wrote:
> Fixes ticket #8183. > > Signed-off-by: James Almer <jamr...@gmail.com> > --- > libavformat/movenc.c | 15 ++++++++++----- > 1 file changed, 10 insertions(+), 5 deletions(-) > > diff --git a/libavformat/movenc.c b/libavformat/movenc.c > index c824ff5ba1..e3283871d0 100644 > --- a/libavformat/movenc.c > +++ b/libavformat/movenc.c > @@ -5377,12 +5377,13 @@ int ff_mov_write_packet(AVFormatContext *s, > AVPacket *pkt) > !TAG_IS_AVCI(trk->tag) && > (par->codec_id != AV_CODEC_ID_DNXHD)) { > trk->vos_len = par->extradata_size; > - trk->vos_data = av_malloc(trk->vos_len); > + trk->vos_data = av_malloc(trk->vos_len + > AV_INPUT_BUFFER_PADDING_SIZE); > if (!trk->vos_data) { > ret = AVERROR(ENOMEM); > goto err; > } > memcpy(trk->vos_data, par->extradata, trk->vos_len); > + memset(trk->vos_data + trk->vos_len, 0, > AV_INPUT_BUFFER_PADDING_SIZE); > } > > if (par->codec_id == AV_CODEC_ID_AAC && pkt->size > 2 && > @@ -5460,12 +5461,13 @@ int ff_mov_write_packet(AVFormatContext *s, > AVPacket *pkt) > par->codec_id == AV_CODEC_ID_AC3) && !trk->vos_len) { > /* copy frame to create needed atoms */ > trk->vos_len = size; > - trk->vos_data = av_malloc(size); > + trk->vos_data = av_malloc(size + AV_INPUT_BUFFER_PADDING_SIZE); > if (!trk->vos_data) { > ret = AVERROR(ENOMEM); > goto err; > } > memcpy(trk->vos_data, pkt->data, size); > + memset(trk->vos_data + size, 0, AV_INPUT_BUFFER_PADDING_SIZE); > } > > if (trk->entry >= trk->cluster_capacity) { > @@ -6090,12 +6092,13 @@ static int > mov_create_dvd_sub_decoder_specific_info(MOVTrack *track, > cur += strspn(cur, "\n\r"); > } > if (have_palette) { > - track->vos_data = av_malloc(16*4); > + track->vos_data = av_malloc(16*4 + AV_INPUT_BUFFER_PADDING_SIZE); > if (!track->vos_data) > return AVERROR(ENOMEM); > for (i = 0; i < 16; i++) { > AV_WB32(track->vos_data + i * 4, palette[i]); > } > + memset(track->vos_data + 16*4, 0, AV_INPUT_BUFFER_PADDING_SIZE); > track->vos_len = 16 * 4; > } > st->codecpar->width = width; > @@ -6453,11 +6456,12 @@ static int mov_write_header(AVFormatContext *s) > mov_create_dvd_sub_decoder_specific_info(track, st); > else if (!TAG_IS_AVCI(track->tag) && st->codecpar->codec_id > != AV_CODEC_ID_DNXHD) { > track->vos_len = st->codecpar->extradata_size; > - track->vos_data = av_malloc(track->vos_len); > + track->vos_data = av_malloc(track->vos_len + > AV_INPUT_BUFFER_PADDING_SIZE); > if (!track->vos_data) { > return AVERROR(ENOMEM); > } > memcpy(track->vos_data, st->codecpar->extradata, > track->vos_len); > + memset(track->vos_data + track->vos_len, 0, > AV_INPUT_BUFFER_PADDING_SIZE); > } > } > > @@ -6713,10 +6717,11 @@ static int mov_write_trailer(AVFormatContext *s) > AVCodecParameters *par = track->par; > > track->vos_len = par->extradata_size; > - track->vos_data = av_malloc(track->vos_len); > + track->vos_data = av_malloc(track->vos_len + > AV_INPUT_BUFFER_PADDING_SIZE); > if (!track->vos_data) > return AVERROR(ENOMEM); > memcpy(track->vos_data, par->extradata, track->vos_len); > + memset(track->vos_data + track->vos_len, 0, > AV_INPUT_BUFFER_PADDING_SIZE); > } > mov->need_rewrite_extradata = 0; > } > -- > 2.22.0 > > I confirm that this patch fixes the issue i have here as well. > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".