forked from jengelh/ffmpeg-5
Sync latest version from jengelh
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
From 6f8e365a2af2b6b21701d41eed3b2e3f8a436eeb Mon Sep 17 00:00:00 2001
|
||||
From: James Almer <jamrial@gmail.com>
|
||||
Date: Wed, 31 Jul 2024 10:00:54 -0300
|
||||
Subject: [PATCH] avutil/hwcontext_vaapi: use the correct type for
|
||||
VASurfaceAttribExternalBuffers.buffers
|
||||
|
||||
Should fix ticket #11115.
|
||||
|
||||
Signed-off-by: James Almer <jamrial@gmail.com>
|
||||
---
|
||||
libavutil/hwcontext_vaapi.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libavutil/hwcontext_vaapi.c b/libavutil/hwcontext_vaapi.c
|
||||
index 4cb25dd032..15fd84aa40 100644
|
||||
--- a/libavutil/hwcontext_vaapi.c
|
||||
+++ b/libavutil/hwcontext_vaapi.c
|
||||
@@ -1225,7 +1225,7 @@ static int vaapi_map_from_drm(AVHWFramesContext *src_fc, AVFrame *dst,
|
||||
|
||||
if (!use_prime2 || vas != VA_STATUS_SUCCESS) {
|
||||
int k;
|
||||
- unsigned long buffer_handle;
|
||||
+ uintptr_t buffer_handle;
|
||||
VASurfaceAttribExternalBuffers buffer_desc;
|
||||
VASurfaceAttrib buffer_attrs[2] = {
|
||||
{
|
||||
--
|
||||
2.46.0
|
||||
|
@@ -0,0 +1,58 @@
|
||||
From 654bd47716c4f36719fb0f3f7fd8386d5ed0b916 Mon Sep 17 00:00:00 2001
|
||||
From: Ross Burton <ross.burton@arm.com>
|
||||
Date: Fri, 9 Aug 2024 11:32:00 +0100
|
||||
Subject: [PATCH] libavcodec/arm/mlpdsp_armv5te: fix label format to work with
|
||||
binutils 2.43
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
binutils 2.43 has stricter validation for labels[1] and results in errors
|
||||
when building ffmpeg for armv5:
|
||||
|
||||
src/libavcodec/arm/mlpdsp_armv5te.S:232: Error: junk at end of line, first unrecognized character is `0'
|
||||
|
||||
Remove the leading zero in the "01" label to resolve this error.
|
||||
|
||||
[1] https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=226749d5a6ff0d5c607d6428d6c81e1e7e7a994b
|
||||
|
||||
Signed-off-by: Ross Burton <ross.burton@arm.com>
|
||||
Signed-off-by: Martin Storsjö <martin@martin.st>
|
||||
---
|
||||
libavcodec/arm/mlpdsp_armv5te.S | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/libavcodec/arm/mlpdsp_armv5te.S b/libavcodec/arm/mlpdsp_armv5te.S
|
||||
index 4f9aa485fd..d31568611c 100644
|
||||
--- a/libavcodec/arm/mlpdsp_armv5te.S
|
||||
+++ b/libavcodec/arm/mlpdsp_armv5te.S
|
||||
@@ -229,7 +229,7 @@ A .endif
|
||||
.endif
|
||||
|
||||
// Begin loop
|
||||
-01:
|
||||
+1:
|
||||
.if TOTAL_TAPS == 0
|
||||
// Things simplify a lot in this case
|
||||
// In fact this could be pipelined further if it's worth it...
|
||||
@@ -241,7 +241,7 @@ A .endif
|
||||
str ST0, [PST, #-4]!
|
||||
str ST0, [PST, #4 * (MAX_BLOCKSIZE + MAX_FIR_ORDER)]
|
||||
str ST0, [PSAMP], #4 * MAX_CHANNELS
|
||||
- bne 01b
|
||||
+ bne 1b
|
||||
.else
|
||||
.if \fir_taps & 1
|
||||
.set LOAD_REG, 1
|
||||
@@ -333,7 +333,7 @@ T orr AC0, AC0, AC1
|
||||
str ST3, [PST, #-4]!
|
||||
str ST2, [PST, #4 * (MAX_BLOCKSIZE + MAX_FIR_ORDER)]
|
||||
str ST3, [PSAMP], #4 * MAX_CHANNELS
|
||||
- bne 01b
|
||||
+ bne 1b
|
||||
.endif
|
||||
b 99f
|
||||
|
||||
--
|
||||
2.46.0
|
||||
|
29
ffmpeg-5-CVE-2024-7055.patch
Normal file
29
ffmpeg-5-CVE-2024-7055.patch
Normal file
@@ -0,0 +1,29 @@
|
||||
From 3faadbe2a27e74ff5bb5f7904ec27bb1f5287dc8 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Niedermayer <michael@niedermayer.cc>
|
||||
Date: Thu, 18 Jul 2024 21:12:54 +0200
|
||||
Subject: [PATCH] avcodec/pnmdec: Use 64bit for input size check
|
||||
References: CVE-2024-7055
|
||||
References: bsc#1229026
|
||||
Upstream: Backport from upstream
|
||||
|
||||
Fixes: out of array read
|
||||
Fixes: poc3
|
||||
|
||||
Reported-by: VulDB CNA Team
|
||||
Found-by: CookedMelon
|
||||
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
|
||||
---
|
||||
libavcodec/pnmdec.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- ffmpeg-5.1.4/libavcodec/pnmdec.c
|
||||
+++ ffmpeg-5.1.4_new/libavcodec/pnmdec.c
|
||||
@@ -260,7 +260,7 @@
|
||||
break;
|
||||
case AV_PIX_FMT_GBRPF32:
|
||||
if (!s->half) {
|
||||
- if (avctx->width * avctx->height * 12 > s->bytestream_end - s->bytestream)
|
||||
+ if (avctx->width * avctx->height * 12LL > s->bytestream_end - s->bytestream)
|
||||
return AVERROR_INVALIDDATA;
|
||||
scale = 1.f / s->scale;
|
||||
if (s->endian) {
|
114
ffmpeg-5-CVE-2024-7272.patch
Normal file
114
ffmpeg-5-CVE-2024-7272.patch
Normal file
@@ -0,0 +1,114 @@
|
||||
From 9903ba28c28ab18dc7b7b6fb8571cc8b5caae1a6 Mon Sep 17 00:00:00 2001
|
||||
From: James Almer <jamrial@gmail.com>
|
||||
Date: Thu, 8 Sep 2022 19:43:03 -0300
|
||||
Subject: [PATCH] swsresample/swresample: error out on invalid layouts
|
||||
References: CVE-2024-7272
|
||||
References: bsc#1229261
|
||||
Upstream: Backport from upstream
|
||||
|
||||
If it's unsupported or invalid, then there's no point trying to rebuild it
|
||||
using a value that may have been derived from the same layout to begin with.
|
||||
|
||||
Move the checks before the attempts at copying the layout while at it.
|
||||
|
||||
Fixes ticket #9908.
|
||||
|
||||
Signed-off-by: James Almer <jamrial@gmail.com>
|
||||
---
|
||||
libswresample/swresample.c | 48 +++++++++++++++++++++++++-------------
|
||||
1 file changed, 32 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/libswresample/swresample.c b/libswresample/swresample.c
|
||||
index 6f04d130d3..5884f8d533 100644
|
||||
--- a/libswresample/swresample.c
|
||||
+++ b/libswresample/swresample.c
|
||||
@@ -227,7 +227,7 @@ av_cold int swr_init(struct SwrContext *s){
|
||||
s->in_ch_layout.order = AV_CHANNEL_ORDER_UNSPEC;
|
||||
s->in_ch_layout.nb_channels = s->user_in_ch_count;
|
||||
}
|
||||
- } else
|
||||
+ } else if (av_channel_layout_check(&s->user_in_chlayout))
|
||||
av_channel_layout_copy(&s->in_ch_layout, &s->user_in_chlayout);
|
||||
|
||||
if ((s->user_out_ch_count && s->user_out_ch_count != s->user_out_chlayout.nb_channels) ||
|
||||
@@ -240,17 +240,45 @@ av_cold int swr_init(struct SwrContext *s){
|
||||
s->out_ch_layout.order = AV_CHANNEL_ORDER_UNSPEC;
|
||||
s->out_ch_layout.nb_channels = s->user_out_ch_count;
|
||||
}
|
||||
- } else
|
||||
+ } else if (av_channel_layout_check(&s->user_out_chlayout))
|
||||
av_channel_layout_copy(&s->out_ch_layout, &s->user_out_chlayout);
|
||||
|
||||
if (!s->out.ch_count && !s->user_out_ch_layout)
|
||||
s->out.ch_count = s->out_ch_layout.nb_channels;
|
||||
if (!s-> in.ch_count && !s-> user_in_ch_layout)
|
||||
s-> in.ch_count = s->in_ch_layout.nb_channels;
|
||||
+
|
||||
+ if (!(ret = av_channel_layout_check(&s->in_ch_layout)) || s->in_ch_layout.nb_channels > SWR_CH_MAX) {
|
||||
+ if (ret)
|
||||
+ av_channel_layout_describe(&s->in_ch_layout, l1, sizeof(l1));
|
||||
+ av_log(s, AV_LOG_WARNING, "Input channel layout \"%s\" is invalid or unsupported.\n", ret ? l1 : "");
|
||||
+ return AVERROR(EINVAL);
|
||||
+ }
|
||||
+
|
||||
+ if (!(ret = av_channel_layout_check(&s->out_ch_layout)) || s->out_ch_layout.nb_channels > SWR_CH_MAX) {
|
||||
+ if (ret)
|
||||
+ av_channel_layout_describe(&s->out_ch_layout, l2, sizeof(l2));
|
||||
+ av_log(s, AV_LOG_WARNING, "Output channel layout \"%s\" is invalid or unsupported.\n", ret ? l2 : "");
|
||||
+ return AVERROR(EINVAL);
|
||||
+ }
|
||||
#else
|
||||
s->out.ch_count = s-> user_out_chlayout.nb_channels;
|
||||
s-> in.ch_count = s-> user_in_chlayout.nb_channels;
|
||||
|
||||
+ if (!(ret = av_channel_layout_check(&s->user_in_chlayout)) || s->user_in_chlayout.nb_channels > SWR_CH_MAX) {
|
||||
+ if (ret)
|
||||
+ av_channel_layout_describe(&s->user_in_chlayout, l1, sizeof(l1));
|
||||
+ av_log(s, AV_LOG_WARNING, "Input channel layout \"%s\" is invalid or unsupported.\n", ret ? l1 : "");
|
||||
+ return AVERROR(EINVAL);
|
||||
+ }
|
||||
+
|
||||
+ if (!(ret = av_channel_layout_check(&s->user_out_chlayout)) || s->user_out_chlayout.nb_channels > SWR_CH_MAX) {
|
||||
+ if (ret)
|
||||
+ av_channel_layout_describe(&s->user_out_chlayout, l2, sizeof(l2));
|
||||
+ av_log(s, AV_LOG_WARNING, "Output channel layout \"%s\" is invalid or unsupported.\n", ret ? l2 : "");
|
||||
+ return AVERROR(EINVAL);
|
||||
+ }
|
||||
+
|
||||
ret = av_channel_layout_copy(&s->in_ch_layout, &s->user_in_chlayout);
|
||||
ret |= av_channel_layout_copy(&s->out_ch_layout, &s->user_out_chlayout);
|
||||
if (ret < 0)
|
||||
@@ -261,18 +289,6 @@ av_cold int swr_init(struct SwrContext *s){
|
||||
|
||||
s->dither.method = s->user_dither_method;
|
||||
|
||||
- if (!av_channel_layout_check(&s->in_ch_layout) || s->in_ch_layout.nb_channels > SWR_CH_MAX) {
|
||||
- av_channel_layout_describe(&s->in_ch_layout, l1, sizeof(l1));
|
||||
- av_log(s, AV_LOG_WARNING, "Input channel layout \"%s\" is invalid or unsupported.\n", l1);
|
||||
- av_channel_layout_uninit(&s->in_ch_layout);
|
||||
- }
|
||||
-
|
||||
- if (!av_channel_layout_check(&s->out_ch_layout) || s->out_ch_layout.nb_channels > SWR_CH_MAX) {
|
||||
- av_channel_layout_describe(&s->out_ch_layout, l2, sizeof(l2));
|
||||
- av_log(s, AV_LOG_WARNING, "Output channel layout \"%s\" is invalid or unsupported.\n", l2);
|
||||
- av_channel_layout_uninit(&s->out_ch_layout);
|
||||
- }
|
||||
-
|
||||
switch(s->engine){
|
||||
#if CONFIG_LIBSOXR
|
||||
case SWR_ENGINE_SOXR: s->resampler = &swri_soxr_resampler; break;
|
||||
@@ -291,9 +307,9 @@ av_cold int swr_init(struct SwrContext *s){
|
||||
av_channel_layout_uninit(&s->in_ch_layout);
|
||||
}
|
||||
|
||||
- if (!s->in_ch_layout.nb_channels || s->in_ch_layout.order == AV_CHANNEL_ORDER_UNSPEC)
|
||||
+ if (s->in_ch_layout.order == AV_CHANNEL_ORDER_UNSPEC)
|
||||
av_channel_layout_default(&s->in_ch_layout, s->used_ch_count);
|
||||
- if (!s->out_ch_layout.nb_channels || s->out_ch_layout.order == AV_CHANNEL_ORDER_UNSPEC)
|
||||
+ if (s->out_ch_layout.order == AV_CHANNEL_ORDER_UNSPEC)
|
||||
av_channel_layout_default(&s->out_ch_layout, s->out.ch_count);
|
||||
|
||||
s->rematrix = av_channel_layout_compare(&s->out_ch_layout, &s->in_ch_layout) ||
|
||||
--
|
||||
2.41.0
|
||||
|
Reference in New Issue
Block a user