aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/faxcompr.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2012-04-13 21:21:15 +0200
committerMichael Niedermayer <michaelni@gmx.at>2012-04-13 21:50:37 +0200
commit367d9b2957fa455b59f131fd6bee896cb7ed6600 (patch)
tree4c6f6a32752bc64d7aea93e37d4bd5666cd6ecb9 /libavcodec/faxcompr.c
parent62e5ef95cacb29b5ee3149792f12f9204dbd1655 (diff)
parentef0ee7f657e66d91162d2b4fad882ece9fbb264e (diff)
downloadffmpeg-367d9b2957fa455b59f131fd6bee896cb7ed6600.tar.gz
Merge remote-tracking branch 'qatar/master'
* qatar/master: swscale: K&R formatting cosmetics (part II) tiffdec: Add a malloc check and refactor another. faxcompr: Check malloc results and unify return path configure: escape colons in values written to config.fate ac3dsp: call femms/emms at the end of float_to_fixed24() for 3DNow and SSE matroska: Fix leaking memory allocated for laces. pthread: Fix crash due to fctx->delaying not being cleared. vp3: Assert on invalid filter_limit values. h264: fix 10bit biweight functions after recent x86inc.asm fixes. ffv1: Fix size mismatch in encode_line. movenc: Remove a dead initialization git-howto: Explain how to avoid Windows line endings in git checkouts. build: Move all arch OBJS declarations into arch subdirectory Makefiles. Conflicts: configure libavcodec/vp3.c libavformat/matroskadec.c libavutil/Makefile libswscale/Makefile libswscale/swscale.c libswscale/swscale_internal.h libswscale/utils.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/faxcompr.c')
-rw-r--r--libavcodec/faxcompr.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/libavcodec/faxcompr.c b/libavcodec/faxcompr.c
index 7e75e5dae4..e93926f455 100644
--- a/libavcodec/faxcompr.c
+++ b/libavcodec/faxcompr.c
@@ -275,12 +275,17 @@ int ff_ccitt_unpack(AVCodecContext *avctx,
{
int j;
GetBitContext gb;
- int *runs, *ref, *runend;
+ int *runs, *ref = NULL, *runend;
int ret;
int runsize= avctx->width + 2;
+ int err = 0;
runs = av_malloc(runsize * sizeof(runs[0]));
ref = av_malloc(runsize * sizeof(ref[0]));
+ if (!runs || ! ref) {
+ err = AVERROR(ENOMEM);
+ goto fail;
+ }
ref[0] = avctx->width;
ref[1] = 0;
ref[2] = 0;
@@ -290,9 +295,8 @@ int ff_ccitt_unpack(AVCodecContext *avctx,
if(compr == TIFF_G4){
ret = decode_group3_2d_line(avctx, &gb, avctx->width, runs, runend, ref);
if(ret < 0){
- av_free(runs);
- av_free(ref);
- return -1;
+ err = -1;
+ goto fail;
}
}else{
int g3d1 = (compr == TIFF_G3) && !(opts & 1);
@@ -313,7 +317,8 @@ int ff_ccitt_unpack(AVCodecContext *avctx,
}
dst += stride;
}
+fail:
av_free(runs);
av_free(ref);
- return 0;
+ return err;
}