RHEL-69638 IPP Everywhere permanent queue is not removed if PPD generation fails
Resolves: RHEL-69638
This commit is contained in:
parent
d164c1b7f0
commit
14a4ae58dc
@ -0,0 +1,81 @@
|
|||||||
|
From 2e3f15832140454e2d21b327bfa4b05612b50b9a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Zdenek Dohnal <zdohnal@redhat.com>
|
||||||
|
Date: Mon, 2 Dec 2024 14:20:26 +0100
|
||||||
|
Subject: [PATCH] scheduler: Clean up failed IPP Everywhere permanent queues
|
||||||
|
|
||||||
|
If creating of permanent queue with IPP Everywhere model fails
|
||||||
|
in separate thread, the print queue is created as raw.
|
||||||
|
It would be great if we remove such queue if creation fails,
|
||||||
|
and marking them as temporary would make them to be removed automatically.
|
||||||
|
---
|
||||||
|
scheduler/ipp.c | 12 ++++++++++++
|
||||||
|
1 file changed, 12 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/scheduler/ipp.c b/scheduler/ipp.c
|
||||||
|
index 2d80a960e..089267c86 100644
|
||||||
|
--- a/scheduler/ipp.c
|
||||||
|
+++ b/scheduler/ipp.c
|
||||||
|
@@ -5294,6 +5294,7 @@ create_local_bg_thread(
|
||||||
|
/* Force printer to timeout and be deleted */
|
||||||
|
_cupsRWLockWrite(&printer->lock);
|
||||||
|
printer->state_time = 0;
|
||||||
|
+ printer->temporary = 1;
|
||||||
|
_cupsRWUnlock(&printer->lock);
|
||||||
|
|
||||||
|
send_ipp_status(con, IPP_STATUS_ERROR_DEVICE, _("Couldn't resolve mDNS URI \"%s\"."), printer->device_uri);
|
||||||
|
@@ -5314,6 +5315,7 @@ create_local_bg_thread(
|
||||||
|
/* Force printer to timeout and be deleted */
|
||||||
|
_cupsRWLockWrite(&printer->lock);
|
||||||
|
printer->state_time = 0;
|
||||||
|
+ printer->temporary = 1;
|
||||||
|
_cupsRWUnlock(&printer->lock);
|
||||||
|
|
||||||
|
send_ipp_status(con, IPP_STATUS_ERROR_DEVICE, _("Bad device URI \"%s\"."), device_uri);
|
||||||
|
@@ -5332,6 +5334,7 @@ create_local_bg_thread(
|
||||||
|
/* Force printer to timeout and be deleted */
|
||||||
|
_cupsRWLockWrite(&printer->lock);
|
||||||
|
printer->state_time = 0;
|
||||||
|
+ printer->temporary = 1;
|
||||||
|
_cupsRWUnlock(&printer->lock);
|
||||||
|
|
||||||
|
send_ipp_status(con, IPP_STATUS_ERROR_DEVICE, _("Unable to connect to %s:%d: %s"), host, port, cupsLastErrorString());
|
||||||
|
@@ -5420,6 +5423,12 @@ create_local_bg_thread(
|
||||||
|
// Validate response from printer...
|
||||||
|
if (!ippValidateAttributes(response))
|
||||||
|
{
|
||||||
|
+ /* Force printer to timeout and be deleted */
|
||||||
|
+ _cupsRWLockWrite(&printer->lock);
|
||||||
|
+ printer->state_time = 0;
|
||||||
|
+ printer->temporary = 1;
|
||||||
|
+ _cupsRWUnlock(&printer->lock);
|
||||||
|
+
|
||||||
|
send_ipp_status(con, IPP_STATUS_ERROR_DEVICE, _("Printer returned invalid data: %s"), cupsLastErrorString());
|
||||||
|
goto finish_response;
|
||||||
|
}
|
||||||
|
@@ -5453,6 +5462,7 @@ create_local_bg_thread(
|
||||||
|
/* Force printer to timeout and be deleted */
|
||||||
|
_cupsRWLockWrite(&printer->lock);
|
||||||
|
printer->state_time = 0;
|
||||||
|
+ printer->temporary = 1;
|
||||||
|
_cupsRWUnlock(&printer->lock);
|
||||||
|
|
||||||
|
send_ipp_status(con, IPP_STATUS_ERROR_DEVICE, _("Unable to read generated PPD: %s"), strerror(errno));
|
||||||
|
@@ -5468,6 +5478,7 @@ create_local_bg_thread(
|
||||||
|
/* Force printer to timeout and be deleted */
|
||||||
|
_cupsRWLockWrite(&printer->lock);
|
||||||
|
printer->state_time = 0;
|
||||||
|
+ printer->temporary = 1;
|
||||||
|
_cupsRWUnlock(&printer->lock);
|
||||||
|
|
||||||
|
send_ipp_status(con, IPP_STATUS_ERROR_DEVICE, _("Unable to create PPD for printer: %s"), strerror(errno));
|
||||||
|
@@ -5501,6 +5512,7 @@ create_local_bg_thread(
|
||||||
|
/* Force printer to timeout and be deleted */
|
||||||
|
_cupsRWLockWrite(&printer->lock);
|
||||||
|
printer->state_time = 0;
|
||||||
|
+ printer->temporary = 1;
|
||||||
|
_cupsRWUnlock(&printer->lock);
|
||||||
|
|
||||||
|
send_ipp_status(con, IPP_STATUS_ERROR_DEVICE, _("Unable to create PPD: %s"), cupsLastErrorString());
|
||||||
|
--
|
||||||
|
2.47.1
|
||||||
|
|
@ -22,7 +22,7 @@ Summary: CUPS printing system
|
|||||||
Name: cups
|
Name: cups
|
||||||
Epoch: 1
|
Epoch: 1
|
||||||
Version: 2.4.10
|
Version: 2.4.10
|
||||||
Release: 8%{?dist}
|
Release: 9%{?dist}
|
||||||
# backend/failover.c - BSD-3-Clause
|
# backend/failover.c - BSD-3-Clause
|
||||||
# cups/md5* - Zlib
|
# cups/md5* - Zlib
|
||||||
# scheduler/colorman.c - Apache-2.0 WITH LLVM-exception AND BSD-2-Clause
|
# scheduler/colorman.c - Apache-2.0 WITH LLVM-exception AND BSD-2-Clause
|
||||||
@ -98,6 +98,8 @@ Patch1007: 0001-ppdize-preset-and-template-names.patch
|
|||||||
Patch1008: 0001-quote-ppd-localized-strings.patch
|
Patch1008: 0001-quote-ppd-localized-strings.patch
|
||||||
Patch1009: 0001-fix-warnings-for-unused-vars.patch
|
Patch1009: 0001-fix-warnings-for-unused-vars.patch
|
||||||
Patch1010: 0001-Fix-make-and-model-whitespace-trimming-Issue-1096.patch
|
Patch1010: 0001-Fix-make-and-model-whitespace-trimming-Issue-1096.patch
|
||||||
|
# RHEL-69638 IPP Everywhere permanent queue is not removed if PPD generation fails
|
||||||
|
Patch1011: 0001-scheduler-Clean-up-failed-IPP-Everywhere-permanent-q.patch
|
||||||
|
|
||||||
|
|
||||||
##### Patches removed because IMHO they aren't no longer needed
|
##### Patches removed because IMHO they aren't no longer needed
|
||||||
@ -349,6 +351,8 @@ to CUPS daemon. This solution will substitute printer drivers and raw queues in
|
|||||||
%patch -P 1008 -p1 -b .quote-ppd-strings
|
%patch -P 1008 -p1 -b .quote-ppd-strings
|
||||||
%patch -P 1009 -p1 -b .unused-vars
|
%patch -P 1009 -p1 -b .unused-vars
|
||||||
%patch -P 1010 -p1 -b .trim-make-model
|
%patch -P 1010 -p1 -b .trim-make-model
|
||||||
|
# RHEL-69638 IPP Everywhere permanent queue is not removed if PPD generation fails
|
||||||
|
%patch -P 1011 -p1 -b .clean-failed-eve
|
||||||
|
|
||||||
|
|
||||||
# Log to the system journal by default (bug #1078781, bug #1519331).
|
# Log to the system journal by default (bug #1078781, bug #1519331).
|
||||||
@ -818,6 +822,9 @@ rm -f %{cups_serverbin}/backend/smb
|
|||||||
%{_mandir}/man7/ippeveps.7.gz
|
%{_mandir}/man7/ippeveps.7.gz
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Dec 02 2024 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.4.10-9
|
||||||
|
- RHEL-69638 IPP Everywhere permanent queue is not removed if PPD generation fails
|
||||||
|
|
||||||
* Mon Nov 25 2024 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.4.10-8
|
* Mon Nov 25 2024 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.4.10-8
|
||||||
- RHEL-45525 cups-2.4.10-2.el10: RHEL SAST Automation: address 1 High impact true positive(s)
|
- RHEL-45525 cups-2.4.10-2.el10: RHEL SAST Automation: address 1 High impact true positive(s)
|
||||||
- RHEL-60354 CVE-2024-47175 cups: remote command injection via attacker controlled data in PPD file
|
- RHEL-60354 CVE-2024-47175 cups: remote command injection via attacker controlled data in PPD file
|
||||||
|
Loading…
Reference in New Issue
Block a user