[cups/f18] backport fixes for STR #4072, STR #4124
Jiří Popelka
jpopelka at fedoraproject.org
Fri Sep 21 14:23:26 UTC 2012
commit dbefc1a655425ed608a482dc34eff56ae28e8110
Author: Jiri Popelka <jpopelka at redhat.com>
Date: Fri Sep 21 16:15:55 2012 +0200
backport fixes for STR #4072, STR #4124
cups-str4072.patch | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++
cups-str4124.patch | 12 +++++
cups.spec | 23 +++++++---
3 files changed, 147 insertions(+), 6 deletions(-)
---
diff --git a/cups-str4072.patch b/cups-str4072.patch
new file mode 100644
index 0000000..d27669c
--- /dev/null
+++ b/cups-str4072.patch
@@ -0,0 +1,118 @@
+diff -up cups-1.5.4/scheduler/ipp.c.str4072 cups-1.5.4/scheduler/ipp.c
+--- cups-1.5.4/scheduler/ipp.c.str4072 2012-09-21 16:12:17.804952422 +0200
++++ cups-1.5.4/scheduler/ipp.c 2012-09-21 16:13:15.032165941 +0200
+@@ -12131,7 +12131,8 @@ validate_job(cupsd_client_t *con, /* I
+ http_status_t status; /* Policy status */
+ ipp_attribute_t *attr, /* Current attribute */
+ *auth_info; /* auth-info attribute */
+- ipp_attribute_t *format; /* Document-format attribute */
++ ipp_attribute_t *format, /* Document-format attribute */
++ *name; /* Job-name attribute */
+ cups_ptype_t dtype; /* Destination type (printer/class) */
+ char super[MIME_MAX_SUPER],
+ /* Supertype of file */
+@@ -12158,7 +12159,7 @@ validate_job(cupsd_client_t *con, /* I
+ )
+ {
+ send_ipp_status(con, IPP_ATTRIBUTES,
+- _("Unsupported compression \"%s\"."),
++ _("Unsupported 'compression' value \"%s\"."),
+ attr->values[0].string.text);
+ ippAddString(con->response, IPP_TAG_UNSUPPORTED_GROUP, IPP_TAG_KEYWORD,
+ "compression", NULL, attr->values[0].string.text);
+@@ -12176,7 +12177,8 @@ validate_job(cupsd_client_t *con, /* I
+ if (sscanf(format->values[0].string.text, "%15[^/]/%31[^;]",
+ super, type) != 2)
+ {
+- send_ipp_status(con, IPP_BAD_REQUEST, _("Bad document-format \"%s\"."),
++ send_ipp_status(con, IPP_BAD_REQUEST,
++ _("Bad 'document-format' value \"%s\"."),
+ format->values[0].string.text);
+ return;
+ }
+@@ -12187,7 +12189,7 @@ validate_job(cupsd_client_t *con, /* I
+ cupsdLogMessage(CUPSD_LOG_INFO,
+ "Hint: Do you have the raw file printing rules enabled?");
+ send_ipp_status(con, IPP_DOCUMENT_FORMAT,
+- _("Unsupported document-format \"%s\"."),
++ _("Unsupported 'document-format' value \"%s\"."),
+ format->values[0].string.text);
+ ippAddString(con->response, IPP_TAG_UNSUPPORTED_GROUP, IPP_TAG_MIMETYPE,
+ "document-format", NULL, format->values[0].string.text);
+@@ -12195,6 +12197,76 @@ validate_job(cupsd_client_t *con, /* I
+ }
+ }
+
++ /*
++ * Is the job-name valid?
++ */
++
++ if ((name = ippFindAttribute(con->request, "job-name", IPP_TAG_ZERO)) != NULL)
++ {
++ int bad_name = 0; /* Is the job-name value bad? */
++
++ if ((name->value_tag != IPP_TAG_NAME && name->value_tag != IPP_TAG_NAMELANG) ||
++ name->num_values != 1)
++ {
++ bad_name = 1;
++ }
++ else
++ {
++ /*
++ * Validate that job-name conforms to RFC 5198 (Network Unicode) and
++ * IPP Everywhere requirements for "name" values...
++ */
++
++ const unsigned char *nameptr; /* Pointer into "job-name" attribute */
++
++ for (nameptr = (unsigned char *)name->values[0].string.text;
++ *nameptr;
++ nameptr ++)
++ {
++ if (*nameptr < ' ' && *nameptr != '\t')
++ break;
++ else if (*nameptr == 0x7f)
++ break;
++ else if ((*nameptr & 0xe0) == 0xc0)
++ {
++ if ((nameptr[1] & 0xc0) != 0x80)
++ break;
++
++ nameptr ++;
++ }
++ else if ((*nameptr & 0xf0) == 0xe0)
++ {
++ if ((nameptr[1] & 0xc0) != 0x80 ||
++ (nameptr[2] & 0xc0) != 0x80)
++ break;
++
++ nameptr += 2;
++ }
++ else if ((*nameptr & 0xf8) == 0xf0)
++ {
++ if ((nameptr[1] & 0xc0) != 0x80 ||
++ (nameptr[2] & 0xc0) != 0x80 ||
++ (nameptr[3] & 0xc0) != 0x80)
++ break;
++
++ nameptr += 3;
++ }
++ else if (*nameptr & 0x80)
++ break;
++ }
++
++ if (*nameptr)
++ bad_name = 1;
++ }
++
++ if (bad_name)
++ {
++ cupsdLogMessage(CUPSD_LOG_WARN,
++ "Unsupported 'job-name' value, deleting from request.");
++ ippDeleteAttribute(con->request, name);
++ }
++ }
++
+ /*
+ * Is the destination valid?
+ */
diff --git a/cups-str4124.patch b/cups-str4124.patch
new file mode 100644
index 0000000..338369a
--- /dev/null
+++ b/cups-str4124.patch
@@ -0,0 +1,12 @@
+diff -up cups-1.5.4/cups/backend.c.str4124 cups-1.5.4/cups/backend.c
+--- cups-1.5.4/cups/backend.c.str4124 2012-01-30 22:50:42.000000000 +0100
++++ cups-1.5.4/cups/backend.c 2012-09-21 16:02:42.638864512 +0200
+@@ -125,7 +125,7 @@ quote_string(const char *s) /* I - Stri
+ if (*s == '\\' || *s == '\"')
+ putchar('\\');
+
+- if (*s == '\n')
++ if (((*s & 255) < ' ' && *s != '\t') || *s == 0x7f)
+ putchar(' ');
+ else
+ putchar(*s);
diff --git a/cups.spec b/cups.spec
index 864a145..7d68cf3 100644
--- a/cups.spec
+++ b/cups.spec
@@ -12,7 +12,7 @@
Summary: Common Unix Printing System
Name: cups
Version: 1.5.4
-Release: 6%{?dist}
+Release: 7%{?dist}
License: GPLv2
Group: System Environment/Daemons
Source: http://ftp.easysw.com/pub/cups/%{version}/cups-%{version}-source.tar.bz2
@@ -70,9 +70,11 @@ Patch34: cups-avahi-5-services.patch
Patch35: cups-icc.patch
Patch36: cups-systemd-socket.patch
+Patch37: cups-ipp-no-create-job.patch
Patch40: cups-r10572.patch
-Patch41: cups-ipp-no-create-job.patch
+Patch41: cups-str4072.patch
+Patch42: cups-str4124.patch
Patch100: cups-lspp.patch
@@ -296,12 +298,18 @@ Sends IPP requests to the specified URI and tests and/or displays the results.
# Poettering).
%patch36 -p1 -b .systemd-socket
-# CUPS now includes the port number in the Host: header for HTTP requests. (r10572)
-%patch40 -p1 -b .r10572
-
# Don't use the IPP Create-Job operation, widely implemented
# unreliably (bug #854989).
-%patch41 -p1 -b .ipp-no-create-job
+%patch37 -p1 -b .ipp-no-create-job
+
+# CUPS now includes the port number in the Host: header for HTTP requests. (r10572)
+%patch40 -p1 -b .r10572
+# The scheduler no longer allows job-name values
+# that are not valid network Unicode strings (STR #4072)
+%patch41 -p1 -b .str4072
+# cupsBackendReport() now filters out all control characters
+# from the reported 1284 device IDs (STR #4124)
+%patch42 -p1 -b .str4124
%if %lspp
# LSPP support.
@@ -663,6 +671,9 @@ rm -f %{cups_serverbin}/backend/smb
%{_mandir}/man1/ipptool.1.gz
%changelog
+* Fri Sep 21 2012 Jiri Popelka <jpopelka at redhat.com> 1:1.5.4-7
+- backport fixes for STR #4072, STR #4124
+
* Thu Sep 20 2012 Tim Waugh <twaugh at redhat.com> 1:1.5.4-6
- The cups-libs subpackage contains code distributed under the zlib
license (md5.c).
More information about the scm-commits
mailing list