[FFmpeg-cvslog] movenc: Check memory allocations

Hugo Beauzée-Luyssen git at videolan.org
Tue Feb 17 22:00:16 CET 2015


ffmpeg | branch: master | Hugo Beauzée-Luyssen <hugo at beauzee.fr> | Sun Feb  1 19:19:45 2015 +0100| [a8765852158ecb2ae34895fa35ff51dc95c186f9] | committer: Vittorio Giovara

movenc: Check memory allocations

Signed-off-by: Vittorio Giovara <vittorio.giovara at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=a8765852158ecb2ae34895fa35ff51dc95c186f9
---

 libavformat/movenc.c |   12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index 6259a87..585b080 100644
--- a/libavformat/movenc.c
+++ b/libavformat/movenc.c
@@ -1167,6 +1167,8 @@ static int mov_write_ctts_tag(AVIOContext *pb, MOVTrack *track)
     int i;
 
     ctts_entries = av_malloc((track->entry + 1) * sizeof(*ctts_entries)); /* worst case */
+    if (!ctts_entries)
+        return AVERROR(ENOMEM);
     ctts_entries[0].count = 1;
     ctts_entries[0].duration = track->cluster[0].cts;
     for (i = 1; i < track->entry; i++) {
@@ -1202,6 +1204,8 @@ static int mov_write_stts_tag(AVIOContext *pb, MOVTrack *track)
 
     if (track->enc->codec_type == AVMEDIA_TYPE_AUDIO && !track->audio_vbr) {
         stts_entries = av_malloc(sizeof(*stts_entries)); /* one entry */
+        if (!stts_entries)
+            return AVERROR(ENOMEM);
         stts_entries[0].count = track->sample_count;
         stts_entries[0].duration = 1;
         entries = 1;
@@ -1209,6 +1213,8 @@ static int mov_write_stts_tag(AVIOContext *pb, MOVTrack *track)
         stts_entries = track->entry ?
                        av_malloc(track->entry * sizeof(*stts_entries)) : /* worst case */
                        NULL;
+        if (!stts_entries)
+            return AVERROR(ENOMEM);
         for (i = 0; i < track->entry; i++) {
             int duration = get_cluster_duration(track, i);
             if (i && duration == stts_entries[entries].duration) {
@@ -3282,6 +3288,10 @@ int ff_mov_write_packet(AVFormatContext *s, AVPacket *pkt)
     if (trk->vos_len == 0 && enc->extradata_size > 0) {
         trk->vos_len  = enc->extradata_size;
         trk->vos_data = av_malloc(trk->vos_len);
+        if (!trk->vos_data) {
+            ret = AVERROR(ENOMEM);
+            goto err;
+        }
         memcpy(trk->vos_data, enc->extradata, trk->vos_len);
     }
 
@@ -3829,6 +3839,8 @@ static int mov_write_header(AVFormatContext *s)
             else {
                 track->vos_len  = st->codec->extradata_size;
                 track->vos_data = av_malloc(track->vos_len);
+                if (!track->vos_data)
+                    goto error;
                 memcpy(track->vos_data, st->codec->extradata, track->vos_len);
             }
         }



More information about the ffmpeg-cvslog mailing list