From: Michael R Sweet Date: Thu, 16 Apr 2026 17:15:31 +0000 (-0400) Subject: Fix regression in cupsRasterRead/WriteHeader. X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=HEAD;p=thirdparty%2Fcups.git Fix regression in cupsRasterRead/WriteHeader. --- diff --git a/cups/raster-stream.c b/cups/raster-stream.c index 3f897d49a1..105cd67431 100644 --- a/cups/raster-stream.c +++ b/cups/raster-stream.c @@ -1726,7 +1726,8 @@ cups_raster_read(cups_raster_t *r, // I - Raster stream static int // O - 1 on success, 0 on failure cups_raster_update(cups_raster_t *r) // I - Raster stream { - int ret = 1; // Return value + int ret = 1; // Return value + unsigned bytesPerLine; // Expected bytes per line if (r->sync == CUPS_RASTER_SYNCv1 || r->sync == CUPS_RASTER_REVSYNCv1 || @@ -1842,6 +1843,10 @@ cups_raster_update(cups_raster_t *r) // I - Raster stream ret = 0; } + bytesPerLine = (r->header.cupsWidth * r->header.cupsBitsPerPixel + 7) / 8; + if (r->header.cupsColorOrder == CUPS_ORDER_BANDED) + bytesPerLine *= r->header.cupsNumColors; + if (r->header.cupsBytesPerLine == 0) { _cupsRasterAddError("Invalid raster line length 0."); @@ -1857,7 +1862,7 @@ cups_raster_update(cups_raster_t *r) // I - Raster stream _cupsRasterAddError("Raster line length %u is not a multiple of the pixel size (%d).", r->header.cupsBytesPerLine, r->bpp); ret = 0; } - else if (r->header.cupsBytesPerLine != ((r->header.cupsWidth * r->header.cupsBitsPerPixel + 7) / 8)) + else if (r->header.cupsBytesPerLine != bytesPerLine) { _cupsRasterAddError("Raster line length %u does not match width (%u) and bits per pixel (%u).", r->header.cupsBytesPerLine, r->header.cupsWidth, r->header.cupsBitsPerPixel); ret = 0;