parent
6f8df0299d
commit
dbefc1a655
118
cups-str4072.patch
Normal file
118
cups-str4072.patch
Normal file
@ -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?
|
||||
*/
|
12
cups-str4124.patch
Normal file
12
cups-str4124.patch
Normal file
@ -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);
|
23
cups.spec
23
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@redhat.com> 1:1.5.4-7
|
||||
- backport fixes for STR #4072, STR #4124
|
||||
|
||||
* Thu Sep 20 2012 Tim Waugh <twaugh@redhat.com> 1:1.5.4-6
|
||||
- The cups-libs subpackage contains code distributed under the zlib
|
||||
license (md5.c).
|
||||
|
Loading…
Reference in New Issue
Block a user