Browse code

avformat/mov: use av_freep() to avoid leaving stale pointers in memory

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 383c6a3a07b71981bd32d083496f5a4935f620f9)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>

Michael Niedermayer authored on 2015/01/06 20:45:25
Showing 1 changed files
... ...
@@ -1153,7 +1153,7 @@ static int mov_read_wave(MOVContext *c, AVIOContext *pb, MOVAtom atom)
1153 1153
         st->codec->codec_id == AV_CODEC_ID_QDMC ||
1154 1154
         st->codec->codec_id == AV_CODEC_ID_SPEEX) {
1155 1155
         // pass all frma atom to codec, needed at least for QDMC and QDM2
1156
-        av_free(st->codec->extradata);
1156
+        av_freep(&st->codec->extradata);
1157 1157
         if (ff_get_extradata(st->codec, pb, atom.size) < 0)
1158 1158
             return AVERROR(ENOMEM);
1159 1159
     } else if (atom.size > 8) { /* to read frma, esds atoms */
... ...
@@ -1193,7 +1193,7 @@ static int mov_read_glbl(MOVContext *c, AVIOContext *pb, MOVAtom atom)
1193 1193
         av_log(c, AV_LOG_WARNING, "ignoring multiple glbl\n");
1194 1194
         return 0;
1195 1195
     }
1196
-    av_free(st->codec->extradata);
1196
+    av_freep(&st->codec->extradata);
1197 1197
     if (ff_get_extradata(st->codec, pb, atom.size) < 0)
1198 1198
         return AVERROR(ENOMEM);
1199 1199
 
... ...
@@ -1218,7 +1218,7 @@ static int mov_read_dvc1(MOVContext *c, AVIOContext *pb, MOVAtom atom)
1218 1218
         return 0;
1219 1219
 
1220 1220
     avio_seek(pb, 6, SEEK_CUR);
1221
-    av_free(st->codec->extradata);
1221
+    av_freep(&st->codec->extradata);
1222 1222
     if ((ret = ff_get_extradata(st->codec, pb, atom.size - 7)) < 0)
1223 1223
         return ret;
1224 1224
 
... ...
@@ -1244,7 +1244,7 @@ static int mov_read_strf(MOVContext *c, AVIOContext *pb, MOVAtom atom)
1244 1244
         return AVERROR_INVALIDDATA;
1245 1245
 
1246 1246
     avio_skip(pb, 40);
1247
-    av_free(st->codec->extradata);
1247
+    av_freep(&st->codec->extradata);
1248 1248
     if (ff_get_extradata(st->codec, pb, atom.size - 40) < 0)
1249 1249
         return AVERROR(ENOMEM);
1250 1250
     return 0;
... ...
@@ -4113,7 +4113,7 @@ static int mov_read_packet(AVFormatContext *s, AVPacket *pkt)
4113 4113
 #if CONFIG_DV_DEMUXER
4114 4114
         if (mov->dv_demux && sc->dv_audio_container) {
4115 4115
             avpriv_dv_produce_packet(mov->dv_demux, pkt, pkt->data, pkt->size, pkt->pos);
4116
-            av_free(pkt->data);
4116
+            av_freep(&pkt->data);
4117 4117
             pkt->size = 0;
4118 4118
             ret = avpriv_dv_get_packet(mov->dv_demux, pkt);
4119 4119
             if (ret < 0)