From 6cce9311e70b969cbcc6e3e1e74ae1756ed02d5b Mon Sep 17 00:00:00 2001
From: Matthias Clasen <mclasen@redhat.com>
Date: Mon, 30 Mar 2026 12:21:56 -0400
Subject: [PATCH] jpeg: Reject unsupported number of components

This condition was already checked for incremental loading.
This commit adds the same check in the nonincremental
code path.

Closes: #304

Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/gdk-pixbuf/-/commit/6cce9311e70b969cbcc6e3e1e74ae1756ed02d5b]
CVE: CVE-2026-5201
Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
---
 gdk-pixbuf/io-jpeg.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/gdk-pixbuf/io-jpeg.c b/gdk-pixbuf/io-jpeg.c
index 9ee1d21..d419812 100644
--- a/gdk-pixbuf/io-jpeg.c
+++ b/gdk-pixbuf/io-jpeg.c
@@ -625,6 +625,18 @@ gdk_pixbuf__real_jpeg_image_load (FILE *f, struct jpeg_decompress_struct *cinfo,
 	cinfo->do_fancy_upsampling = FALSE;
 	cinfo->do_block_smoothing = FALSE;
 
+	/* Reject unsupported component counts */
+	if (cinfo->output_components != 3 && cinfo->output_components != 4 &&
+	    !(cinfo->output_components == 1 &&
+	      cinfo->out_color_space == JCS_GRAYSCALE)) {
+		g_set_error (error,
+			     GDK_PIXBUF_ERROR,
+			     GDK_PIXBUF_ERROR_CORRUPT_IMAGE,
+			     _("Unsupported number of color components (%d)"),
+			     cinfo->output_components);
+		goto out;
+	}
+
 	pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, 
 				 cinfo->out_color_components == 4 ? TRUE : FALSE, 
 				 8,
-- 
2.43.0

