diff options
author | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2021-03-17 16:49:44 +0100 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2022-08-23 12:21:00 +0200 |
commit | 72cfc80d7b500a7f66b1bb7373f67f549c1774c6 (patch) | |
tree | 377fcc1749a865b93a2ecc58f880d69a8c2a7276 | |
parent | eda3abd1eca651680b82857ed39d920b20b3b4b1 (diff) | |
download | ffmpeg-72cfc80d7b500a7f66b1bb7373f67f549c1774c6.tar.gz |
avcodec/pngdec: Improve decoding text chunks
By checking immediately whether the first allocation was successfull
one can simplify the cleanup code in case of errors.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
-rw-r--r-- | libavcodec/pngdec.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/libavcodec/pngdec.c b/libavcodec/pngdec.c index 132ad40dc9..1d6ca7f4c3 100644 --- a/libavcodec/pngdec.c +++ b/libavcodec/pngdec.c @@ -551,12 +551,13 @@ static int decode_text_chunk(PNGDecContext *s, GetByteContext *gb, int compresse text_len = data_end - data; } - kw_utf8 = iso88591_to_utf8(keyword, keyword_end - keyword); txt_utf8 = iso88591_to_utf8(text, text_len); if (compressed) av_bprint_finalize(&bp, NULL); - if (!(kw_utf8 && txt_utf8)) { - av_free(kw_utf8); + if (!txt_utf8) + return AVERROR(ENOMEM); + kw_utf8 = iso88591_to_utf8(keyword, keyword_end - keyword); + if (!kw_utf8) { av_free(txt_utf8); return AVERROR(ENOMEM); } |