diff options
| author | Peter Marko <peter.marko@siemens.com> | 2025-11-27 19:03:23 +0100 |
|---|---|---|
| committer | Steve Sakoman <steve@sakoman.com> | 2025-12-05 07:13:42 -0800 |
| commit | eed16ae61397d8d77af378641253ffebf9cfee4d (patch) | |
| tree | 6dd57f2a42eb4cee1a308825067a24b893404f58 | |
| parent | b0b3210686a7c0e99d3c88ef1cc9a337d0a48afd (diff) | |
| download | poky-eed16ae61397d8d77af378641253ffebf9cfee4d.tar.gz | |
libpng: patch CVE-2025-64506
Pick commit per NVD report.
(From OE-Core rev: f3bdbd782eed2b597927df489a7d38a22fbba5ed)
Signed-off-by: Peter Marko <peter.marko@siemens.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
| -rw-r--r-- | meta/recipes-multimedia/libpng/files/CVE-2025-64506.patch | 57 | ||||
| -rw-r--r-- | meta/recipes-multimedia/libpng/libpng_1.6.42.bb | 1 |
2 files changed, 58 insertions, 0 deletions
diff --git a/meta/recipes-multimedia/libpng/files/CVE-2025-64506.patch b/meta/recipes-multimedia/libpng/files/CVE-2025-64506.patch new file mode 100644 index 0000000000..dc7fe00601 --- /dev/null +++ b/meta/recipes-multimedia/libpng/files/CVE-2025-64506.patch | |||
| @@ -0,0 +1,57 @@ | |||
| 1 | From 2bd84c019c300b78e811743fbcddb67c9d9bf821 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Cosmin Truta <ctruta@gmail.com> | ||
| 3 | Date: Fri, 7 Nov 2025 22:40:05 +0200 | ||
| 4 | Subject: [PATCH] Fix a heap buffer overflow in `png_write_image_8bit` | ||
| 5 | |||
| 6 | The condition guarding the pre-transform path incorrectly allowed 8-bit | ||
| 7 | input data to enter `png_write_image_8bit` which expects 16-bit input. | ||
| 8 | This caused out-of-bounds reads when processing 8-bit grayscale+alpha | ||
| 9 | images (GitHub #688), or 8-bit RGB or RGB+alpha images (GitHub #746), | ||
| 10 | with the `convert_to_8bit` flag set (an invalid combination that should | ||
| 11 | bypass the pre-transform path). | ||
| 12 | |||
| 13 | The second part of the condition, i.e. | ||
| 14 | |||
| 15 | colormap == 0 && convert_to_8bit != 0 | ||
| 16 | |||
| 17 | failed to verify that input was 16-bit, i.e. | ||
| 18 | |||
| 19 | linear != 0 | ||
| 20 | |||
| 21 | contradicting the comment "This only applies when the input is 16-bit". | ||
| 22 | |||
| 23 | The fix consists in restructuring the condition to ensure both the | ||
| 24 | `alpha` path and the `convert_to_8bit` path require linear (16-bit) | ||
| 25 | input. The corrected condition, i.e. | ||
| 26 | |||
| 27 | linear != 0 && (alpha != 0 || display->convert_to_8bit != 0) | ||
| 28 | |||
| 29 | matches the expectation of the `png_write_image_8bit` function and | ||
| 30 | prevents treating 8-bit buffers as 16-bit data. | ||
| 31 | |||
| 32 | Reported-by: Samsung-PENTEST <Samsung-PENTEST@users.noreply.github.com> | ||
| 33 | Reported-by: weijinjinnihao <weijinjinnihao@users.noreply.github.com> | ||
| 34 | Analyzed-by: degrigis <degrigis@users.noreply.github.com> | ||
| 35 | Reviewed-by: John Bowler <jbowler@acm.org> | ||
| 36 | |||
| 37 | CVE: CVE-2025-64506 | ||
| 38 | Upstream-Status: Backport [https://github.com/pnggroup/libpng/commit/2bd84c019c300b78e811743fbcddb67c9d9bf821] | ||
| 39 | Signed-off-by: Peter Marko <peter.marko@siemens.com> | ||
| 40 | --- | ||
| 41 | pngwrite.c | 3 +-- | ||
| 42 | 1 file changed, 1 insertion(+), 2 deletions(-) | ||
| 43 | |||
| 44 | diff --git a/pngwrite.c b/pngwrite.c | ||
| 45 | index 35a5d17b6..83148960e 100644 | ||
| 46 | --- a/pngwrite.c | ||
| 47 | +++ b/pngwrite.c | ||
| 48 | @@ -2142,8 +2142,7 @@ png_image_write_main(png_voidp argument) | ||
| 49 | * before it is written. This only applies when the input is 16-bit and | ||
| 50 | * either there is an alpha channel or it is converted to 8-bit. | ||
| 51 | */ | ||
| 52 | - if ((linear != 0 && alpha != 0 ) || | ||
| 53 | - (colormap == 0 && display->convert_to_8bit != 0)) | ||
| 54 | + if (linear != 0 && (alpha != 0 || display->convert_to_8bit != 0)) | ||
| 55 | { | ||
| 56 | png_bytep row = png_voidcast(png_bytep, png_malloc(png_ptr, | ||
| 57 | png_get_rowbytes(png_ptr, info_ptr))); | ||
diff --git a/meta/recipes-multimedia/libpng/libpng_1.6.42.bb b/meta/recipes-multimedia/libpng/libpng_1.6.42.bb index dec78e568c..ab043e3338 100644 --- a/meta/recipes-multimedia/libpng/libpng_1.6.42.bb +++ b/meta/recipes-multimedia/libpng/libpng_1.6.42.bb | |||
| @@ -15,6 +15,7 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}${LIBV}/${PV}/${BP}.tar.xz | |||
| 15 | file://CVE-2025-64505-01.patch \ | 15 | file://CVE-2025-64505-01.patch \ |
| 16 | file://CVE-2025-64505-02.patch \ | 16 | file://CVE-2025-64505-02.patch \ |
| 17 | file://CVE-2025-64505-03.patch \ | 17 | file://CVE-2025-64505-03.patch \ |
| 18 | file://CVE-2025-64506.patch \ | ||
| 18 | " | 19 | " |
| 19 | 20 | ||
| 20 | SRC_URI[sha256sum] = "c919dbc11f4c03b05aba3f8884d8eb7adfe3572ad228af972bb60057bdb48450" | 21 | SRC_URI[sha256sum] = "c919dbc11f4c03b05aba3f8884d8eb7adfe3572ad228af972bb60057bdb48450" |
