diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-04-13 21:21:15 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-04-13 21:50:37 +0200 |
commit | 367d9b2957fa455b59f131fd6bee896cb7ed6600 (patch) | |
tree | 4c6f6a32752bc64d7aea93e37d4bd5666cd6ecb9 /libavcodec/faxcompr.c | |
parent | 62e5ef95cacb29b5ee3149792f12f9204dbd1655 (diff) | |
parent | ef0ee7f657e66d91162d2b4fad882ece9fbb264e (diff) | |
download | ffmpeg-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.c | 15 |
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; } |