X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=ffmpeg%2Flibavcodec%2Ftiffenc.c;h=72219da0d007ee49770e2627cc0eb6effce93c07;hb=refs%2Ftags%2Fdebian%2F2.5.0_trusty1.1;hp=138d214c2f7d4969ce0cd5fea659bab7468d96ef;hpb=2ba45a602cbfa7b771effba9b11bb4245c21bc00;p=deb_ffmpeg.git diff --git a/ffmpeg/libavcodec/tiffenc.c b/ffmpeg/libavcodec/tiffenc.c index 138d214..72219da 100644 --- a/ffmpeg/libavcodec/tiffenc.c +++ b/ffmpeg/libavcodec/tiffenc.c @@ -235,7 +235,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, int bytes_per_row; uint32_t res[2] = { s->dpi, 1 }; // image resolution (72/1) uint16_t bpp_tab[4]; - int ret = -1; + int ret = 0; int is_yuv = 0, alpha = 0; int shift_h, shift_v; int packet_size; @@ -327,6 +327,10 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, offset = ptr; bytestream_put_le32(&ptr, 0); + if (strips > INT_MAX / FFMAX(sizeof(s->strip_sizes[0]), sizeof(s->strip_offsets[0]))) { + ret = AVERROR(ENOMEM); + goto fail; + } av_fast_padded_mallocz(&s->strip_sizes , &s->strip_sizes_size , sizeof(s->strip_sizes [0]) * strips); av_fast_padded_mallocz(&s->strip_offsets, &s->strip_offsets_size, sizeof(s->strip_offsets[0]) * strips); @@ -416,7 +420,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, } } if (s->compr == TIFF_LZW) - av_free(s->lzws); + av_freep(&s->lzws); } s->num_entries = 0;