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