summaryrefslogtreecommitdiffstats
path: root/libmpdemux
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-01-09 07:18:14 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-01-09 07:18:14 +0000
commitf9e6def939dccb3b8ac254afdaa6af6c2428ee4f (patch)
treefd72c82c6d73634fe3171190c4b09d586f15330e /libmpdemux
parent41f6ee5c0ec84f8a479bebb5255ca8c9f84f0c85 (diff)
downloadmpv-f9e6def939dccb3b8ac254afdaa6af6c2428ee4f.tar.bz2
mpv-f9e6def939dccb3b8ac254afdaa6af6c2428ee4f.tar.xz
Codecdata must always be malloc'd, fixes free being called with an
invalid pointer when freeing codecdata. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@25658 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux')
-rw-r--r--libmpdemux/demux_mov.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/libmpdemux/demux_mov.c b/libmpdemux/demux_mov.c
index c10330a3f9..34ca6f4f90 100644
--- a/libmpdemux/demux_mov.c
+++ b/libmpdemux/demux_mov.c
@@ -747,13 +747,15 @@ static int gen_sh_audio(sh_audio_t* sh, mov_track_t* trak, int timescale) {
default:
if (len > 8 && len + 44 <= trak->stdata_len) {
sh->codecdata_len = len-8;
- sh->codecdata = trak->stdata+44+8;
+ sh->codecdata = malloc(sh->codecdata_len);
+ memcpy(sh->codecdata, trak->stdata+44+8, sh->codecdata_len);
}
}
} else {
if (len > 8 && len + 44 <= trak->stdata_len) {
sh->codecdata_len = len-8;
- sh->codecdata = trak->stdata+44+8;
+ sh->codecdata = malloc(sh->codecdata_len);
+ memcpy(sh->codecdata, trak->stdata+44+8, sh->codecdata_len);
}
}
}