Browse Source

avcodec/tdsc: Only reallocate deflatebuffer if its size changed

Fixes: Timeout (47sec -> 35msec)
Fixes: 23375/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_TDSC_fuzzer-5633949497032704

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
tags/n4.4
Michael Niedermayer 5 years ago
parent
commit
8dff6da313
1 changed files with 9 additions and 4 deletions
  1. +9
    -4
      libavcodec/tdsc.c

+ 9
- 4
libavcodec/tdsc.c View File

@@ -529,10 +529,15 @@ static int tdsc_decode_frame(AVCodecContext *avctx, void *data,

/* Resize deflate buffer on resolution change */
if (ctx->width != avctx->width || ctx->height != avctx->height) {
ctx->deflatelen = avctx->width * avctx->height * (3 + 1);
ret = av_reallocp(&ctx->deflatebuffer, ctx->deflatelen);
if (ret < 0)
return ret;
int deflatelen = avctx->width * avctx->height * (3 + 1);
if (deflatelen != ctx->deflatelen) {
ctx->deflatelen =deflatelen;
ret = av_reallocp(&ctx->deflatebuffer, ctx->deflatelen);
if (ret < 0) {
ctx->deflatelen = 0;
return ret;
}
}
}
dlen = ctx->deflatelen;



Loading…
Cancel
Save