From c8c5577ded0f207822d4e4b1f3a1923701f76592 Mon Sep 17 00:00:00 2001 From: Benjamin Gordon Date: Mon, 25 Mar 2024 09:59:21 -0600 Subject: [PATCH] Add additional parameter validation to _cupsRasterWritePixels If len is 0, the function does a lot of calculations that ultimately don't produce any output. This can be skipped with an early return. If cupsBytesPerLine is 0, this triggers a divide by zero if the output isn't compressed. This is an error on the caller's part, but it's nicer to return an error than to crash. --- cups/raster-stream.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cups/raster-stream.c b/cups/raster-stream.c index d64eefcefc..f130670097 100644 --- a/cups/raster-stream.c +++ b/cups/raster-stream.c @@ -1407,7 +1407,7 @@ _cupsRasterWritePixels( DEBUG_printf("_cupsRasterWritePixels(r=%p, p=%p, len=%u), remaining=%u", (void *)r, (void *)p, len, r->remaining); - if (r == NULL || r->mode == CUPS_RASTER_READ || r->remaining == 0) + if (r == NULL || r->mode == CUPS_RASTER_READ || r->remaining == 0 || len == 0 || r->header.cupsBytesPerLine == 0) return (0); if (!r->compressed) -- 2.47.2