From e8784d1d7e47cabf48f57757fd82a1624373fff5 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Thu, 4 Jan 2024 13:00:35 +0100 Subject: [PATCH] ppd-emit.c: Fix crash if there is no page size for "Custom" Original report/fix: https://github.com/OpenPrinting/cups/issues/849 --- ppd/ppd-emit.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/ppd/ppd-emit.c b/ppd/ppd-emit.c index a7855578..4275527f 100644 --- a/ppd/ppd-emit.c +++ b/ppd/ppd-emit.c @@ -949,19 +949,24 @@ ppdEmitString(ppd_file_t *ppd, // I - PPD file record // parameter positions defined in the PPD file... // - ppd_attr_t *attr; // PPD attribute + ppd_attr_t *attr; // PPD attribute int pos, // Position of custom value orientation; // Orientation to use float values[5]; // Values for custom command - strlcpy(bufptr, "%%BeginFeature: *CustomPageSize True\n", + strlcpy(bufptr, "%%BeginFeature: *CustomPageSize True\n", (size_t)(bufend - bufptr + 1)); bufptr += 37; - size = ppdPageSize(ppd, "Custom"); + if ((size = ppdPageSize(ppd, "Custom")) == NULL) + { + free(buffer); + free(choices); + return (NULL); + } - memset(values, 0, sizeof(values)); + memset(values, 0, sizeof(values)); if ((attr = ppdFindAttr(ppd, "ParamCustomPageSize", "Width")) != NULL) {