From c5a51c6aa1febfa93a03cfd26b68feeaacc494b0 Mon Sep 17 00:00:00 2001 From: happyworker <208suo@208suo.com> Date: Tue, 25 Jun 2024 11:13:04 +0800 Subject: [PATCH] fix CVE-2023-51798 (cherry picked from commit 8164dedc6085cf7e7692b4b9ed54608ae3d182b0) --- ffmpeg.spec | 6 +++++- fix-CVE-2023-51798.patch | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 fix-CVE-2023-51798.patch diff --git a/ffmpeg.spec b/ffmpeg.spec index 0b0d65e..3d026eb 100644 --- a/ffmpeg.spec +++ b/ffmpeg.spec @@ -61,7 +61,7 @@ ExclusiveArch: armv7hnl Summary: Digital VCR and streaming server Name: ffmpeg%{?flavor} Version: 4.2.4 -Release: 6 +Release: 7 License: %{ffmpeg_license} URL: http://ffmpeg.org/ %if 0%{?date} @@ -77,6 +77,7 @@ Patch4: CVE-2021-38114.patch Patch5: CVE-2020-35964.patch Patch6: CVE-2024-31578.patch Patch7: CVE-2023-51794.patch +Patch8: fix-CVE-2023-51798.patch Requires: %{name}-libs%{?_isa} = %{version}-%{release} %{?_with_cuda:BuildRequires: cuda-minimal-build-%{_cuda_version_rpm} cuda-drivers-devel} %{?_with_libnpp:BuildRequires: pkgconfig(nppc-%{_cuda_version})} @@ -409,6 +410,9 @@ install -pm755 tools/qt-faststart %{buildroot}%{_bindir} %changelog +* Tue Jun 25 2024 happyworker <208suo@208suo.com> - 4.2.4-7 +- Fix CVE-2023-51798 + * Wed Jun 19 2024 happyworker <208suo@208suo.com> - 4.2.4-6 - Fix CVE-2023-51794 diff --git a/fix-CVE-2023-51798.patch b/fix-CVE-2023-51798.patch new file mode 100644 index 0000000..3b93b1c --- /dev/null +++ b/fix-CVE-2023-51798.patch @@ -0,0 +1,33 @@ +From faedf9f8ef5b657064ecf6af8d1ba767ada60bf4 Mon Sep 17 00:00:00 2001 +From: happyworker <208suo@208suo.com> +Date: Tue, 25 Jun 2024 10:58:39 +0800 +Subject: [PATCH] fix-CVE-2023-51798 + +--- + libavfilter/vf_minterpolate.c | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +diff --git a/libavfilter/vf_minterpolate.c b/libavfilter/vf_minterpolate.c +index b0bb238..745987c 100644 +--- a/libavfilter/vf_minterpolate.c ++++ b/libavfilter/vf_minterpolate.c +@@ -1086,9 +1086,13 @@ static void interpolate(AVFilterLink *inlink, AVFrame *avf_out) + pts = av_rescale(avf_out->pts, (int64_t) ALPHA_MAX * outlink->time_base.num * inlink->time_base.den, + (int64_t) outlink->time_base.den * inlink->time_base.num); + +- alpha = (pts - mi_ctx->frames[1].avf->pts * ALPHA_MAX) / (mi_ctx->frames[2].avf->pts - mi_ctx->frames[1].avf->pts); +- alpha = av_clip(alpha, 0, ALPHA_MAX); +- ++ if (mi_ctx->frames[2].avf->pts > mi_ctx->frames[1].avf->pts) { ++ alpha = (pts - mi_ctx->frames[1].avf->pts * ALPHA_MAX) / (mi_ctx->frames[2].avf->pts - mi_ctx->frames[1].avf->pts); ++ alpha = av_clip(alpha, 0, ALPHA_MAX); ++ } else { ++ av_log(ctx, AV_LOG_DEBUG, "duplicate input PTS detected\n"); ++ alpha = 0; ++ } + if (alpha == 0 || alpha == ALPHA_MAX) { + av_frame_copy(avf_out, alpha ? mi_ctx->frames[2].avf : mi_ctx->frames[1].avf); + return; +-- +2.43.0 +