Browse Source

avcodec/decode: Check size before opening iconv

Avoids closing iconv when the size check fails.

Reviewed-by: James Almer <jamrial@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
tags/n4.4
Andreas Rheinhardt 5 years ago
parent
commit
a272f382d3
1 changed files with 4 additions and 5 deletions
  1. +4
    -5
      libavcodec/decode.c

+ 4
- 5
libavcodec/decode.c View File

@@ -884,18 +884,17 @@ static int recode_subtitle(AVCodecContext *avctx,
return 0;

#if CONFIG_ICONV
cd = iconv_open("UTF-8", avctx->sub_charenc);
av_assert0(cd != (iconv_t)-1);

inb = inpkt->data;
inl = inpkt->size;

if (inl >= INT_MAX / UTF8_MAX_BYTES - AV_INPUT_BUFFER_PADDING_SIZE) {
av_log(avctx, AV_LOG_ERROR, "Subtitles packet is too big for recoding\n");
ret = AVERROR(ENOMEM);
goto end;
return AVERROR(ERANGE);
}

cd = iconv_open("UTF-8", avctx->sub_charenc);
av_assert0(cd != (iconv_t)-1);

ret = av_new_packet(&tmp, inl * UTF8_MAX_BYTES);
if (ret < 0)
goto end;


Loading…
Cancel
Save