d164c1b7f0
Resolves: RHEL-60354
80 lines
3.1 KiB
Diff
80 lines
3.1 KiB
Diff
From 9939a70b750edd9d05270060cc5cf62ca98cfbe5 Mon Sep 17 00:00:00 2001
|
||
From: Michael R Sweet <msweet@msweet.org>
|
||
Date: Mon, 9 Sep 2024 10:03:10 -0400
|
||
Subject: [PATCH] Mirror IPP Everywhere printer changes from master.
|
||
|
||
---
|
||
cups/ppd-cache.c | 10 +++++-----
|
||
scheduler/ipp.c | 9 ++++++++-
|
||
2 files changed, 13 insertions(+), 6 deletions(-)
|
||
|
||
diff --git a/cups/ppd-cache.c b/cups/ppd-cache.c
|
||
index 9cdb90a4f..8a99a865c 100644
|
||
--- a/cups/ppd-cache.c
|
||
+++ b/cups/ppd-cache.c
|
||
@@ -3316,10 +3316,10 @@ _ppdCreateFromIPP2(
|
||
}
|
||
cupsFilePuts(fp, "\"\n");
|
||
|
||
- if ((attr = ippFindAttribute(supported, "printer-more-info", IPP_TAG_URI)) != NULL)
|
||
+ if ((attr = ippFindAttribute(supported, "printer-more-info", IPP_TAG_URI)) != NULL && ippValidateAttribute(attr))
|
||
cupsFilePrintf(fp, "*APSupplies: \"%s\"\n", ippGetString(attr, 0, NULL));
|
||
|
||
- if ((attr = ippFindAttribute(supported, "printer-charge-info-uri", IPP_TAG_URI)) != NULL)
|
||
+ if ((attr = ippFindAttribute(supported, "printer-charge-info-uri", IPP_TAG_URI)) != NULL && ippValidateAttribute(attr))
|
||
cupsFilePrintf(fp, "*cupsChargeInfoURI: \"%s\"\n", ippGetString(attr, 0, NULL));
|
||
|
||
if ((attr = ippFindAttribute(supported, "printer-strings-uri", IPP_TAG_URI)) != NULL)
|
||
@@ -3388,10 +3388,10 @@ _ppdCreateFromIPP2(
|
||
if (ippGetBoolean(ippFindAttribute(supported, "job-accounting-user-id-supported", IPP_TAG_BOOLEAN), 0))
|
||
cupsFilePuts(fp, "*cupsJobAccountingUserId: True\n");
|
||
|
||
- if ((attr = ippFindAttribute(supported, "printer-privacy-policy-uri", IPP_TAG_URI)) != NULL)
|
||
+ if ((attr = ippFindAttribute(supported, "printer-privacy-policy-uri", IPP_TAG_URI)) != NULL && ippValidateAttribute(attr))
|
||
cupsFilePrintf(fp, "*cupsPrivacyURI: \"%s\"\n", ippGetString(attr, 0, NULL));
|
||
|
||
- if ((attr = ippFindAttribute(supported, "printer-mandatory-job-attributes", IPP_TAG_KEYWORD)) != NULL)
|
||
+ if ((attr = ippFindAttribute(supported, "printer-mandatory-job-attributes", IPP_TAG_KEYWORD)) != NULL && ippValidateAttribute(attr))
|
||
{
|
||
char prefix = '\"'; // Prefix for string
|
||
|
||
@@ -3409,7 +3409,7 @@ _ppdCreateFromIPP2(
|
||
cupsFilePuts(fp, "\"\n");
|
||
}
|
||
|
||
- if ((attr = ippFindAttribute(supported, "printer-requested-job-attributes", IPP_TAG_KEYWORD)) != NULL)
|
||
+ if ((attr = ippFindAttribute(supported, "printer-requested-job-attributes", IPP_TAG_KEYWORD)) != NULL && ippValidateAttribute(attr))
|
||
{
|
||
char prefix = '\"'; // Prefix for string
|
||
|
||
diff --git a/scheduler/ipp.c b/scheduler/ipp.c
|
||
index d334f70cf..2d80a960e 100644
|
||
--- a/scheduler/ipp.c
|
||
+++ b/scheduler/ipp.c
|
||
@@ -1,7 +1,7 @@
|
||
/*
|
||
* IPP routines for the CUPS scheduler.
|
||
*
|
||
- * Copyright © 2020-2023 by OpenPrinting
|
||
+ * Copyright © 2020-2024 by OpenPrinting
|
||
* Copyright © 2007-2021 by Apple Inc.
|
||
* Copyright © 1997-2007 by Easy Software Products, all rights reserved.
|
||
*
|
||
@@ -5417,6 +5417,13 @@ create_local_bg_thread(
|
||
}
|
||
}
|
||
|
||
+ // Validate response from printer...
|
||
+ if (!ippValidateAttributes(response))
|
||
+ {
|
||
+ send_ipp_status(con, IPP_STATUS_ERROR_DEVICE, _("Printer returned invalid data: %s"), cupsLastErrorString());
|
||
+ goto finish_response;
|
||
+ }
|
||
+
|
||
// TODO: Grab printer icon file...
|
||
httpClose(http);
|
||
|
||
--
|
||
2.46.1
|
||
|