diff options
author | Alex Converse <alex.converse@gmail.com> | 2012-09-19 22:12:58 +0400 |
---|---|---|
committer | Alex Converse <alex.converse@gmail.com> | 2012-10-02 04:46:44 +0400 |
commit | b92dfb56d4582633571db18c3d904f8602eaa2a6 (patch) | |
tree | ae79519a73ae0c449ceb1653316f60f173411b0f /libavcodec/tiffenc.c | |
parent | 9bc055e358c6bd9fb517a0f0ecf299b83f2d8655 (diff) |
tiffenc: Check av_malloc() results.
Diffstat (limited to 'libavcodec/tiffenc.c')
-rw-r--r-- | libavcodec/tiffenc.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/libavcodec/tiffenc.c b/libavcodec/tiffenc.c index 4e64201a89..e6fd6cf69a 100644 --- a/libavcodec/tiffenc.c +++ b/libavcodec/tiffenc.c @@ -316,6 +316,10 @@ static int encode_frame(AVCodecContext * avctx, AVPacket *pkt, strip_sizes = av_mallocz(sizeof(*strip_sizes) * strips); strip_offsets = av_mallocz(sizeof(*strip_offsets) * strips); + if (!strip_sizes || !strip_offsets) { + ret = AVERROR(ENOMEM); + goto fail; + } bytes_per_row = (((s->width - 1)/s->subsampling[0] + 1) * s->bpp * s->subsampling[0] * s->subsampling[1] + 7) >> 3; @@ -323,6 +327,7 @@ static int encode_frame(AVCodecContext * avctx, AVPacket *pkt, yuv_line = av_malloc(bytes_per_row); if (yuv_line == NULL){ av_log(s->avctx, AV_LOG_ERROR, "Not enough memory\n"); + ret = AVERROR(ENOMEM); goto fail; } } @@ -335,6 +340,10 @@ static int encode_frame(AVCodecContext * avctx, AVPacket *pkt, zlen = bytes_per_row * s->rps; zbuf = av_malloc(zlen); + if (!zbuf) { + ret = AVERROR(ENOMEM); + goto fail; + } strip_offsets[0] = ptr - pkt->data; zn = 0; for (j = 0; j < s->rps; j++) { @@ -359,8 +368,13 @@ static int encode_frame(AVCodecContext * avctx, AVPacket *pkt, } else #endif { - if(s->compr == TIFF_LZW) + if (s->compr == TIFF_LZW) { s->lzws = av_malloc(ff_lzw_encode_state_size); + if (!s->lzws) { + ret = AVERROR(ENOMEM); + goto fail; + } + } for (i = 0; i < s->height; i++) { if (strip_sizes[i / s->rps] == 0) { if(s->compr == TIFF_LZW){ |