From e94d21a8238c65a278139c68b5a244deb0c752ea Mon Sep 17 00:00:00 2001 From: mike Date: Mon, 3 Oct 2011 15:40:15 +0000 Subject: [PATCH] Relaxed some of the page size checks in cupstestppd. git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@10036 7a7537e8-13f0-0310-91df-b6672ffda945 --- CHANGES-1.5.txt | 1 + systemv/cupstestppd.c | 41 +++++++++++++++++++++++++++++++---------- 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/CHANGES-1.5.txt b/CHANGES-1.5.txt index 2cb59eda69..4ddf7e1f2e 100644 --- a/CHANGES-1.5.txt +++ b/CHANGES-1.5.txt @@ -4,6 +4,7 @@ CHANGES-1.5.txt CHANGES IN CUPS V1.5.1 - Documentation updates (STR #3885) + - Relaxed some of the page size checks in cupstestppd. - The ipptool program now reports attributes that are repeated within the same attribute group. - Updated the PWG raster support to match the current draft diff --git a/systemv/cupstestppd.c b/systemv/cupstestppd.c index 5fc7a7bc84..bc134e6079 100644 --- a/systemv/cupstestppd.c +++ b/systemv/cupstestppd.c @@ -3198,19 +3198,32 @@ check_sizes(ppd_file_t *ppd, /* I - PPD file */ if (pwg_media && pwg_media->ppd) { + size_t ppdlen = strlen(pwg_media->ppd); + /* Length of standard PPD name */ + strlcpy(buf, pwg_media->ppd, sizeof(buf)); if (size->left == 0 && size->bottom == 0 && size->right == size->width && size->top == size->length) { snprintf(buf, sizeof(buf), "%s.Fullbleed", pwg_media->ppd); - if (strcmp(size->name, buf)) - is_ok = 0; + if (_cups_strcasecmp(size->name, buf)) + { + /* + * Allow an additional qualifier such as ".WithTab"... + */ + + size_t buflen = strlen(buf);/* Length of full bleed name */ + + if (_cups_strncasecmp(size->name, buf, buflen) || + size->name[buflen] != '.') + is_ok = 0; + } } else if (size->width > size->length) { - if ((ptr = pwg_media->ppd + strlen(pwg_media->ppd) - 7) - >= pwg_media->ppd && !strcmp(ptr, "Rotated")) + if ((ptr = pwg_media->ppd + ppdlen - 7) >= pwg_media->ppd && + !strcmp(ptr, "Rotated")) { if (strcmp(size->name, buf)) is_ok = 0; @@ -3226,11 +3239,17 @@ check_sizes(ppd_file_t *ppd, /* I - PPD file */ } } } - else - { - if ((!strncmp(size->name, pwg_media->ppd, strlen(pwg_media->ppd)))) + else if (!strncmp(size->name, pwg_media->ppd, ppdlen)) + { + /* + * Check for a proper qualifier (number or .something)... + */ + + ptr = size->name + ppdlen; + + if (isdigit(*ptr & 255)) { - for (ptr = size->name + strlen(pwg_media->ppd); *ptr; ptr ++) + for (ptr ++; *ptr; ptr ++) { if (!isdigit(*ptr & 255)) { @@ -3239,9 +3258,11 @@ check_sizes(ppd_file_t *ppd, /* I - PPD file */ } } } - else - is_ok = 0; + else if (*ptr != '.' && *ptr) + is_ok = 0; } + else + is_ok = 0; if (!is_ok) _cupsLangPrintf(stdout, -- 2.47.2