Commit 540385bc for libheif
commit 540385bc5d793ff16872df67d0784d0d06443a22
Author: Dirk Farin <dirk.farin@gmail.com>
Date: Wed Apr 8 14:12:54 2026 +0200
dav1d: resolve leak of packet data on decoder error (#1753)
diff --git a/libheif/plugins/decoder_dav1d.cc b/libheif/plugins/decoder_dav1d.cc
index 8502f1c5..b0a67586 100644
--- a/libheif/plugins/decoder_dav1d.cc
+++ b/libheif/plugins/decoder_dav1d.cc
@@ -179,17 +179,19 @@ static heif_error push_pending_data_into_decoder(dav1d_decoder* decoder)
break;
}
- // Decoder has accepted data. Remove packet and check for error.
-
- decoder->queued_data.pop_front();
-
- if ((res < 0) && (res != DAV1D_ERR(EAGAIN))) {
+ if (res < 0) {
+ // dav1d_send_data failed. Data was not consumed, unref before removing from queue.
+ dav1d_data_unref(&decoder->queued_data.front());
+ decoder->queued_data.pop_front();
return {
heif_error_Decoder_plugin_error,
heif_suberror_Unspecified,
kEmptyString
};
}
+
+ // Decoder has accepted data (Dav1dData is consumed). Remove from queue.
+ decoder->queued_data.pop_front();
}
return heif_error_ok;