summaryrefslogtreecommitdiffstats
path: root/meta-multimedia/recipes-multimedia
diff options
context:
space:
mode:
authorAnkur Tyagi <ankur.tyagi85@gmail.com>2025-12-09 08:02:33 +1300
committerAnuj Mittal <anuj.mittal@oss.qualcomm.com>2025-12-11 08:00:53 +0530
commit91ea5aa570d289605f5ef4822840a104c7ded631 (patch)
tree3b42be790965ea766e2c4d46e6e31e3a87d18f59 /meta-multimedia/recipes-multimedia
parentb7fd86557f787334c0224d079f2f843277566f9c (diff)
downloadmeta-openembedded-91ea5aa570d289605f5ef4822840a104c7ded631.tar.gz
libavif: patch CVE-2025-48174
Details https://nvd.nist.gov/vuln/detail/CVE-2025-48174 Signed-off-by: Ankur Tyagi <ankur.tyagi85@gmail.com> Signed-off-by: Anuj Mittal <anuj.mittal@oss.qualcomm.com>
Diffstat (limited to 'meta-multimedia/recipes-multimedia')
-rw-r--r--meta-multimedia/recipes-multimedia/libavif/libavif/CVE-2025-48174_1.patch27
-rw-r--r--meta-multimedia/recipes-multimedia/libavif/libavif/CVE-2025-48174_2.patch31
-rw-r--r--meta-multimedia/recipes-multimedia/libavif/libavif/CVE-2025-48174_3.patch27
-rw-r--r--meta-multimedia/recipes-multimedia/libavif/libavif/CVE-2025-48174_4.patch72
-rw-r--r--meta-multimedia/recipes-multimedia/libavif/libavif_1.0.1.bb7
5 files changed, 163 insertions, 1 deletions
diff --git a/meta-multimedia/recipes-multimedia/libavif/libavif/CVE-2025-48174_1.patch b/meta-multimedia/recipes-multimedia/libavif/libavif/CVE-2025-48174_1.patch
new file mode 100644
index 0000000000..c9bee6c62a
--- /dev/null
+++ b/meta-multimedia/recipes-multimedia/libavif/libavif/CVE-2025-48174_1.patch
@@ -0,0 +1,27 @@
1From d9c933e79109becdbc6be9ddf9fbe00be03d533e Mon Sep 17 00:00:00 2001
2From: DanisJiang <43723722+DanisJiang@users.noreply.github.com>
3Date: Fri, 18 Apr 2025 17:31:53 +0800
4Subject: [PATCH] Add integer overflow checks to makeRoom.
5
6CVE: CVE-2025-48174
7Upstream-Status: Backport [https://github.com/AOMediaCodec/libavif/commit/e5fdefe7d1776e6c4cf1703c163a8c0535599029]
8(cherry picked from commit e5fdefe7d1776e6c4cf1703c163a8c0535599029)
9Signed-off-by: Ankur Tyagi <ankur.tyagi85@gmail.com>
10---
11 src/stream.c | 3 +++
12 1 file changed, 3 insertions(+)
13
14diff --git a/src/stream.c b/src/stream.c
15index c85ca31b..70e8bfaa 100644
16--- a/src/stream.c
17+++ b/src/stream.c
18@@ -320,6 +320,9 @@ avifBool avifROStreamReadAndEnforceVersion(avifROStream * stream, uint8_t enforc
19 static avifResult makeRoom(avifRWStream * stream, size_t size)
20 {
21 size_t neededSize = stream->offset + size;
22+ if (neededSize < stream->offset) {
23+ return AVIF_RESULT_INVALID_ARGUMENT;
24+ }
25 size_t newSize = stream->raw->size;
26 while (newSize < neededSize) {
27 newSize += AVIF_STREAM_BUFFER_INCREMENT;
diff --git a/meta-multimedia/recipes-multimedia/libavif/libavif/CVE-2025-48174_2.patch b/meta-multimedia/recipes-multimedia/libavif/libavif/CVE-2025-48174_2.patch
new file mode 100644
index 0000000000..4ba27d5a57
--- /dev/null
+++ b/meta-multimedia/recipes-multimedia/libavif/libavif/CVE-2025-48174_2.patch
@@ -0,0 +1,31 @@
1From 5bd6529e7e729718ac2d164859965771466c8410 Mon Sep 17 00:00:00 2001
2From: DanisJiang <43723722+DanisJiang@users.noreply.github.com>
3Date: Mon, 21 Apr 2025 10:45:59 +0800
4Subject: [PATCH] Add integer overflow check to makeRoom.
5
6CVE: CVE-2025-48174
7Upstream-Status: Backport [https://github.com/AOMediaCodec/libavif/commit/50a743062938a3828581d725facc9c2b92a1d109]
8(cherry picked from commit 50a743062938a3828581d725facc9c2b92a1d109)
9Signed-off-by: Ankur Tyagi <ankur.tyagi85@gmail.com>
10---
11 src/stream.c | 6 +++---
12 1 file changed, 3 insertions(+), 3 deletions(-)
13
14diff --git a/src/stream.c b/src/stream.c
15index 70e8bfaa..893ba3f0 100644
16--- a/src/stream.c
17+++ b/src/stream.c
18@@ -319,10 +319,10 @@ avifBool avifROStreamReadAndEnforceVersion(avifROStream * stream, uint8_t enforc
19 #define AVIF_STREAM_BUFFER_INCREMENT (1024 * 1024)
20 static avifResult makeRoom(avifRWStream * stream, size_t size)
21 {
22- size_t neededSize = stream->offset + size;
23- if (neededSize < stream->offset) {
24- return AVIF_RESULT_INVALID_ARGUMENT;
25+ if (size > SIZE_MAX - stream->offset) {
26+ return AVIF_RESULT_OUT_OF_MEMORY;
27 }
28+ size_t neededSize = stream->offset + size;
29 size_t newSize = stream->raw->size;
30 while (newSize < neededSize) {
31 newSize += AVIF_STREAM_BUFFER_INCREMENT;
diff --git a/meta-multimedia/recipes-multimedia/libavif/libavif/CVE-2025-48174_3.patch b/meta-multimedia/recipes-multimedia/libavif/libavif/CVE-2025-48174_3.patch
new file mode 100644
index 0000000000..2fddbeeb81
--- /dev/null
+++ b/meta-multimedia/recipes-multimedia/libavif/libavif/CVE-2025-48174_3.patch
@@ -0,0 +1,27 @@
1From 0b0b88596f21821af605ed316e996739820d3b17 Mon Sep 17 00:00:00 2001
2From: "Danis Jiang (Yuhao Jiang)"
3 <43723722+DanisJiang@users.noreply.github.com>
4Date: Thu, 24 Apr 2025 10:39:19 +0800
5Subject: [PATCH] Fix format errors
6
7CVE: CVE-2025-48174
8Upstream-Status: Backport [https://github.com/AOMediaCodec/libavif/commit/c9f1bea437f21cb78f9919c332922a3b0ba65e11]
9(cherry picked from commit c9f1bea437f21cb78f9919c332922a3b0ba65e11)
10Signed-off-by: Ankur Tyagi <ankur.tyagi85@gmail.com>
11---
12 src/stream.c | 2 +-
13 1 file changed, 1 insertion(+), 1 deletion(-)
14
15diff --git a/src/stream.c b/src/stream.c
16index 893ba3f0..b38c93c6 100644
17--- a/src/stream.c
18+++ b/src/stream.c
19@@ -320,7 +320,7 @@ avifBool avifROStreamReadAndEnforceVersion(avifROStream * stream, uint8_t enforc
20 static avifResult makeRoom(avifRWStream * stream, size_t size)
21 {
22 if (size > SIZE_MAX - stream->offset) {
23- return AVIF_RESULT_OUT_OF_MEMORY;
24+ return AVIF_RESULT_OUT_OF_MEMORY;
25 }
26 size_t neededSize = stream->offset + size;
27 size_t newSize = stream->raw->size;
diff --git a/meta-multimedia/recipes-multimedia/libavif/libavif/CVE-2025-48174_4.patch b/meta-multimedia/recipes-multimedia/libavif/libavif/CVE-2025-48174_4.patch
new file mode 100644
index 0000000000..ecdef9e5bc
--- /dev/null
+++ b/meta-multimedia/recipes-multimedia/libavif/libavif/CVE-2025-48174_4.patch
@@ -0,0 +1,72 @@
1From 083ce38f549183a3d74a0a6d2dc4d3f4b195867f Mon Sep 17 00:00:00 2001
2From: Wan-Teh Chang <wtc@google.com>
3Date: Sun, 27 Apr 2025 14:34:35 -0700
4Subject: [PATCH] Add another integer overflow check to makeRoom
5
6Replace the while loop with a formula in makeRoom.
7
8Test the integer overflow checks in makeRoom.
9
10See https://github.com/AOMediaCodec/libavif/pull/2768.
11
12CVE: CVE-2025-48174
13Upstream-Status: Backport [https://github.com/AOMediaCodec/libavif/commit/32eae7c5c1e72d9999cb31d02e333b6a76029bad]
14(cherry picked from commit 32eae7c5c1e72d9999cb31d02e333b6a76029bad)
15Signed-off-by: Ankur Tyagi <ankur.tyagi85@gmail.com>
16---
17 src/stream.c | 16 +++++++++-------
18 tests/gtest/avifstreamtest.cc | 13 +++++++++++++
19 2 files changed, 22 insertions(+), 7 deletions(-)
20
21diff --git a/src/stream.c b/src/stream.c
22index b38c93c6..e79e9691 100644
23--- a/src/stream.c
24+++ b/src/stream.c
25@@ -319,14 +319,16 @@ avifBool avifROStreamReadAndEnforceVersion(avifROStream * stream, uint8_t enforc
26 #define AVIF_STREAM_BUFFER_INCREMENT (1024 * 1024)
27 static avifResult makeRoom(avifRWStream * stream, size_t size)
28 {
29- if (size > SIZE_MAX - stream->offset) {
30- return AVIF_RESULT_OUT_OF_MEMORY;
31- }
32- size_t neededSize = stream->offset + size;
33- size_t newSize = stream->raw->size;
34- while (newSize < neededSize) {
35- newSize += AVIF_STREAM_BUFFER_INCREMENT;
36+ AVIF_CHECKERR(size <= SIZE_MAX - stream->offset, AVIF_RESULT_OUT_OF_MEMORY);
37+ size_t newSize = stream->offset + size;
38+ if (newSize <= stream->raw->size) {
39+ return AVIF_RESULT_OK;
40 }
41+ // Make newSize a multiple of AVIF_STREAM_BUFFER_INCREMENT.
42+ size_t rem = newSize % AVIF_STREAM_BUFFER_INCREMENT;
43+ size_t padding = (rem == 0) ? 0 : AVIF_STREAM_BUFFER_INCREMENT - rem;
44+ AVIF_CHECKERR(newSize <= SIZE_MAX - padding, AVIF_RESULT_OUT_OF_MEMORY);
45+ newSize += padding;
46 return avifRWDataRealloc(stream->raw, newSize);
47 }
48
49diff --git a/tests/gtest/avifstreamtest.cc b/tests/gtest/avifstreamtest.cc
50index af94bb82..e768939b 100644
51--- a/tests/gtest/avifstreamtest.cc
52+++ b/tests/gtest/avifstreamtest.cc
53@@ -204,6 +204,19 @@ TEST(StreamTest, Roundtrip) {
54 EXPECT_FALSE(avifROStreamSkip(&ro_stream, /*byteCount=*/1));
55 }
56
57+// Test the overflow checks in the makeRoom() function in src/stream.c.
58+TEST(StreamTest, OverflowChecksInMakeRoom) {
59+ testutil::AvifRwData rw_data;
60+ avifRWStream rw_stream;
61+ avifRWStreamStart(&rw_stream, &rw_data);
62+ const char ten_bytes[10] = {0};
63+ EXPECT_EQ(avifRWStreamWrite(&rw_stream, ten_bytes, 10), AVIF_RESULT_OK);
64+ EXPECT_EQ(avifRWStreamWrite(&rw_stream, ten_bytes, SIZE_MAX - 9),
65+ AVIF_RESULT_OUT_OF_MEMORY);
66+ EXPECT_EQ(avifRWStreamWrite(&rw_stream, ten_bytes, SIZE_MAX - 10),
67+ AVIF_RESULT_OUT_OF_MEMORY);
68+}
69+
70 //------------------------------------------------------------------------------
71
72 } // namespace
diff --git a/meta-multimedia/recipes-multimedia/libavif/libavif_1.0.1.bb b/meta-multimedia/recipes-multimedia/libavif/libavif_1.0.1.bb
index 8ddd16ee2a..bca6e40409 100644
--- a/meta-multimedia/recipes-multimedia/libavif/libavif_1.0.1.bb
+++ b/meta-multimedia/recipes-multimedia/libavif/libavif_1.0.1.bb
@@ -4,7 +4,12 @@ SECTION = "libs"
4LICENSE = "BSD-2-Clause" 4LICENSE = "BSD-2-Clause"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=c528b75b07425b5c1d2e34de98c397b5" 5LIC_FILES_CHKSUM = "file://LICENSE;md5=c528b75b07425b5c1d2e34de98c397b5"
6 6
7SRC_URI = "git://github.com/AOMediaCodec/libavif.git;protocol=https;branch=v1.0.x" 7SRC_URI = "git://github.com/AOMediaCodec/libavif.git;protocol=https;branch=v1.0.x \
8 file://CVE-2025-48174_1.patch \
9 file://CVE-2025-48174_2.patch \
10 file://CVE-2025-48174_3.patch \
11 file://CVE-2025-48174_4.patch \
12"
8 13
9S = "${WORKDIR}/git" 14S = "${WORKDIR}/git"
10SRCREV = "d1c26facaf5a8a97919ceee06814d05d10e25622" 15SRCREV = "d1c26facaf5a8a97919ceee06814d05d10e25622"