From 3c9c96463032814b29ead52481a7d97170e568c6 Mon Sep 17 00:00:00 2001 From: Vincent Rabaud Date: Mon, 23 Oct 2023 14:56:24 +0200 Subject: [PATCH] Check the return value of avifDecoderSetIOMemory. The API will soon be made no_discard. --- modules/imgcodecs/src/grfmt_avif.cpp | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/modules/imgcodecs/src/grfmt_avif.cpp b/modules/imgcodecs/src/grfmt_avif.cpp index b2830b755a..6b5c2cda8b 100644 --- a/modules/imgcodecs/src/grfmt_avif.cpp +++ b/modules/imgcodecs/src/grfmt_avif.cpp @@ -147,18 +147,6 @@ AvifDecoder::~AvifDecoder() { size_t AvifDecoder::signatureLength() const { return kAvifSignatureSize; } -bool AvifDecoder::checkSignature(const String &signature) const { - avifDecoder *decoder = avifDecoderCreate(); - if (!decoder) return false; - avifDecoderSetIOMemory(decoder, - reinterpret_cast(signature.c_str()), - signature.size()); - decoder->io->sizeHint = 1e9; - const avifResult status = avifDecoderParse(decoder); - avifDecoderDestroy(decoder); - return (status == AVIF_RESULT_OK || status == AVIF_RESULT_TRUNCATED_DATA); -} - #define OPENCV_AVIF_CHECK_STATUS(X, ENCDEC) \ { \ const avifResult status = (X); \ @@ -170,6 +158,20 @@ bool AvifDecoder::checkSignature(const String &signature) const { } \ } +bool AvifDecoder::checkSignature(const String &signature) const { + avifDecoder *decoder = avifDecoderCreate(); + if (!decoder) return false; + OPENCV_AVIF_CHECK_STATUS( + avifDecoderSetIOMemory( + decoder, reinterpret_cast(signature.c_str()), + signature.size()), + decoder); + decoder->io->sizeHint = 1e9; + const avifResult status = avifDecoderParse(decoder); + avifDecoderDestroy(decoder); + return (status == AVIF_RESULT_OK || status == AVIF_RESULT_TRUNCATED_DATA); +} + ImageDecoder AvifDecoder::newDecoder() const { return makePtr(); } bool AvifDecoder::readHeader() {