aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2021-03-17 16:49:44 +0100
committerAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2022-08-23 12:21:00 +0200
commit72cfc80d7b500a7f66b1bb7373f67f549c1774c6 (patch)
tree377fcc1749a865b93a2ecc58f880d69a8c2a7276
parenteda3abd1eca651680b82857ed39d920b20b3b4b1 (diff)
downloadffmpeg-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.c7
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);
}