diff --git a/SOURCES/0001-Fix-handling-of-MaxJobTime-0-Issue-5438.patch b/SOURCES/0001-Fix-handling-of-MaxJobTime-0-Issue-5438.patch new file mode 100644 index 0000000..e7f586c --- /dev/null +++ b/SOURCES/0001-Fix-handling-of-MaxJobTime-0-Issue-5438.patch @@ -0,0 +1,43 @@ +From 3e4dd41459dabc5d18edbe06eb5b81291885204b Mon Sep 17 00:00:00 2001 +From: Michael R Sweet +Date: Wed, 5 Dec 2018 12:18:19 -0500 +Subject: [PATCH] Fix handling of MaxJobTime 0 (Issue #5438) + +--- + CHANGES.md | 5 +++-- + scheduler/job.c | 4 +++- + scheduler/printers.c | 2 +- + 3 files changed, 7 insertions(+), 4 deletions(-) + +diff --git a/scheduler/job.c b/scheduler/job.c +index 3cbe56aa8..638f256db 100644 +--- a/scheduler/job.c ++++ b/scheduler/job.c +@@ -5148,8 +5148,10 @@ update_job(cupsd_job_t *job) /* I - Job to check */ + + if (cancel_after) + job->cancel_time = time(NULL) + ippGetInteger(cancel_after, 0); +- else ++ else if (MaxJobTime > 0) + job->cancel_time = time(NULL) + MaxJobTime; ++ else ++ job->cancel_time = 0; + } + } + } +diff --git a/scheduler/printers.c b/scheduler/printers.c +index bb99907ad..68239d85d 100644 +--- a/scheduler/printers.c ++++ b/scheduler/printers.c +@@ -3370,7 +3370,7 @@ add_printer_defaults(cupsd_printer_t *p)/* I - Printer */ + "document-format-default", NULL, "application/octet-stream"); + + if (!cupsGetOption("job-cancel-after", p->num_options, p->options)) +- ippAddInteger(p->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER, ++ ippAddInteger(p->attrs, IPP_TAG_PRINTER, MaxJobTime > 0 ? IPP_TAG_INTEGER : IPP_TAG_NOVALUE, + "job-cancel-after-default", MaxJobTime); + + if (!cupsGetOption("job-hold-until", p->num_options, p->options)) +-- +2.31.1 + diff --git a/SOURCES/0001-Fix-lpadmin-with-cupsIPPSupplies-and-cupsSNMPSupplie.patch b/SOURCES/0001-Fix-lpadmin-with-cupsIPPSupplies-and-cupsSNMPSupplie.patch new file mode 100644 index 0000000..8f8fa71 --- /dev/null +++ b/SOURCES/0001-Fix-lpadmin-with-cupsIPPSupplies-and-cupsSNMPSupplie.patch @@ -0,0 +1,62 @@ +From 9539c53065170e97836503074e770d7b5fbf9f83 Mon Sep 17 00:00:00 2001 +From: Michael R Sweet +Date: Tue, 16 Jul 2019 09:27:13 -0400 +Subject: [PATCH] Fix lpadmin with cupsIPPSupplies and cupsSNMPSupplies (Issue + #5610) + +--- + CHANGES.md | 2 ++ + systemv/lpadmin.c | 9 +++++++-- + 2 files changed, 9 insertions(+), 2 deletions(-) + +diff --git a/systemv/lpadmin.c b/systemv/lpadmin.c +index f428368d4..ca6d386b2 100644 +--- a/systemv/lpadmin.c ++++ b/systemv/lpadmin.c +@@ -1467,6 +1467,7 @@ set_printer_options( + (boolval = cupsGetOption("cupsIPPSupplies", num_options, + options)) != NULL) + { ++ ppdchanged = 1; + wrote_ipp_supplies = 1; + cupsFilePrintf(out, "*cupsIPPSupplies: %s\n", + (!_cups_strcasecmp(boolval, "true") || +@@ -1477,6 +1478,7 @@ set_printer_options( + (boolval = cupsGetOption("cupsSNMPSupplies", num_options, + options)) != NULL) + { ++ ppdchanged = 1; + wrote_snmp_supplies = 1; + cupsFilePrintf(out, "*cupsSNMPSupplies: %s\n", + (!_cups_strcasecmp(boolval, "true") || +@@ -1537,6 +1539,8 @@ set_printer_options( + (boolval = cupsGetOption("cupsIPPSupplies", num_options, + options)) != NULL) + { ++ ppdchanged = 1; ++ + cupsFilePrintf(out, "*cupsIPPSupplies: %s\n", + (!_cups_strcasecmp(boolval, "true") || + !_cups_strcasecmp(boolval, "yes") || +@@ -1547,6 +1551,8 @@ set_printer_options( + (boolval = cupsGetOption("cupsSNMPSupplies", num_options, + options)) != NULL) + { ++ ppdchanged = 1; ++ + cupsFilePrintf(out, "*cupsSNMPSupplies: %s\n", + (!_cups_strcasecmp(boolval, "true") || + !_cups_strcasecmp(boolval, "yes") || +@@ -1561,8 +1567,7 @@ set_printer_options( + * Do the request... + */ + +- ippDelete(cupsDoFileRequest(http, request, "/admin/", +- ppdchanged ? tempfile : file)); ++ ippDelete(cupsDoFileRequest(http, request, "/admin/", ppdchanged ? tempfile : file)); + + /* + * Clean up temp files... (TODO: catch signals in case we CTRL-C during +-- +2.31.1 + diff --git a/SOURCES/0001-cgi-bin-ipp-var.c-Use-guest-user-for-Move-Job-when-n.patch b/SOURCES/0001-cgi-bin-ipp-var.c-Use-guest-user-for-Move-Job-when-n.patch new file mode 100644 index 0000000..d2c0716 --- /dev/null +++ b/SOURCES/0001-cgi-bin-ipp-var.c-Use-guest-user-for-Move-Job-when-n.patch @@ -0,0 +1,16 @@ +diff --git a/cgi-bin/ipp-var.c b/cgi-bin/ipp-var.c +index 92f1501..7edc058 100644 +--- a/cgi-bin/ipp-var.c ++++ b/cgi-bin/ipp-var.c +@@ -275,10 +275,7 @@ cgiMoveJobs(http_t *http, /* I - Connection to server */ + */ + + if ((user = getenv("REMOTE_USER")) == NULL) +- { +- puts("Status: 401\n"); +- exit(0); +- } ++ user = "guest"; + + /* + * See if the user has already selected a new destination... diff --git a/SOURCES/0001-cups-dests.c-cupsGetNamedDest-set-IPP_STATUS_ERROR_N.patch b/SOURCES/0001-cups-dests.c-cupsGetNamedDest-set-IPP_STATUS_ERROR_N.patch new file mode 100644 index 0000000..3d12cc0 --- /dev/null +++ b/SOURCES/0001-cups-dests.c-cupsGetNamedDest-set-IPP_STATUS_ERROR_N.patch @@ -0,0 +1,65 @@ +From 4ddeb8544e2e5c63a405d9e093ac24704f3deb03 Mon Sep 17 00:00:00 2001 +From: Zdenek Dohnal +Date: Tue, 21 Jul 2020 12:54:22 +0200 +Subject: [PATCH] cups/dests.c: cupsGetNamedDest() - set + IPP_STATUS_ERROR_NOT_FOUND error if queue was not found lp.c/lpr.c: check for + IPP_STATUS_ERROR_NOT_FOUND and generate a proper message if hit + +--- + berkeley/lpr.c | 6 ++++++ + cups/dest.c | 3 +++ + systemv/lp.c | 6 ++++++ + 3 files changed, 15 insertions(+) + +diff --git a/berkeley/lpr.c b/berkeley/lpr.c +index 627fa6a4e..a8f78b881 100644 +--- a/berkeley/lpr.c ++++ b/berkeley/lpr.c +@@ -234,6 +234,12 @@ main(int argc, /* I - Number of command-line arguments */ + _cupsLangPrintf(stderr, _("%s: Error - add '/version=1.1' to server name."), argv[0]); + return (1); + } ++ else if (cupsLastError() == IPP_STATUS_ERROR_NOT_FOUND) ++ { ++ _cupsLangPrintf(stderr, ++ _("%s: Error - The printer or class does not exist."), argv[0]); ++ return (1); ++ } + break; + + case '#' : /* Number of copies */ +diff --git a/cups/dest.c b/cups/dest.c +index cde987a09..2017792a7 100644 +--- a/cups/dest.c ++++ b/cups/dest.c +@@ -1839,7 +1839,10 @@ cupsGetNamedDest(http_t *http, /* I - Connection to server or @code CUPS_HTT + cupsEnumDests(0, 1000, NULL, 0, 0, (cups_dest_cb_t)cups_name_cb, &data); + + if (!data.dest) ++ { ++ _cupsSetError(IPP_STATUS_ERROR_NOT_FOUND, _("The printer or class does not exist."), 1); + return (NULL); ++ } + + dest = data.dest; + } +diff --git a/systemv/lp.c b/systemv/lp.c +index 298c15825..d918b4b14 100644 +--- a/systemv/lp.c ++++ b/systemv/lp.c +@@ -161,6 +161,12 @@ main(int argc, /* I - Number of command-line arguments */ + "name."), argv[0]); + return (1); + } ++ else if (cupsLastError() == IPP_STATUS_ERROR_NOT_FOUND) ++ { ++ _cupsLangPrintf(stderr, ++ _("%s: Error - The printer or class does not exist."), argv[0]); ++ return (1); ++ } + break; + + case 'f' : /* Form */ +-- +2.31.1 + diff --git a/SOURCES/0001-scheduler-job.c-use-gziptoany-for-raw-files-not-just.patch b/SOURCES/0001-scheduler-job.c-use-gziptoany-for-raw-files-not-just.patch new file mode 100644 index 0000000..025361f --- /dev/null +++ b/SOURCES/0001-scheduler-job.c-use-gziptoany-for-raw-files-not-just.patch @@ -0,0 +1,38 @@ +From 08e9b6e1f8497a8159d6bd7cd6dc96ae79a2e704 Mon Sep 17 00:00:00 2001 +From: Bryan Mason +Date: Thu, 15 Jul 2021 16:26:27 -0700 +Subject: [PATCH] scheduler/job.c: use gziptoany for raw files (not just raw + printers) + +--- + scheduler/job.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/scheduler/job.c b/scheduler/job.c +index d8c2efcc6..b448acda5 100644 +--- a/scheduler/job.c ++++ b/scheduler/job.c +@@ -501,6 +501,7 @@ cupsdContinueJob(cupsd_job_t *job) /* I - Job */ + int backroot; /* Run backend as root? */ + int pid; /* Process ID of new filter process */ + int banner_page; /* 1 if banner page, 0 otherwise */ ++ int raw_file; /* 1 if file type is vnd.cups-raw */ + int filterfds[2][2] = { { -1, -1 }, { -1, -1 } }; + /* Pipes used between filters */ + int envc; /* Number of environment variables */ +@@ -746,8 +747,11 @@ cupsdContinueJob(cupsd_job_t *job) /* I - Job */ + * Add decompression/raw filter as needed... + */ + ++ raw_file = !strcmp(job->filetypes[job->current_file]->super, "application") && ++ !strcmp(job->filetypes[job->current_file]->type, "vnd.cups-raw"); ++ + if ((job->compressions[job->current_file] && (!job->printer->remote || job->num_files == 1)) || +- (!job->printer->remote && job->printer->raw && job->num_files > 1)) ++ (!job->printer->remote && (job->printer->raw || raw_file) && job->num_files > 1)) + { + /* + * Add gziptoany filter to the front of the list... +-- +2.31.1 + diff --git a/SOURCES/cups-restart-job-hold-until.patch b/SOURCES/cups-restart-job-hold-until.patch new file mode 100644 index 0000000..d235518 --- /dev/null +++ b/SOURCES/cups-restart-job-hold-until.patch @@ -0,0 +1,20 @@ +diff --git a/scheduler/ipp.c b/scheduler/ipp.c +index e0dbc4a..5e9a985 100644 +--- a/scheduler/ipp.c ++++ b/scheduler/ipp.c +@@ -9891,11 +9891,10 @@ restart_job(cupsd_client_t *con, /* I - Client connection */ + cupsdLogJob(job, CUPSD_LOG_DEBUG, + "Restarted by \"%s\" with job-hold-until=%s.", + username, attr->values[0].string.text); +- cupsdSetJobHoldUntil(job, attr->values[0].string.text, 0); +- +- cupsdAddEvent(CUPSD_EVENT_JOB_CONFIG_CHANGED | CUPSD_EVENT_JOB_STATE, +- NULL, job, "Job restarted by user with job-hold-until=%s", +- attr->values[0].string.text); ++ cupsdSetJobHoldUntil(job, attr->values[0].string.text, 1); ++ cupsdSetJobState(job, IPP_JOB_HELD, CUPSD_JOB_DEFAULT, ++ "Job restarted by user with job-hold-until=%s", ++ attr->values[0].string.text); + } + else + { diff --git a/SPECS/cups.spec b/SPECS/cups.spec index 8051d01..6c68cba 100644 --- a/SPECS/cups.spec +++ b/SPECS/cups.spec @@ -15,7 +15,7 @@ Summary: CUPS printing system Name: cups Epoch: 1 Version: 2.2.6 -Release: 40%{?dist} +Release: 41%{?dist} License: GPLv2+ and LGPLv2 with exceptions and AML Url: http://www.cups.org/ Source0: https://github.com/apple/cups/releases/download/v%{VERSION}/cups-%{VERSION}-source.tar.gz @@ -111,6 +111,18 @@ Patch61: cups-sssd.patch Patch62: cups-fix-preservejob-times.patch # 1927452 - CVE-2020-10001 cups: access to uninitialized buffer in ipp.c [rhel-8] Patch63: cups-cve202010001.patch +# 2006987 - Unauthenticated users can't move print jobs in Web UI +Patch64: 0001-cgi-bin-ipp-var.c-Use-guest-user-for-Move-Job-when-n.patch +# 2017919 - Setting 'MaxJobTime 0' does not set a job time to unlimited +Patch65: 0001-Fix-handling-of-MaxJobTime-0-Issue-5438.patch +# 1726383 - "lpadmin -p -o cupsSNMPSupplies:false" doesn't work +Patch66: 0001-Fix-lpadmin-with-cupsIPPSupplies-and-cupsSNMPSupplie.patch +# 1982891 - Printing of banner before PCL file only prints banner +Patch67: 0001-scheduler-job.c-use-gziptoany-for-raw-files-not-just.patch +# 2006591 - Trying to restart and hold a job doesn't work +Patch68: cups-restart-job-hold-until.patch +# 1811716 - lpr to non-existent printer reports incorrect error +Patch69: 0001-cups-dests.c-cupsGetNamedDest-set-IPP_STATUS_ERROR_N.patch Patch100: cups-lspp.patch @@ -365,6 +377,18 @@ Sends IPP requests to the specified URI and tests and/or displays the results. %patch62 -p1 -b .cups-fix-preservejob-times # 1927452 - CVE-2020-10001 cups: access to uninitialized buffer in ipp.c [rhel-8] %patch63 -p1 -b .cve202010001 +# 2006987 - Unauthenticated users can't move print jobs in Web UI +%patch64 -p1 -b .move-job +# 2017919 - Setting 'MaxJobTime 0' does not set a job time to unlimited +%patch65 -p1 -b .maxjobtime +# 1726383 - "lpadmin -p -o cupsSNMPSupplies:false" doesn't work +%patch66 -p1 -b .supplies +# 1982891 - Printing of banner before PCL file only prints banner +%patch67 -p1 -b .banner-rawfiles +# 2006591 - Trying to restart and hold a job doesn't work +%patch68 -p1 -b .restart-hold-job +# 1811716 - lpr to non-existent printer reports incorrect error +%patch69 -p1 -b .lplpr-better-error sed -i -e '1iMaxLogSize 0' conf/cupsd.conf.in @@ -775,6 +799,14 @@ rm -f %{cups_serverbin}/backend/smb %{_mandir}/man5/ipptoolfile.5.gz %changelog +* Wed Nov 03 2021 Zdenek Dohnal - 1:2.2.6-41 +- 2006987 - Unauthenticated users can't move print jobs in Web UI +- 2017919 - Setting 'MaxJobTime 0' does not set a job time to unlimited +- 1726383 - "lpadmin -p -o cupsSNMPSupplies:false" doesn't work +- 1982891 - Printing of banner before PCL file only prints banner +- 2006591 - Trying to restart and hold a job doesn't work +- 1811716 - lpr to non-existent printer reports incorrect error + * Fri May 14 2021 Zdenek Dohnal - 1:2.2.6-40 - 1955964 - PreserveJobHistory doesn't work with seconds - 1927452 - CVE-2020-10001 cups: access to uninitialized buffer in ipp.c [rhel-8]