summaryrefslogtreecommitdiffstats
path: root/libmpdemux
diff options
context:
space:
mode:
authornicodvb <nicodvb@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-03-12 18:13:11 +0000
committernicodvb <nicodvb@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-03-12 18:13:11 +0000
commit5c853c2c212dd57b448c1d86a2efc19045011550 (patch)
treec7b22065534400db0b58a720dddb190059e4f5d3 /libmpdemux
parent8f872aaeda7e59df64665ad4e8ca4e965262b6aa (diff)
downloadmpv-5c853c2c212dd57b448c1d86a2efc19045011550.tar.bz2
mpv-5c853c2c212dd57b448c1d86a2efc19045011550.tar.xz
exit if calloc() fails; free(muxer) before returning NULL if muxer_init() fails (to avoid memleak). Fixes cid 173
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@17832 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux')
-rw-r--r--libmpdemux/muxer.c23
1 files changed, 20 insertions, 3 deletions
diff --git a/libmpdemux/muxer.c b/libmpdemux/muxer.c
index 0a075886e6..3f956bed50 100644
--- a/libmpdemux/muxer.c
+++ b/libmpdemux/muxer.c
@@ -21,30 +21,47 @@
muxer_t *muxer_new_muxer(int type,FILE *f){
muxer_t* muxer=malloc(sizeof(muxer_t));
memset(muxer,0,sizeof(muxer_t));
+ if(!muxer)
+ return NULL;
muxer->file = f;
switch (type) {
case MUXER_TYPE_MPEG:
if(! muxer_init_muxer_mpeg(muxer))
- return NULL;
+ {
+ free(muxer);
+ return NULL;
+ }
break;
case MUXER_TYPE_RAWVIDEO:
if(! muxer_init_muxer_rawvideo(muxer))
+ {
+ free(muxer);
return NULL;
+ }
break;
case MUXER_TYPE_RAWAUDIO:
if(! muxer_init_muxer_rawaudio(muxer))
+ {
+ free(muxer);
return NULL;
+ }
break;
#if defined(USE_LIBAVFORMAT) || defined(USE_LIBAVFORMAT_SO)
case MUXER_TYPE_LAVF:
if(! muxer_init_muxer_lavf(muxer))
- return NULL;
+ {
+ free(muxer);
+ return NULL;
+ }
break;
#endif
case MUXER_TYPE_AVI:
default:
if(! muxer_init_muxer_avi(muxer))
- return NULL;
+ {
+ free(muxer);
+ return NULL;
+ }
}
return muxer;
}