Control: tags 1105883 + patch
Control: tags 1105883 + pending
Control: tags 1105885 + patch
Control: tags 1105885 + pending


Dear maintainer,

I've prepared an NMU for libavif (versioned as 1.2.1-1.1) and
uploaded it to DELAYED/2. Please feel free to tell me if I
should cancel it.

Regards,
Salvatore
diffstat for libavif-1.2.1 libavif-1.2.1

 changelog                                                     |   12 ++
 patches/Add-integer-overflow-check-to-makeRoom.patch          |   33 ++++++++
 patches/Add-integer-overflow-checks-to-makeRoom.patch         |   29 +++++++
 patches/Declare-RowBytes-as-size_t-in-avifImageRGBToYUV.patch |   41 ++++++++++
 patches/Fix-format-errors.patch                               |   29 +++++++
 patches/series                                                |    4 
 6 files changed, 148 insertions(+)

diff -Nru libavif-1.2.1/debian/changelog libavif-1.2.1/debian/changelog
--- libavif-1.2.1/debian/changelog	2025-03-20 19:03:55.000000000 +0100
+++ libavif-1.2.1/debian/changelog	2025-05-17 16:03:36.000000000 +0200
@@ -1,3 +1,15 @@
+libavif (1.2.1-1.1) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * Add integer overflow checks to makeRoom (CVE-2025-48174) (Closes:
+    #1105885)
+  * Add integer overflow check to makeRoom (CVE-2025-48174) (Closes: #1105885)
+  * Fix format errors (CVE-2025-48174) (Closes: #1105885)
+  * Declare *RowBytes as size_t in avifImageRGBToYUV() (CVE-2025-48175)
+    (Closes: #1105883)
+
+ -- Salvatore Bonaccorso <car...@debian.org>  Sat, 17 May 2025 16:03:36 +0200
+
 libavif (1.2.1-1) unstable; urgency=medium
 
   * New upstream release.
diff -Nru libavif-1.2.1/debian/patches/Add-integer-overflow-check-to-makeRoom.patch libavif-1.2.1/debian/patches/Add-integer-overflow-check-to-makeRoom.patch
--- libavif-1.2.1/debian/patches/Add-integer-overflow-check-to-makeRoom.patch	1970-01-01 01:00:00.000000000 +0100
+++ libavif-1.2.1/debian/patches/Add-integer-overflow-check-to-makeRoom.patch	2025-05-17 15:44:27.000000000 +0200
@@ -0,0 +1,33 @@
+From: DanisJiang <43723722+danisji...@users.noreply.github.com>
+Date: Mon, 21 Apr 2025 10:45:59 +0800
+Subject: Add integer overflow check to makeRoom.
+Origin: https://github.com/AOMediaCodec/libavif/commit/50a743062938a3828581d725facc9c2b92a1d109
+Bug: https://github.com/AOMediaCodec/libavif/pull/2768
+Bug-Debian: https://bugs.debian.org/1105885
+Bug-Debian-Security: https://security-tracker.debian.org/tracker/CVE-2025-48174
+
+---
+ src/stream.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/stream.c b/src/stream.c
+index 41252f89d9b2..da1f019c5a4f 100644
+--- a/src/stream.c
++++ b/src/stream.c
+@@ -334,10 +334,10 @@ avifBool avifROStreamReadAndEnforceVersion(avifROStream * stream, uint8_t enforc
+ #define AVIF_STREAM_BUFFER_INCREMENT (1024 * 1024)
+ static avifResult makeRoom(avifRWStream * stream, size_t size)
+ {
+-    size_t neededSize = stream->offset + size;
+-    if (neededSize < stream->offset) {
+-        return AVIF_RESULT_INVALID_ARGUMENT;
++    if (size > SIZE_MAX - stream->offset) {
++        return  AVIF_RESULT_OUT_OF_MEMORY;
+     }
++    size_t neededSize = stream->offset + size;
+     size_t newSize = stream->raw->size;
+     while (newSize < neededSize) {
+         newSize += AVIF_STREAM_BUFFER_INCREMENT;
+-- 
+2.49.0
+
diff -Nru libavif-1.2.1/debian/patches/Add-integer-overflow-checks-to-makeRoom.patch libavif-1.2.1/debian/patches/Add-integer-overflow-checks-to-makeRoom.patch
--- libavif-1.2.1/debian/patches/Add-integer-overflow-checks-to-makeRoom.patch	1970-01-01 01:00:00.000000000 +0100
+++ libavif-1.2.1/debian/patches/Add-integer-overflow-checks-to-makeRoom.patch	2025-05-17 15:43:12.000000000 +0200
@@ -0,0 +1,29 @@
+From: DanisJiang <43723722+danisji...@users.noreply.github.com>
+Date: Fri, 18 Apr 2025 17:31:53 +0800
+Subject: Add integer overflow checks to makeRoom.
+Origin: https://github.com/AOMediaCodec/libavif/commit/e5fdefe7d1776e6c4cf1703c163a8c0535599029
+Bug: https://github.com/AOMediaCodec/libavif/pull/2768
+Bug-Debian: https://bugs.debian.org/1105885
+Bug-Debian-Security: https://security-tracker.debian.org/tracker/CVE-2025-48174
+
+---
+ src/stream.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/stream.c b/src/stream.c
+index 770c8ba04280..41252f89d9b2 100644
+--- a/src/stream.c
++++ b/src/stream.c
+@@ -335,6 +335,9 @@ avifBool avifROStreamReadAndEnforceVersion(avifROStream * stream, uint8_t enforc
+ static avifResult makeRoom(avifRWStream * stream, size_t size)
+ {
+     size_t neededSize = stream->offset + size;
++    if (neededSize < stream->offset) {
++        return AVIF_RESULT_INVALID_ARGUMENT;
++    }
+     size_t newSize = stream->raw->size;
+     while (newSize < neededSize) {
+         newSize += AVIF_STREAM_BUFFER_INCREMENT;
+-- 
+2.49.0
+
diff -Nru libavif-1.2.1/debian/patches/Declare-RowBytes-as-size_t-in-avifImageRGBToYUV.patch libavif-1.2.1/debian/patches/Declare-RowBytes-as-size_t-in-avifImageRGBToYUV.patch
--- libavif-1.2.1/debian/patches/Declare-RowBytes-as-size_t-in-avifImageRGBToYUV.patch	1970-01-01 01:00:00.000000000 +0100
+++ libavif-1.2.1/debian/patches/Declare-RowBytes-as-size_t-in-avifImageRGBToYUV.patch	2025-05-17 16:03:05.000000000 +0200
@@ -0,0 +1,41 @@
+From: Wan-Teh Chang <w...@google.com>
+Date: Fri, 18 Apr 2025 15:29:20 -0700
+Subject: Declare *RowBytes as size_t in avifImageRGBToYUV()
+Origin: https://github.com/AOMediaCodec/libavif/commit/64d956ed5a602f78cebf29da023280944ee92efd
+Bug: https://github.com/AOMediaCodec/libavif/pull/2768
+Bug-Debian: https://bugs.debian.org/1105883
+Bug-Debian-Security: https://security-tracker.debian.org/tracker/CVE-2025-48175
+
+Declare rgbRowBytes, yRowBytes, uRowBytes, and vRowBytes as size_t in
+avifImageRGBToYUV(). This causes multiplications with these variables to
+be performed in size_t (which may be 64 bits) instead of uint32_t. For
+very large image width and height, these multiplications may overflow
+uint32_t.
+
+Acknowledgements: DanisJiang
+https://github.com/AOMediaCodec/libavif/security/advisories/GHSA-762c-2538-h844
+---
+ src/reformat.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+--- a/src/reformat.c
++++ b/src/reformat.c
+@@ -259,14 +259,14 @@ avifResult avifImageRGBToYUV(avifImage *
+         const uint32_t offsetBytesG = state.rgb.offsetBytesG;
+         const uint32_t offsetBytesB = state.rgb.offsetBytesB;
+         const uint32_t offsetBytesA = state.rgb.offsetBytesA;
+-        const uint32_t rgbRowBytes = rgb->rowBytes;
++        const size_t rgbRowBytes = rgb->rowBytes;
+         const float rgbMaxChannelF = state.rgb.maxChannelF;
+         uint8_t * yPlane = image->yuvPlanes[AVIF_CHAN_Y];
+         uint8_t * uPlane = image->yuvPlanes[AVIF_CHAN_U];
+         uint8_t * vPlane = image->yuvPlanes[AVIF_CHAN_V];
+-        const uint32_t yRowBytes = image->yuvRowBytes[AVIF_CHAN_Y];
+-        const uint32_t uRowBytes = image->yuvRowBytes[AVIF_CHAN_U];
+-        const uint32_t vRowBytes = image->yuvRowBytes[AVIF_CHAN_V];
++        const size_t yRowBytes = image->yuvRowBytes[AVIF_CHAN_Y];
++        const size_t uRowBytes = image->yuvRowBytes[AVIF_CHAN_U];
++        const size_t vRowBytes = image->yuvRowBytes[AVIF_CHAN_V];
+         for (uint32_t outerJ = 0; outerJ < image->height; outerJ += 2) {
+             for (uint32_t outerI = 0; outerI < image->width; outerI += 2) {
+                 int blockW = 2, blockH = 2;
diff -Nru libavif-1.2.1/debian/patches/Fix-format-errors.patch libavif-1.2.1/debian/patches/Fix-format-errors.patch
--- libavif-1.2.1/debian/patches/Fix-format-errors.patch	1970-01-01 01:00:00.000000000 +0100
+++ libavif-1.2.1/debian/patches/Fix-format-errors.patch	2025-05-17 15:45:41.000000000 +0200
@@ -0,0 +1,29 @@
+From: "Danis Jiang (Yuhao Jiang)"
+ <43723722+danisji...@users.noreply.github.com>
+Date: Thu, 24 Apr 2025 10:39:19 +0800
+Subject: Fix format errors
+Origin: https://github.com/AOMediaCodec/libavif/commit/c9f1bea437f21cb78f9919c332922a3b0ba65e11
+Bug: https://github.com/AOMediaCodec/libavif/pull/2768
+Bug-Debian: https://bugs.debian.org/1105885
+Bug-Debian-Security: https://security-tracker.debian.org/tracker/CVE-2025-48174
+
+---
+ src/stream.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/stream.c b/src/stream.c
+index da1f019c5a4f..a2ae4f620a56 100644
+--- a/src/stream.c
++++ b/src/stream.c
+@@ -335,7 +335,7 @@ avifBool avifROStreamReadAndEnforceVersion(avifROStream * stream, uint8_t enforc
+ static avifResult makeRoom(avifRWStream * stream, size_t size)
+ {
+     if (size > SIZE_MAX - stream->offset) {
+-        return  AVIF_RESULT_OUT_OF_MEMORY;
++        return AVIF_RESULT_OUT_OF_MEMORY;
+     }
+     size_t neededSize = stream->offset + size;
+     size_t newSize = stream->raw->size;
+-- 
+2.49.0
+
diff -Nru libavif-1.2.1/debian/patches/series libavif-1.2.1/debian/patches/series
--- libavif-1.2.1/debian/patches/series	1970-01-01 01:00:00.000000000 +0100
+++ libavif-1.2.1/debian/patches/series	2025-05-17 16:02:38.000000000 +0200
@@ -0,0 +1,4 @@
+Add-integer-overflow-checks-to-makeRoom.patch
+Add-integer-overflow-check-to-makeRoom.patch
+Fix-format-errors.patch
+Declare-RowBytes-as-size_t-in-avifImageRGBToYUV.patch

Reply via email to