aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-11-26 21:54:54 +0100
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2021-02-27 07:21:00 +0100
commiteda1ed6f914a762a30e13e538f380355e8b7337a (patch)
tree394885b4a0140c179e079aff3a6911c8a6a66d57
parent4ec5d6896d2396f6a9f3dd558e393eeacc22dd6f (diff)
downloadffmpeg-eda1ed6f914a762a30e13e538f380355e8b7337a.tar.gz
avcodec/mjpegdec: Fix memleak upon init failure
This affected all decoders that used ff_mjpeg_decode_init() as init function; and it also affected decoders that open jpeg decoders via ff_codec_open2_recursive() as well as MxPEG. Reviewed-by: Anton Khirnov <anton@khirnov.net> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com> (cherry picked from commit f3e645a7967d64df8a19c4e0eea93f17937913fb)
-rw-r--r--libavcodec/jpeglsdec.c2
-rw-r--r--libavcodec/mjpegbdec.c2
-rw-r--r--libavcodec/mjpegdec.c4
-rw-r--r--libavcodec/sp5xdec.c4
4 files changed, 6 insertions, 6 deletions
diff --git a/libavcodec/jpeglsdec.c b/libavcodec/jpeglsdec.c
index fd4eb234bc..a096a21812 100644
--- a/libavcodec/jpeglsdec.c
+++ b/libavcodec/jpeglsdec.c
@@ -553,5 +553,5 @@ AVCodec ff_jpegls_decoder = {
.close = ff_mjpeg_decode_end,
.decode = ff_mjpeg_decode_frame,
.capabilities = AV_CODEC_CAP_DR1,
- .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE,
+ .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP,
};
diff --git a/libavcodec/mjpegbdec.c b/libavcodec/mjpegbdec.c
index 70ff4cf563..7666674908 100644
--- a/libavcodec/mjpegbdec.c
+++ b/libavcodec/mjpegbdec.c
@@ -163,5 +163,5 @@ AVCodec ff_mjpegb_decoder = {
.decode = mjpegb_decode_frame,
.capabilities = AV_CODEC_CAP_DR1,
.max_lowres = 3,
- .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE,
+ .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP,
};
diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c
index e7a4e08c1c..a46af58f21 100644
--- a/libavcodec/mjpegdec.c
+++ b/libavcodec/mjpegdec.c
@@ -2876,7 +2876,7 @@ AVCodec ff_mjpeg_decoder = {
.max_lowres = 3,
.priv_class = &mjpegdec_class,
.profiles = NULL_IF_CONFIG_SMALL(ff_mjpeg_profiles),
- .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE |
+ .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP |
FF_CODEC_CAP_SKIP_FRAME_FILL_PARAM,
.hw_configs = (const AVCodecHWConfigInternal*[]) {
#if CONFIG_MJPEG_NVDEC_HWACCEL
@@ -2902,6 +2902,6 @@ AVCodec ff_thp_decoder = {
.flush = decode_flush,
.capabilities = AV_CODEC_CAP_DR1,
.max_lowres = 3,
- .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE,
+ .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP,
};
#endif
diff --git a/libavcodec/sp5xdec.c b/libavcodec/sp5xdec.c
index 815f9ad50e..ad2e9b11a9 100644
--- a/libavcodec/sp5xdec.c
+++ b/libavcodec/sp5xdec.c
@@ -106,7 +106,7 @@ AVCodec ff_sp5x_decoder = {
.decode = sp5x_decode_frame,
.capabilities = AV_CODEC_CAP_DR1,
.max_lowres = 3,
- .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE,
+ .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP,
};
#endif
#if CONFIG_AMV_DECODER
@@ -121,6 +121,6 @@ AVCodec ff_amv_decoder = {
.decode = sp5x_decode_frame,
.max_lowres = 3,
.capabilities = AV_CODEC_CAP_DR1,
- .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE,
+ .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP,
};
#endif