- 1.4.4. Fixes several security vulnerabilities (bug #605399):
CVE-2010-0540, CVE-2010-0542, CVE-2010-1748. No longer need str3503, str3399, str3505, str3541, str3425p2 or CVE-2010-0302 patches. - Fix lpd provides. - Added comments for all sources and patches. - Reset status after successful ipp job (bug #548219, STR #3460). - Install udev rules in correct place (bug #530378). - Removed unapplied gnutls-gcrypt-threads patch. Fixed typos in descriptions for lpd and php sub-packages. - Add an SNMP query for Ricoh's device ID OID (STR #3552). - Mark DNS-SD Device IDs that have been guessed at with "FZY:1;". - Add an SNMP query for HP's device ID OID (STR #3552).
This commit is contained in:
parent
fdf33eb9cd
commit
8399d834ef
@ -42,3 +42,4 @@ cups-1.4.0-source.tar.bz2
|
||||
cups-1.4b2-source.tar.bz2
|
||||
cups-1.4b2-svn8404-source.tar.bz2
|
||||
cups-1.4.3-source.tar.bz2
|
||||
cups-1.4.4-source.tar.bz2
|
||||
|
@ -1,23 +0,0 @@
|
||||
diff -up cups-1.4.3/scheduler/select.c.CVE-2010-0302 cups-1.4.3/scheduler/select.c
|
||||
--- cups-1.4.3/scheduler/select.c.CVE-2010-0302 2010-01-14 23:40:19.000000000 +0100
|
||||
+++ cups-1.4.3/scheduler/select.c 2010-03-31 13:54:30.000000000 +0200
|
||||
@@ -454,7 +454,8 @@ cupsdDoSelect(long timeout) /* I - Time
|
||||
if (fdptr->read_cb && event->filter == EVFILT_READ)
|
||||
(*(fdptr->read_cb))(fdptr->data);
|
||||
|
||||
- if (fdptr->use > 1 && fdptr->write_cb && event->filter == EVFILT_WRITE)
|
||||
+ if (fdptr->use > 1 && fdptr->write_cb && event->filter == EVFILT_WRITE &&
|
||||
+ !cupsArrayFind(cupsd_inactive_fds, fdptr))
|
||||
(*(fdptr->write_cb))(fdptr->data);
|
||||
|
||||
release_fd(fdptr);
|
||||
@@ -500,7 +501,8 @@ cupsdDoSelect(long timeout) /* I - Time
|
||||
(*(fdptr->read_cb))(fdptr->data);
|
||||
|
||||
if (fdptr->use > 1 && fdptr->write_cb &&
|
||||
- (event->events & (EPOLLOUT | EPOLLERR | EPOLLHUP)))
|
||||
+ (event->events & (EPOLLOUT | EPOLLERR | EPOLLHUP)) &&
|
||||
+ !cupsArrayFind(cupsd_inactive_fds, fdptr))
|
||||
(*(fdptr->write_cb))(fdptr->data);
|
||||
|
||||
release_fd(fdptr);
|
38
cups-dnssd-deviceid.patch
Normal file
38
cups-dnssd-deviceid.patch
Normal file
@ -0,0 +1,38 @@
|
||||
diff -up cups-1.4.3/backend/dnssd.c.dnssd-deviceid.patch cups-1.4.3/backend/dnssd.c
|
||||
--- cups-1.4.3/backend/dnssd.c.dnssd-deviceid.patch 2010-04-16 19:36:12.226148774 +0100
|
||||
+++ cups-1.4.3/backend/dnssd.c 2010-04-16 19:39:53.314148240 +0100
|
||||
@@ -1192,15 +1192,22 @@ find_device (cups_array_t *devices,
|
||||
if (device->device_id)
|
||||
free(device->device_id);
|
||||
|
||||
+ if (device_id[0])
|
||||
+ {
|
||||
+ /* Mark this as the real device ID. */
|
||||
+ ptr = device_id + strlen(device_id);
|
||||
+ snprintf(ptr, sizeof(device_id) - (ptr - device_id), "FZY:0;");
|
||||
+ }
|
||||
+
|
||||
if (!device_id[0] && strcmp(model, "Unknown"))
|
||||
{
|
||||
if (make_and_model[0])
|
||||
- snprintf(device_id, sizeof(device_id), "MFG:%s;MDL:%s;",
|
||||
+ snprintf(device_id, sizeof(device_id), "MFG:%s;MDL:%s;FZY:1;",
|
||||
make_and_model, model);
|
||||
else if (!strncasecmp(model, "designjet ", 10))
|
||||
- snprintf(device_id, sizeof(device_id), "MFG:HP;MDL:%s", model + 10);
|
||||
+ snprintf(device_id, sizeof(device_id), "MFG:HP;MDL:%s;FZY:1;", model + 10);
|
||||
else if (!strncasecmp(model, "stylus ", 7))
|
||||
- snprintf(device_id, sizeof(device_id), "MFG:EPSON;MDL:%s", model + 7);
|
||||
+ snprintf(device_id, sizeof(device_id), "MFG:EPSON;MDL:%s;FZY:1;", model + 7);
|
||||
else if ((ptr = strchr(model, ' ')) != NULL)
|
||||
{
|
||||
/*
|
||||
@@ -1210,7 +1217,7 @@ find_device (cups_array_t *devices,
|
||||
memcpy(make_and_model, model, ptr - model);
|
||||
make_and_model[ptr - model] = '\0';
|
||||
|
||||
- snprintf(device_id, sizeof(device_id), "MFG:%s;MDL:%s",
|
||||
+ snprintf(device_id, sizeof(device_id), "MFG:%s;MDL:%s;FZY:1;",
|
||||
make_and_model, ptr + 1);
|
||||
}
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
--- cups-1.2.6/cups/usersys.c.getpass 2006-08-29 16:51:19.000000000 +0100
|
||||
+++ cups-1.2.6/cups/usersys.c 2006-11-13 16:19:32.000000000 +0000
|
||||
@@ -46,6 +46,8 @@
|
||||
diff -up cups-1.4.4/cups/usersys.c.getpass cups-1.4.4/cups/usersys.c
|
||||
--- cups-1.4.4/cups/usersys.c.getpass 2010-03-30 23:07:33.000000000 +0100
|
||||
+++ cups-1.4.4/cups/usersys.c 2010-06-18 09:38:08.368096897 +0100
|
||||
@@ -41,6 +41,8 @@
|
||||
#include "globals.h"
|
||||
#include <stdlib.h>
|
||||
#include <sys/stat.h>
|
||||
@ -8,11 +9,11 @@
|
||||
+#include <signal.h>
|
||||
#ifdef WIN32
|
||||
# include <windows.h>
|
||||
#endif /* WIN32 */
|
||||
@@ -455,7 +457,29 @@
|
||||
const char * /* O - Password */
|
||||
_cupsGetPassword(const char *prompt) /* I - Prompt string */
|
||||
{
|
||||
#else
|
||||
@@ -406,7 +408,29 @@ _cupsGetPassword(const char *prompt) /*
|
||||
* Use the standard getpass function to get a password from the console.
|
||||
*/
|
||||
|
||||
- return (getpass(prompt));
|
||||
+ static char password[100];
|
||||
+ struct termios oldtio, newtio;
|
||||
@ -37,6 +38,6 @@
|
||||
+ else
|
||||
+ password[0] ='\0';
|
||||
+ return password;
|
||||
}
|
||||
#endif /* WIN32 */
|
||||
}
|
||||
|
||||
|
@ -1,56 +0,0 @@
|
||||
diff -up cups-1.4.2/cups/http.c.gnutls-gcrypt-threads cups-1.4.2/cups/http.c
|
||||
--- cups-1.4.2/cups/http.c.gnutls-gcrypt-threads 2009-12-21 16:50:58.931552118 +0000
|
||||
+++ cups-1.4.2/cups/http.c 2009-12-21 16:51:15.047552357 +0000
|
||||
@@ -1161,6 +1161,9 @@ httpHead(http_t *http, /* I - Conne
|
||||
return (http_send(http, HTTP_HEAD, uri));
|
||||
}
|
||||
|
||||
+#ifdef HAVE_GNUTLS
|
||||
+GCRY_THREAD_OPTION_PTHREAD_IMPL;
|
||||
+#endif
|
||||
|
||||
/*
|
||||
* 'httpInitialize()' - Initialize the HTTP interface library and set the
|
||||
@@ -1205,6 +1208,7 @@ httpInitialize(void)
|
||||
#endif /* WIN32 */
|
||||
|
||||
#ifdef HAVE_GNUTLS
|
||||
+ gcry_control (GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread);
|
||||
gnutls_global_init();
|
||||
#endif /* HAVE_GNUTLS */
|
||||
|
||||
diff -up cups-1.4.2/cups/http-private.h.gnutls-gcrypt-threads cups-1.4.2/cups/http-private.h
|
||||
--- cups-1.4.2/cups/http-private.h.gnutls-gcrypt-threads 2009-04-07 16:48:14.000000000 +0100
|
||||
+++ cups-1.4.2/cups/http-private.h 2009-12-21 16:51:15.049552624 +0000
|
||||
@@ -98,6 +98,8 @@ extern BIO_METHOD *_httpBIOMethods(void)
|
||||
* The GNU TLS library is more of a "bare metal" SSL/TLS library...
|
||||
*/
|
||||
# include <gnutls/gnutls.h>
|
||||
+# include <gcrypt.h>
|
||||
+# include <pthread.h>
|
||||
|
||||
typedef struct
|
||||
{
|
||||
diff -up cups-1.4.2/scheduler/server.c.gnutls-gcrypt-threads cups-1.4.2/scheduler/server.c
|
||||
--- cups-1.4.2/scheduler/server.c.gnutls-gcrypt-threads 2008-09-10 23:05:29.000000000 +0100
|
||||
+++ cups-1.4.2/scheduler/server.c 2009-12-21 16:51:15.048553044 +0000
|
||||
@@ -35,7 +35,9 @@
|
||||
*/
|
||||
|
||||
static int started = 0;
|
||||
-
|
||||
+#if !defined(HAVE_LIBSSL) && defined(HAVE_GNUTLS)
|
||||
+GCRY_THREAD_OPTION_PTHREAD_IMPL;
|
||||
+#endif
|
||||
|
||||
/*
|
||||
* 'cupsdStartServer()' - Start the server.
|
||||
@@ -75,7 +77,7 @@ cupsdStartServer(void)
|
||||
/*
|
||||
* Initialize the encryption libraries...
|
||||
*/
|
||||
-
|
||||
+ gcry_control (GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread);
|
||||
gnutls_global_init();
|
||||
#endif /* HAVE_LIBSSL */
|
||||
|
@ -1,16 +1,19 @@
|
||||
diff -up cups-1.4.3/scheduler/network.c.hostnamelookups cups-1.4.3/scheduler/network.c
|
||||
--- cups-1.4.3/scheduler/network.c.hostnamelookups 2009-04-28 01:23:38.000000000 +0100
|
||||
+++ cups-1.4.3/scheduler/network.c 2010-05-06 15:11:34.652926030 +0100
|
||||
@@ -155,7 +155,7 @@ cupsdNetIFUpdate(void)
|
||||
diff -up cups-1.4.4/scheduler/network.c.hostnamelookups cups-1.4.4/scheduler/network.c
|
||||
--- cups-1.4.4/scheduler/network.c.hostnamelookups 2010-04-09 23:42:09.000000000 +0100
|
||||
+++ cups-1.4.4/scheduler/network.c 2010-06-18 11:13:02.331979867 +0100
|
||||
@@ -154,11 +154,7 @@ cupsdNetIFUpdate(void)
|
||||
* Try looking up the hostname for the address as needed...
|
||||
*/
|
||||
|
||||
-#ifdef __APPLE__
|
||||
if (HostNameLookups)
|
||||
-#else
|
||||
- if (HostNameLookups || RemotePort)
|
||||
+ if (HostNameLookups)
|
||||
-#endif /* __APPLE__ */
|
||||
httpAddrLookup((http_addr_t *)(addr->ifa_addr), hostname,
|
||||
sizeof(hostname));
|
||||
else
|
||||
@@ -163,7 +163,7 @@ cupsdNetIFUpdate(void)
|
||||
@@ -166,7 +162,7 @@ cupsdNetIFUpdate(void)
|
||||
/*
|
||||
* Map the default server address and localhost to the server name
|
||||
* and localhost, respectively; for all other addresses, use the
|
||||
|
21
cups-hp-deviceid-oid.patch
Normal file
21
cups-hp-deviceid-oid.patch
Normal file
@ -0,0 +1,21 @@
|
||||
diff -up cups-1.4.3/backend/snmp.c.hp-deviceid-oid cups-1.4.3/backend/snmp.c
|
||||
--- cups-1.4.3/backend/snmp.c.hp-deviceid-oid 2009-12-08 02:13:42.000000000 +0000
|
||||
+++ cups-1.4.3/backend/snmp.c 2010-04-13 15:00:26.486148914 +0100
|
||||
@@ -194,6 +194,7 @@ static const int UriOID[] = { CUPS_OID_p
|
||||
static const int LexmarkProductOID[] = { 1,3,6,1,4,1,641,2,1,2,1,2,1,-1 };
|
||||
static const int LexmarkProductOID2[] = { 1,3,6,1,4,1,674,10898,100,2,1,2,1,2,1,-1 };
|
||||
static const int LexmarkDeviceIdOID[] = { 1,3,6,1,4,1,641,2,1,2,1,3,1,-1 };
|
||||
+static const int HPDeviceIdOID[] = { 1,3,6,1,4,1,11,2,3,9,1,1,7,0,-1 };
|
||||
static const int XeroxProductOID[] = { 1,3,6,1,4,1,128,2,1,3,1,2,0,-1 };
|
||||
static cups_array_t *DeviceURIs = NULL;
|
||||
static int HostNameLookups = 0;
|
||||
@@ -1003,6 +1004,9 @@ read_snmp_response(int fd) /* I - SNMP
|
||||
_cupsSNMPWrite(fd, &(packet.address), CUPS_SNMP_VERSION_1,
|
||||
packet.community, CUPS_ASN1_GET_REQUEST,
|
||||
DEVICE_PRODUCT, XeroxProductOID);
|
||||
+ _cupsSNMPWrite(fd, &(packet.address), CUPS_SNMP_VERSION_1,
|
||||
+ packet.community, CUPS_ASN1_GET_REQUEST,
|
||||
+ DEVICE_ID, HPDeviceIdOID);
|
||||
break;
|
||||
|
||||
case DEVICE_DESCRIPTION :
|
210
cups-lspp.patch
210
cups-lspp.patch
@ -1,7 +1,7 @@
|
||||
diff -up cups-1.4.3/config.h.in.lspp cups-1.4.3/config.h.in
|
||||
--- cups-1.4.3/config.h.in.lspp 2010-03-31 14:08:57.000000000 +0200
|
||||
+++ cups-1.4.3/config.h.in 2010-03-31 14:08:57.000000000 +0200
|
||||
@@ -633,6 +633,13 @@
|
||||
diff -up cups-1.4.4/config.h.in.lspp cups-1.4.4/config.h.in
|
||||
--- cups-1.4.4/config.h.in.lspp 2010-06-18 09:38:22.645104842 +0100
|
||||
+++ cups-1.4.4/config.h.in 2010-06-18 09:38:22.681104733 +0100
|
||||
@@ -646,6 +646,13 @@
|
||||
#undef HAVE_TCPD_H
|
||||
|
||||
|
||||
@ -15,9 +15,9 @@ diff -up cups-1.4.3/config.h.in.lspp cups-1.4.3/config.h.in
|
||||
#endif /* !_CUPS_CONFIG_H_ */
|
||||
|
||||
/*
|
||||
diff -up cups-1.4.3/config-scripts/cups-lspp.m4.lspp cups-1.4.3/config-scripts/cups-lspp.m4
|
||||
--- cups-1.4.3/config-scripts/cups-lspp.m4.lspp 2010-03-31 14:08:57.000000000 +0200
|
||||
+++ cups-1.4.3/config-scripts/cups-lspp.m4 2010-03-31 14:08:57.000000000 +0200
|
||||
diff -up cups-1.4.4/config-scripts/cups-lspp.m4.lspp cups-1.4.4/config-scripts/cups-lspp.m4
|
||||
--- cups-1.4.4/config-scripts/cups-lspp.m4.lspp 2010-06-18 09:38:22.681104733 +0100
|
||||
+++ cups-1.4.4/config-scripts/cups-lspp.m4 2010-06-18 09:38:22.681104733 +0100
|
||||
@@ -0,0 +1,36 @@
|
||||
+dnl
|
||||
+dnl LSPP code for the Common UNIX Printing System (CUPS).
|
||||
@ -55,9 +55,9 @@ diff -up cups-1.4.3/config-scripts/cups-lspp.m4.lspp cups-1.4.3/config-scripts/c
|
||||
+ ;;
|
||||
+ esac
|
||||
+fi
|
||||
diff -up cups-1.4.3/configure.in.lspp cups-1.4.3/configure.in
|
||||
--- cups-1.4.3/configure.in.lspp 2008-11-14 20:32:22.000000000 +0100
|
||||
+++ cups-1.4.3/configure.in 2010-03-31 14:08:57.000000000 +0200
|
||||
diff -up cups-1.4.4/configure.in.lspp cups-1.4.4/configure.in
|
||||
--- cups-1.4.4/configure.in.lspp 2010-06-16 01:39:16.000000000 +0100
|
||||
+++ cups-1.4.4/configure.in 2010-06-18 09:38:22.682104565 +0100
|
||||
@@ -42,6 +42,8 @@ sinclude(config-scripts/cups-pap.m4)
|
||||
sinclude(config-scripts/cups-pdf.m4)
|
||||
sinclude(config-scripts/cups-scripting.m4)
|
||||
@ -67,9 +67,9 @@ diff -up cups-1.4.3/configure.in.lspp cups-1.4.3/configure.in
|
||||
INSTALL_LANGUAGES=""
|
||||
UNINSTALL_LANGUAGES=""
|
||||
LANGFILES=""
|
||||
diff -up cups-1.4.3/cups/cups.h.lspp cups-1.4.3/cups/cups.h
|
||||
--- cups-1.4.3/cups/cups.h.lspp 2009-11-16 18:11:56.000000000 +0100
|
||||
+++ cups-1.4.3/cups/cups.h 2010-03-31 14:08:57.000000000 +0200
|
||||
diff -up cups-1.4.4/cups/cups.h.lspp cups-1.4.4/cups/cups.h
|
||||
--- cups-1.4.4/cups/cups.h.lspp 2010-04-23 19:56:34.000000000 +0100
|
||||
+++ cups-1.4.4/cups/cups.h 2010-06-18 09:38:22.682104565 +0100
|
||||
@@ -15,6 +15,9 @@
|
||||
* This file is subject to the Apple OS-Developed Software exception.
|
||||
*/
|
||||
@ -80,7 +80,7 @@ diff -up cups-1.4.3/cups/cups.h.lspp cups-1.4.3/cups/cups.h
|
||||
#ifndef _CUPS_CUPS_H_
|
||||
# define _CUPS_CUPS_H_
|
||||
|
||||
@@ -84,6 +87,12 @@ extern "C" {
|
||||
@@ -86,6 +89,12 @@ extern "C" {
|
||||
# define CUPS_WHICHJOBS_COMPLETED 1
|
||||
|
||||
|
||||
@ -93,9 +93,9 @@ diff -up cups-1.4.3/cups/cups.h.lspp cups-1.4.3/cups/cups.h
|
||||
/*
|
||||
* Types and structures...
|
||||
*/
|
||||
diff -up cups-1.4.3/data/Makefile.lspp cups-1.4.3/data/Makefile
|
||||
--- cups-1.4.3/data/Makefile.lspp 2008-11-12 20:30:57.000000000 +0100
|
||||
+++ cups-1.4.3/data/Makefile 2010-03-31 14:08:57.000000000 +0200
|
||||
diff -up cups-1.4.4/data/Makefile.lspp cups-1.4.4/data/Makefile
|
||||
--- cups-1.4.4/data/Makefile.lspp 2008-11-12 19:30:57.000000000 +0000
|
||||
+++ cups-1.4.4/data/Makefile 2010-06-18 09:38:22.686104153 +0100
|
||||
@@ -25,7 +25,10 @@ BANNERS = \
|
||||
secret \
|
||||
standard \
|
||||
@ -108,9 +108,9 @@ diff -up cups-1.4.3/data/Makefile.lspp cups-1.4.3/data/Makefile
|
||||
|
||||
CHARMAPS = \
|
||||
euc-cn.txt \
|
||||
diff -up cups-1.4.3/data/mls.lspp cups-1.4.3/data/mls
|
||||
--- cups-1.4.3/data/mls.lspp 2010-03-31 14:08:57.000000000 +0200
|
||||
+++ cups-1.4.3/data/mls 2010-03-31 14:08:57.000000000 +0200
|
||||
diff -up cups-1.4.4/data/mls.lspp cups-1.4.4/data/mls
|
||||
--- cups-1.4.4/data/mls.lspp 2010-06-18 09:38:22.686104153 +0100
|
||||
+++ cups-1.4.4/data/mls 2010-06-18 09:38:22.687104566 +0100
|
||||
@@ -0,0 +1,261 @@
|
||||
+%!PS-Adobe-3.0
|
||||
+%%BoundingBox: 0 0 612 792
|
||||
@ -373,9 +373,9 @@ diff -up cups-1.4.3/data/mls.lspp cups-1.4.3/data/mls
|
||||
+% End of "$Id: mls_template,v 1.1 2005/06/27 18:44:46 colmo Exp $".
|
||||
+%
|
||||
+%%EOF
|
||||
diff -up cups-1.4.3/data/selinux.lspp cups-1.4.3/data/selinux
|
||||
--- cups-1.4.3/data/selinux.lspp 2010-03-31 14:08:57.000000000 +0200
|
||||
+++ cups-1.4.3/data/selinux 2010-03-31 14:08:57.000000000 +0200
|
||||
diff -up cups-1.4.4/data/selinux.lspp cups-1.4.4/data/selinux
|
||||
--- cups-1.4.4/data/selinux.lspp 2010-06-18 09:38:22.687104566 +0100
|
||||
+++ cups-1.4.4/data/selinux 2010-06-18 09:38:22.687104566 +0100
|
||||
@@ -0,0 +1,261 @@
|
||||
+%!PS-Adobe-3.0
|
||||
+%%BoundingBox: 0 0 612 792
|
||||
@ -638,9 +638,9 @@ diff -up cups-1.4.3/data/selinux.lspp cups-1.4.3/data/selinux
|
||||
+% End of "$Id: mls_template,v 1.1 2005/06/27 18:44:46 colmo Exp $".
|
||||
+%
|
||||
+%%EOF
|
||||
diff -up cups-1.4.3/data/te.lspp cups-1.4.3/data/te
|
||||
--- cups-1.4.3/data/te.lspp 2010-03-31 14:08:57.000000000 +0200
|
||||
+++ cups-1.4.3/data/te 2010-03-31 14:08:57.000000000 +0200
|
||||
diff -up cups-1.4.4/data/te.lspp cups-1.4.4/data/te
|
||||
--- cups-1.4.4/data/te.lspp 2010-06-18 09:38:22.688105441 +0100
|
||||
+++ cups-1.4.4/data/te 2010-06-18 09:38:22.688105441 +0100
|
||||
@@ -0,0 +1,261 @@
|
||||
+%!PS-Adobe-3.0
|
||||
+%%BoundingBox: 0 0 612 792
|
||||
@ -903,9 +903,9 @@ diff -up cups-1.4.3/data/te.lspp cups-1.4.3/data/te
|
||||
+% End of "$Id: mls_template,v 1.1 2005/06/27 18:44:46 colmo Exp $".
|
||||
+%
|
||||
+%%EOF
|
||||
diff -up cups-1.4.3/filter/common.c.lspp cups-1.4.3/filter/common.c
|
||||
--- cups-1.4.3/filter/common.c.lspp 2007-07-11 23:46:42.000000000 +0200
|
||||
+++ cups-1.4.3/filter/common.c 2010-03-31 14:08:57.000000000 +0200
|
||||
diff -up cups-1.4.4/filter/common.c.lspp cups-1.4.4/filter/common.c
|
||||
--- cups-1.4.4/filter/common.c.lspp 2007-07-11 22:46:42.000000000 +0100
|
||||
+++ cups-1.4.4/filter/common.c 2010-06-18 09:38:22.689104687 +0100
|
||||
@@ -30,6 +30,12 @@
|
||||
* Include necessary headers...
|
||||
*/
|
||||
@ -1074,10 +1074,10 @@ diff -up cups-1.4.3/filter/common.c.lspp cups-1.4.3/filter/common.c
|
||||
|
||||
|
||||
/*
|
||||
diff -up cups-1.4.3/filter/pstops.c.lspp cups-1.4.3/filter/pstops.c
|
||||
--- cups-1.4.3/filter/pstops.c.lspp 2010-03-31 14:08:57.000000000 +0200
|
||||
+++ cups-1.4.3/filter/pstops.c 2010-03-31 14:08:57.000000000 +0200
|
||||
@@ -3275,6 +3275,18 @@ write_label_prolog(pstops_doc_t *doc, /*
|
||||
diff -up cups-1.4.4/filter/pstops.c.lspp cups-1.4.4/filter/pstops.c
|
||||
--- cups-1.4.4/filter/pstops.c.lspp 2010-06-18 09:38:22.579980230 +0100
|
||||
+++ cups-1.4.4/filter/pstops.c 2010-06-18 09:38:22.693979174 +0100
|
||||
@@ -3314,6 +3314,18 @@ write_label_prolog(pstops_doc_t *doc, /*
|
||||
{
|
||||
const char *classification; /* CLASSIFICATION environment variable */
|
||||
const char *ptr; /* Temporary string pointer */
|
||||
@ -1096,7 +1096,7 @@ diff -up cups-1.4.3/filter/pstops.c.lspp cups-1.4.3/filter/pstops.c
|
||||
|
||||
|
||||
/*
|
||||
@@ -3297,6 +3309,124 @@ write_label_prolog(pstops_doc_t *doc, /*
|
||||
@@ -3336,6 +3348,124 @@ write_label_prolog(pstops_doc_t *doc, /*
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1221,7 +1221,7 @@ diff -up cups-1.4.3/filter/pstops.c.lspp cups-1.4.3/filter/pstops.c
|
||||
/*
|
||||
* Set the classification + page label string...
|
||||
*/
|
||||
@@ -3375,7 +3505,10 @@ write_label_prolog(pstops_doc_t *doc, /*
|
||||
@@ -3414,7 +3544,10 @@ write_label_prolog(pstops_doc_t *doc, /*
|
||||
doc_printf(doc, " %.0f moveto ESPpl show\n", top - 14.0);
|
||||
doc_puts(doc, "pop\n");
|
||||
doc_puts(doc, "}bind put\n");
|
||||
@ -1232,9 +1232,9 @@ diff -up cups-1.4.3/filter/pstops.c.lspp cups-1.4.3/filter/pstops.c
|
||||
|
||||
|
||||
/*
|
||||
diff -up cups-1.4.3/Makedefs.in.lspp cups-1.4.3/Makedefs.in
|
||||
--- cups-1.4.3/Makedefs.in.lspp 2010-03-31 14:08:57.000000000 +0200
|
||||
+++ cups-1.4.3/Makedefs.in 2010-03-31 14:08:57.000000000 +0200
|
||||
diff -up cups-1.4.4/Makedefs.in.lspp cups-1.4.4/Makedefs.in
|
||||
--- cups-1.4.4/Makedefs.in.lspp 2010-06-18 09:38:22.654104605 +0100
|
||||
+++ cups-1.4.4/Makedefs.in 2010-06-18 09:38:22.698980378 +0100
|
||||
@@ -146,7 +146,7 @@ LIBCUPSORDER = @LIBCUPSORDER@
|
||||
LIBCUPSIMAGEORDER = @LIBCUPSIMAGEORDER@
|
||||
LINKCUPS = @LINKCUPS@ $(SSLLIBS) $(DNSSDLIBS)
|
||||
@ -1253,9 +1253,9 @@ diff -up cups-1.4.3/Makedefs.in.lspp cups-1.4.3/Makedefs.in
|
||||
.SUFFIXES: .1 .1.gz .1m .1m.gz .3 .3.gz .5 .5.gz .7 .7.gz .8 .8.gz .a .c .cxx .h .man .o .32.o .64.o .gz
|
||||
|
||||
.c.o:
|
||||
diff -up cups-1.4.3/scheduler/client.c.lspp cups-1.4.3/scheduler/client.c
|
||||
--- cups-1.4.3/scheduler/client.c.lspp 2009-07-15 01:02:05.000000000 +0200
|
||||
+++ cups-1.4.3/scheduler/client.c 2010-03-31 14:08:57.000000000 +0200
|
||||
diff -up cups-1.4.4/scheduler/client.c.lspp cups-1.4.4/scheduler/client.c
|
||||
--- cups-1.4.4/scheduler/client.c.lspp 2010-04-23 19:56:34.000000000 +0100
|
||||
+++ cups-1.4.4/scheduler/client.c 2010-06-18 09:38:22.705980063 +0100
|
||||
@@ -44,6 +44,7 @@
|
||||
* valid_host() - Is the Host: field valid?
|
||||
* write_file() - Send a file via HTTP.
|
||||
@ -1425,7 +1425,7 @@ diff -up cups-1.4.3/scheduler/client.c.lspp cups-1.4.3/scheduler/client.c
|
||||
}
|
||||
|
||||
if (con->http.state != HTTP_POST_SEND)
|
||||
@@ -4472,6 +4599,50 @@ make_certificate(cupsd_client_t *con) /*
|
||||
@@ -4481,6 +4608,50 @@ make_certificate(cupsd_client_t *con) /*
|
||||
#endif /* HAVE_SSL */
|
||||
|
||||
|
||||
@ -1476,9 +1476,9 @@ diff -up cups-1.4.3/scheduler/client.c.lspp cups-1.4.3/scheduler/client.c
|
||||
/*
|
||||
* 'pipe_command()' - Pipe the output of a command to the remote client.
|
||||
*/
|
||||
diff -up cups-1.4.3/scheduler/client.h.lspp cups-1.4.3/scheduler/client.h
|
||||
--- cups-1.4.3/scheduler/client.h.lspp 2009-05-27 00:01:23.000000000 +0200
|
||||
+++ cups-1.4.3/scheduler/client.h 2010-03-31 14:08:57.000000000 +0200
|
||||
diff -up cups-1.4.4/scheduler/client.h.lspp cups-1.4.4/scheduler/client.h
|
||||
--- cups-1.4.4/scheduler/client.h.lspp 2009-05-26 23:01:23.000000000 +0100
|
||||
+++ cups-1.4.4/scheduler/client.h 2010-06-18 09:38:22.711104323 +0100
|
||||
@@ -18,6 +18,13 @@
|
||||
#endif /* HAVE_AUTHORIZATION_H */
|
||||
|
||||
@ -1514,9 +1514,9 @@ diff -up cups-1.4.3/scheduler/client.h.lspp cups-1.4.3/scheduler/client.h
|
||||
|
||||
|
||||
/*
|
||||
diff -up cups-1.4.3/scheduler/conf.c.lspp cups-1.4.3/scheduler/conf.c
|
||||
--- cups-1.4.3/scheduler/conf.c.lspp 2010-03-31 14:08:57.000000000 +0200
|
||||
+++ cups-1.4.3/scheduler/conf.c 2010-03-31 14:08:57.000000000 +0200
|
||||
diff -up cups-1.4.4/scheduler/conf.c.lspp cups-1.4.4/scheduler/conf.c
|
||||
--- cups-1.4.4/scheduler/conf.c.lspp 2010-06-18 09:38:22.526979999 +0100
|
||||
+++ cups-1.4.4/scheduler/conf.c 2010-06-18 09:38:22.713979624 +0100
|
||||
@@ -29,6 +29,7 @@
|
||||
* read_configuration() - Read a configuration file.
|
||||
* read_location() - Read a <Location path> definition.
|
||||
@ -1535,7 +1535,7 @@ diff -up cups-1.4.3/scheduler/conf.c.lspp cups-1.4.3/scheduler/conf.c
|
||||
|
||||
/*
|
||||
* Configuration variable structure...
|
||||
@@ -174,6 +178,10 @@ static const cupsd_var_t variables[] =
|
||||
@@ -172,6 +176,10 @@ static const cupsd_var_t variables[] =
|
||||
# if defined(HAVE_LIBSSL) || defined(HAVE_GNUTLS)
|
||||
{ "ServerKey", &ServerKey, CUPSD_VARTYPE_PATHNAME },
|
||||
# endif /* HAVE_LIBSSL || HAVE_GNUTLS */
|
||||
@ -1546,7 +1546,7 @@ diff -up cups-1.4.3/scheduler/conf.c.lspp cups-1.4.3/scheduler/conf.c
|
||||
#endif /* HAVE_SSL */
|
||||
{ "ServerName", &ServerName, CUPSD_VARTYPE_STRING },
|
||||
{ "ServerRoot", &ServerRoot, CUPSD_VARTYPE_PATHNAME },
|
||||
@@ -432,6 +440,9 @@ cupsdReadConfiguration(void)
|
||||
@@ -430,6 +438,9 @@ cupsdReadConfiguration(void)
|
||||
const char *tmpdir; /* TMPDIR environment variable */
|
||||
struct stat tmpinfo; /* Temporary directory info */
|
||||
cupsd_policy_t *p; /* Policy */
|
||||
@ -1556,7 +1556,7 @@ diff -up cups-1.4.3/scheduler/conf.c.lspp cups-1.4.3/scheduler/conf.c
|
||||
|
||||
|
||||
/*
|
||||
@@ -718,6 +729,25 @@ cupsdReadConfiguration(void)
|
||||
@@ -713,6 +724,25 @@ cupsdReadConfiguration(void)
|
||||
|
||||
RunUser = getuid();
|
||||
|
||||
@ -1582,7 +1582,7 @@ diff -up cups-1.4.3/scheduler/conf.c.lspp cups-1.4.3/scheduler/conf.c
|
||||
cupsdLogMessage(CUPSD_LOG_INFO, "Remote access is %s.",
|
||||
RemotePort ? "enabled" : "disabled");
|
||||
|
||||
@@ -1083,11 +1113,23 @@ cupsdReadConfiguration(void)
|
||||
@@ -1081,11 +1111,23 @@ cupsdReadConfiguration(void)
|
||||
* Update classification setting as needed...
|
||||
*/
|
||||
|
||||
@ -1607,7 +1607,7 @@ diff -up cups-1.4.3/scheduler/conf.c.lspp cups-1.4.3/scheduler/conf.c
|
||||
|
||||
/*
|
||||
* Check the MaxClients setting, and then allocate memory for it...
|
||||
@@ -3646,6 +3688,18 @@ read_location(cups_file_t *fp, /* I - C
|
||||
@@ -3644,6 +3686,18 @@ read_location(cups_file_t *fp, /* I - C
|
||||
return ((FatalErrors & CUPSD_FATAL_CONFIG) ? 0 : linenum);
|
||||
}
|
||||
|
||||
@ -1626,10 +1626,10 @@ diff -up cups-1.4.3/scheduler/conf.c.lspp cups-1.4.3/scheduler/conf.c
|
||||
|
||||
/*
|
||||
* 'read_policy()' - Read a <Policy name> definition.
|
||||
diff -up cups-1.4.3/scheduler/conf.h.lspp cups-1.4.3/scheduler/conf.h
|
||||
--- cups-1.4.3/scheduler/conf.h.lspp 2010-03-31 14:08:57.000000000 +0200
|
||||
+++ cups-1.4.3/scheduler/conf.h 2010-03-31 14:08:57.000000000 +0200
|
||||
@@ -253,6 +253,12 @@ VAR char *ServerKey VALUE(NULL);
|
||||
diff -up cups-1.4.4/scheduler/conf.h.lspp cups-1.4.4/scheduler/conf.h
|
||||
--- cups-1.4.4/scheduler/conf.h.lspp 2010-06-18 09:38:22.527979881 +0100
|
||||
+++ cups-1.4.4/scheduler/conf.h 2010-06-18 09:38:22.715979172 +0100
|
||||
@@ -250,6 +250,12 @@ VAR char *ServerKey VALUE(NULL);
|
||||
VAR int SSLOptions VALUE(CUPSD_SSL_NONE);
|
||||
/* SSL/TLS options */
|
||||
#endif /* HAVE_SSL */
|
||||
@ -1642,7 +1642,7 @@ diff -up cups-1.4.3/scheduler/conf.h.lspp cups-1.4.3/scheduler/conf.h
|
||||
|
||||
#ifdef HAVE_LAUNCHD
|
||||
VAR int LaunchdTimeout VALUE(DEFAULT_KEEPALIVE);
|
||||
@@ -271,6 +277,9 @@ VAR char *SystemGroupAuthKey VALUE(NULL
|
||||
@@ -266,6 +272,9 @@ VAR char *SystemGroupAuthKey VALUE(NULL
|
||||
/* System group auth key */
|
||||
#endif /* HAVE_AUTHORIZATION_H */
|
||||
|
||||
@ -1652,9 +1652,9 @@ diff -up cups-1.4.3/scheduler/conf.h.lspp cups-1.4.3/scheduler/conf.h
|
||||
|
||||
/*
|
||||
* Prototypes...
|
||||
diff -up cups-1.4.3/scheduler/ipp.c.lspp cups-1.4.3/scheduler/ipp.c
|
||||
--- cups-1.4.3/scheduler/ipp.c.lspp 2010-03-31 14:08:57.000000000 +0200
|
||||
+++ cups-1.4.3/scheduler/ipp.c 2010-03-31 14:11:37.000000000 +0200
|
||||
diff -up cups-1.4.4/scheduler/ipp.c.lspp cups-1.4.4/scheduler/ipp.c
|
||||
--- cups-1.4.4/scheduler/ipp.c.lspp 2010-06-18 09:38:22.599103898 +0100
|
||||
+++ cups-1.4.4/scheduler/ipp.c 2010-06-18 09:39:08.308979874 +0100
|
||||
@@ -41,6 +41,7 @@
|
||||
* cancel_all_jobs() - Cancel all print jobs.
|
||||
* cancel_job() - Cancel a print job.
|
||||
@ -1698,10 +1698,10 @@ diff -up cups-1.4.3/scheduler/ipp.c.lspp cups-1.4.3/scheduler/ipp.c
|
||||
static int check_quotas(cupsd_client_t *con, cupsd_printer_t *p);
|
||||
static ipp_attribute_t *copy_attribute(ipp_t *to, ipp_attribute_t *attr,
|
||||
int quickcopy);
|
||||
@@ -1337,6 +1352,21 @@ add_job(cupsd_client_t *con, /* I - Cl
|
||||
int kbytes; /* Size of print file */
|
||||
int i; /* Looping var */
|
||||
int lowerpagerange; /* Page range bound */
|
||||
@@ -1355,6 +1370,21 @@ add_job(cupsd_client_t *con, /* I - Cl
|
||||
ipp_attribute_t *media_col, /* media-col attribute */
|
||||
*media_margin; /* media-*-margin attribute */
|
||||
ipp_t *unsup_col; /* media-col in unsupported response */
|
||||
+#ifdef WITH_LSPP
|
||||
+ char *audit_message; /* Audit message string */
|
||||
+ char *printerfile; /* device file pointed to by the printer */
|
||||
@ -1720,7 +1720,7 @@ diff -up cups-1.4.3/scheduler/ipp.c.lspp cups-1.4.3/scheduler/ipp.c
|
||||
|
||||
|
||||
cupsdLogMessage(CUPSD_LOG_DEBUG2, "add_job(%p[%d], %p(%s), %p(%s/%s))",
|
||||
@@ -1550,6 +1580,104 @@ add_job(cupsd_client_t *con, /* I - Cl
|
||||
@@ -1625,6 +1655,104 @@ add_job(cupsd_client_t *con, /* I - Cl
|
||||
ippAddString(con->request, IPP_TAG_JOB, IPP_TAG_NAME, "job-name", NULL,
|
||||
"Untitled");
|
||||
|
||||
@ -1825,7 +1825,7 @@ diff -up cups-1.4.3/scheduler/ipp.c.lspp cups-1.4.3/scheduler/ipp.c
|
||||
if ((job = cupsdAddJob(priority, printer->name)) == NULL)
|
||||
{
|
||||
send_ipp_status(con, IPP_INTERNAL_ERROR,
|
||||
@@ -1558,6 +1686,32 @@ add_job(cupsd_client_t *con, /* I - Cl
|
||||
@@ -1633,6 +1761,32 @@ add_job(cupsd_client_t *con, /* I - Cl
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
@ -1858,7 +1858,7 @@ diff -up cups-1.4.3/scheduler/ipp.c.lspp cups-1.4.3/scheduler/ipp.c
|
||||
job->dtype = printer->type & (CUPS_PRINTER_CLASS | CUPS_PRINTER_IMPLICIT |
|
||||
CUPS_PRINTER_REMOTE);
|
||||
job->attrs = con->request;
|
||||
@@ -1763,6 +1917,29 @@ add_job(cupsd_client_t *con, /* I - Cl
|
||||
@@ -1838,6 +1992,29 @@ add_job(cupsd_client_t *con, /* I - Cl
|
||||
attr->values[0].string.text = _cupsStrRetain(printer->job_sheets[0]);
|
||||
attr->values[1].string.text = _cupsStrRetain(printer->job_sheets[1]);
|
||||
}
|
||||
@ -1888,7 +1888,7 @@ diff -up cups-1.4.3/scheduler/ipp.c.lspp cups-1.4.3/scheduler/ipp.c
|
||||
|
||||
job->job_sheets = attr;
|
||||
|
||||
@@ -1793,6 +1970,9 @@ add_job(cupsd_client_t *con, /* I - Cl
|
||||
@@ -1868,6 +2045,9 @@ add_job(cupsd_client_t *con, /* I - Cl
|
||||
"job-sheets=\"%s,none\", "
|
||||
"job-originating-user-name=\"%s\"",
|
||||
Classification, job->username);
|
||||
@ -1898,7 +1898,7 @@ diff -up cups-1.4.3/scheduler/ipp.c.lspp cups-1.4.3/scheduler/ipp.c
|
||||
}
|
||||
else if (attr->num_values == 2 &&
|
||||
strcmp(attr->values[0].string.text,
|
||||
@@ -1811,6 +1991,9 @@ add_job(cupsd_client_t *con, /* I - Cl
|
||||
@@ -1886,6 +2066,9 @@ add_job(cupsd_client_t *con, /* I - Cl
|
||||
"job-originating-user-name=\"%s\"",
|
||||
attr->values[0].string.text,
|
||||
attr->values[1].string.text, job->username);
|
||||
@ -1908,7 +1908,7 @@ diff -up cups-1.4.3/scheduler/ipp.c.lspp cups-1.4.3/scheduler/ipp.c
|
||||
}
|
||||
else if (strcmp(attr->values[0].string.text, Classification) &&
|
||||
strcmp(attr->values[0].string.text, "none") &&
|
||||
@@ -1831,6 +2014,9 @@ add_job(cupsd_client_t *con, /* I - Cl
|
||||
@@ -1906,6 +2089,9 @@ add_job(cupsd_client_t *con, /* I - Cl
|
||||
"job-originating-user-name=\"%s\"",
|
||||
attr->values[0].string.text,
|
||||
attr->values[1].string.text, job->username);
|
||||
@ -1918,7 +1918,7 @@ diff -up cups-1.4.3/scheduler/ipp.c.lspp cups-1.4.3/scheduler/ipp.c
|
||||
}
|
||||
}
|
||||
else if (strcmp(attr->values[0].string.text, Classification) &&
|
||||
@@ -1871,8 +2057,52 @@ add_job(cupsd_client_t *con, /* I - Cl
|
||||
@@ -1946,8 +2132,52 @@ add_job(cupsd_client_t *con, /* I - Cl
|
||||
"job-sheets=\"%s\", "
|
||||
"job-originating-user-name=\"%s\"",
|
||||
Classification, job->username);
|
||||
@ -1971,7 +1971,7 @@ diff -up cups-1.4.3/scheduler/ipp.c.lspp cups-1.4.3/scheduler/ipp.c
|
||||
|
||||
/*
|
||||
* See if we need to add the starting sheet...
|
||||
@@ -4210,6 +4440,103 @@ check_rss_recipient(
|
||||
@@ -4300,6 +4530,103 @@ check_rss_recipient(
|
||||
}
|
||||
|
||||
|
||||
@ -2075,7 +2075,7 @@ diff -up cups-1.4.3/scheduler/ipp.c.lspp cups-1.4.3/scheduler/ipp.c
|
||||
/*
|
||||
* 'check_quotas()' - Check quotas for a printer and user.
|
||||
*/
|
||||
@@ -4761,6 +5088,15 @@ copy_banner(cupsd_client_t *con, /* I -
|
||||
@@ -4853,6 +5180,15 @@ copy_banner(cupsd_client_t *con, /* I -
|
||||
char attrname[255], /* Name of attribute */
|
||||
*s; /* Pointer into name */
|
||||
ipp_attribute_t *attr; /* Attribute */
|
||||
@ -2091,7 +2091,7 @@ diff -up cups-1.4.3/scheduler/ipp.c.lspp cups-1.4.3/scheduler/ipp.c
|
||||
|
||||
|
||||
cupsdLogMessage(CUPSD_LOG_DEBUG2,
|
||||
@@ -4796,6 +5132,82 @@ copy_banner(cupsd_client_t *con, /* I -
|
||||
@@ -4888,6 +5224,82 @@ copy_banner(cupsd_client_t *con, /* I -
|
||||
|
||||
fchmod(cupsFileNumber(out), 0640);
|
||||
fchown(cupsFileNumber(out), RunUser, Group);
|
||||
@ -2174,7 +2174,7 @@ diff -up cups-1.4.3/scheduler/ipp.c.lspp cups-1.4.3/scheduler/ipp.c
|
||||
|
||||
/*
|
||||
* Try the localized banner file under the subdirectory...
|
||||
@@ -4890,6 +5302,24 @@ copy_banner(cupsd_client_t *con, /* I -
|
||||
@@ -4982,6 +5394,24 @@ copy_banner(cupsd_client_t *con, /* I -
|
||||
else
|
||||
s = attrname;
|
||||
|
||||
@ -2199,7 +2199,7 @@ diff -up cups-1.4.3/scheduler/ipp.c.lspp cups-1.4.3/scheduler/ipp.c
|
||||
if (!strcmp(s, "printer-name"))
|
||||
{
|
||||
cupsFilePuts(out, job->dest);
|
||||
@@ -6844,6 +7274,22 @@ get_job_attrs(cupsd_client_t *con, /* I
|
||||
@@ -6940,6 +7370,22 @@ get_job_attrs(cupsd_client_t *con, /* I
|
||||
return;
|
||||
}
|
||||
|
||||
@ -2222,7 +2222,7 @@ diff -up cups-1.4.3/scheduler/ipp.c.lspp cups-1.4.3/scheduler/ipp.c
|
||||
/*
|
||||
* Copy attributes...
|
||||
*/
|
||||
@@ -7074,6 +7520,11 @@ get_jobs(cupsd_client_t *con, /* I - C
|
||||
@@ -7170,6 +7616,11 @@ get_jobs(cupsd_client_t *con, /* I - C
|
||||
if (username[0] && strcasecmp(username, job->username))
|
||||
continue;
|
||||
|
||||
@ -2234,7 +2234,7 @@ diff -up cups-1.4.3/scheduler/ipp.c.lspp cups-1.4.3/scheduler/ipp.c
|
||||
if (count > 0)
|
||||
ippAddSeparator(con->response);
|
||||
|
||||
@@ -11460,6 +11911,11 @@ validate_user(cupsd_job_t *job, /* I
|
||||
@@ -11572,6 +12023,11 @@ validate_user(cupsd_job_t *job, /* I
|
||||
|
||||
strlcpy(username, get_username(con), userlen);
|
||||
|
||||
@ -2246,9 +2246,9 @@ diff -up cups-1.4.3/scheduler/ipp.c.lspp cups-1.4.3/scheduler/ipp.c
|
||||
/*
|
||||
* Check the username against the owner...
|
||||
*/
|
||||
diff -up cups-1.4.3/scheduler/job.c.lspp cups-1.4.3/scheduler/job.c
|
||||
--- cups-1.4.3/scheduler/job.c.lspp 2010-03-31 14:08:57.000000000 +0200
|
||||
+++ cups-1.4.3/scheduler/job.c 2010-03-31 14:08:57.000000000 +0200
|
||||
diff -up cups-1.4.4/scheduler/job.c.lspp cups-1.4.4/scheduler/job.c
|
||||
--- cups-1.4.4/scheduler/job.c.lspp 2010-06-18 09:38:22.629104109 +0100
|
||||
+++ cups-1.4.4/scheduler/job.c 2010-06-18 09:38:22.734978722 +0100
|
||||
@@ -66,6 +66,9 @@
|
||||
* update_job_attrs() - Update the job-printer-* attributes.
|
||||
*/
|
||||
@ -2495,7 +2495,7 @@ diff -up cups-1.4.3/scheduler/job.c.lspp cups-1.4.3/scheduler/job.c
|
||||
job->attrs->state = IPP_IDLE;
|
||||
|
||||
if (ippWriteIO(fp, (ipp_iocb_t)cupsFileWrite, 1, NULL,
|
||||
@@ -3177,6 +3349,18 @@ get_options(cupsd_job_t *job, /* I - Jo
|
||||
@@ -3188,6 +3360,18 @@ get_options(cupsd_job_t *job, /* I - Jo
|
||||
banner_page)
|
||||
continue;
|
||||
|
||||
@ -2514,7 +2514,7 @@ diff -up cups-1.4.3/scheduler/job.c.lspp cups-1.4.3/scheduler/job.c
|
||||
/*
|
||||
* Otherwise add them to the list...
|
||||
*/
|
||||
@@ -3849,6 +4033,19 @@ static void
|
||||
@@ -3860,6 +4044,19 @@ static void
|
||||
start_job(cupsd_job_t *job, /* I - Job ID */
|
||||
cupsd_printer_t *printer) /* I - Printer to print job */
|
||||
{
|
||||
@ -2534,7 +2534,7 @@ diff -up cups-1.4.3/scheduler/job.c.lspp cups-1.4.3/scheduler/job.c
|
||||
cupsdLogMessage(CUPSD_LOG_DEBUG2, "start_job(job=%p(%d), printer=%p(%s))",
|
||||
job, job->id, printer, printer->name);
|
||||
|
||||
@@ -3971,6 +4168,106 @@ start_job(cupsd_job_t *job, /* I -
|
||||
@@ -3982,6 +4179,106 @@ start_job(cupsd_job_t *job, /* I -
|
||||
fcntl(job->side_pipes[1], F_SETFD,
|
||||
fcntl(job->side_pipes[1], F_GETFD) | FD_CLOEXEC);
|
||||
|
||||
@ -2641,9 +2641,9 @@ diff -up cups-1.4.3/scheduler/job.c.lspp cups-1.4.3/scheduler/job.c
|
||||
/*
|
||||
* Now start the first file in the job...
|
||||
*/
|
||||
diff -up cups-1.4.3/scheduler/job.h.lspp cups-1.4.3/scheduler/job.h
|
||||
--- cups-1.4.3/scheduler/job.h.lspp 2009-05-12 00:46:01.000000000 +0200
|
||||
+++ cups-1.4.3/scheduler/job.h 2010-03-31 14:08:57.000000000 +0200
|
||||
diff -up cups-1.4.4/scheduler/job.h.lspp cups-1.4.4/scheduler/job.h
|
||||
--- cups-1.4.4/scheduler/job.h.lspp 2009-05-11 23:46:01.000000000 +0100
|
||||
+++ cups-1.4.4/scheduler/job.h 2010-06-18 09:38:22.734978722 +0100
|
||||
@@ -13,6 +13,13 @@
|
||||
* file is missing or damaged, see the license at "http://www.cups.org/".
|
||||
*/
|
||||
@ -2669,11 +2669,11 @@ diff -up cups-1.4.3/scheduler/job.h.lspp cups-1.4.3/scheduler/job.h
|
||||
};
|
||||
|
||||
typedef struct cupsd_joblog_s /**** Job log message ****/
|
||||
diff -up cups-1.4.3/scheduler/main.c.lspp cups-1.4.3/scheduler/main.c
|
||||
--- cups-1.4.3/scheduler/main.c.lspp 2010-03-31 14:08:57.000000000 +0200
|
||||
+++ cups-1.4.3/scheduler/main.c 2010-03-31 14:08:57.000000000 +0200
|
||||
@@ -35,6 +35,8 @@
|
||||
* usage() - Show scheduler usage.
|
||||
diff -up cups-1.4.4/scheduler/main.c.lspp cups-1.4.4/scheduler/main.c
|
||||
--- cups-1.4.4/scheduler/main.c.lspp 2010-06-18 09:38:22.574980424 +0100
|
||||
+++ cups-1.4.4/scheduler/main.c 2010-06-18 09:39:26.548103442 +0100
|
||||
@@ -37,6 +37,8 @@
|
||||
* usage() - Show scheduler usage.
|
||||
*/
|
||||
|
||||
+/* (c) Copyright 2005-2006 Hewlett-Packard Development Company, L.P. */
|
||||
@ -2681,7 +2681,7 @@ diff -up cups-1.4.3/scheduler/main.c.lspp cups-1.4.3/scheduler/main.c
|
||||
/*
|
||||
* Include necessary headers...
|
||||
*/
|
||||
@@ -73,6 +75,9 @@
|
||||
@@ -76,6 +78,9 @@
|
||||
# include <dlfcn.h>
|
||||
#endif /* __APPLE__ && HAVE_DLFCN_H */
|
||||
|
||||
@ -2691,7 +2691,7 @@ diff -up cups-1.4.3/scheduler/main.c.lspp cups-1.4.3/scheduler/main.c
|
||||
|
||||
/*
|
||||
* Local functions...
|
||||
@@ -156,6 +161,9 @@ main(int argc, /* I - Number of comm
|
||||
@@ -161,6 +166,9 @@ main(int argc, /* I - Number of comm
|
||||
int launchd_idle_exit;
|
||||
/* Idle exit on select timeout? */
|
||||
#endif /* HAVE_LAUNCHD */
|
||||
@ -2701,7 +2701,7 @@ diff -up cups-1.4.3/scheduler/main.c.lspp cups-1.4.3/scheduler/main.c
|
||||
|
||||
|
||||
#ifdef HAVE_GETEUID
|
||||
@@ -465,6 +473,25 @@ main(int argc, /* I - Number of comm
|
||||
@@ -470,6 +478,25 @@ main(int argc, /* I - Number of comm
|
||||
#endif /* DEBUG */
|
||||
}
|
||||
|
||||
@ -2727,7 +2727,7 @@ diff -up cups-1.4.3/scheduler/main.c.lspp cups-1.4.3/scheduler/main.c
|
||||
/*
|
||||
* Set the timezone info...
|
||||
*/
|
||||
@@ -1235,6 +1262,11 @@ main(int argc, /* I - Number of comm
|
||||
@@ -1214,6 +1241,11 @@ main(int argc, /* I - Number of comm
|
||||
|
||||
cupsdStopSelect();
|
||||
|
||||
@ -2739,10 +2739,10 @@ diff -up cups-1.4.3/scheduler/main.c.lspp cups-1.4.3/scheduler/main.c
|
||||
return (!stop_scheduler);
|
||||
}
|
||||
|
||||
diff -up cups-1.4.3/scheduler/printers.c.lspp cups-1.4.3/scheduler/printers.c
|
||||
--- cups-1.4.3/scheduler/printers.c.lspp 2010-03-31 14:08:57.000000000 +0200
|
||||
+++ cups-1.4.3/scheduler/printers.c 2010-03-31 14:08:57.000000000 +0200
|
||||
@@ -58,6 +58,8 @@
|
||||
diff -up cups-1.4.4/scheduler/printers.c.lspp cups-1.4.4/scheduler/printers.c
|
||||
--- cups-1.4.4/scheduler/printers.c.lspp 2010-06-18 09:38:22.556104527 +0100
|
||||
+++ cups-1.4.4/scheduler/printers.c 2010-06-18 09:38:22.740980299 +0100
|
||||
@@ -59,6 +59,8 @@
|
||||
* write_xml_string() - Write a string with XML escaping.
|
||||
*/
|
||||
|
||||
@ -2751,7 +2751,7 @@ diff -up cups-1.4.3/scheduler/printers.c.lspp cups-1.4.3/scheduler/printers.c
|
||||
/*
|
||||
* Include necessary headers...
|
||||
*/
|
||||
@@ -86,6 +88,10 @@ static void write_irix_state(cupsd_print
|
||||
@@ -88,6 +90,10 @@ static void write_irix_state(cupsd_print
|
||||
#endif /* __sgi */
|
||||
static void write_xml_string(cups_file_t *fp, const char *s);
|
||||
|
||||
@ -2762,7 +2762,7 @@ diff -up cups-1.4.3/scheduler/printers.c.lspp cups-1.4.3/scheduler/printers.c
|
||||
|
||||
/*
|
||||
* 'cupsdAddPrinter()' - Add a printer to the system.
|
||||
@@ -2173,6 +2179,13 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p)
|
||||
@@ -2211,6 +2217,13 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p)
|
||||
"username",
|
||||
"password"
|
||||
};
|
||||
@ -2776,7 +2776,7 @@ diff -up cups-1.4.3/scheduler/printers.c.lspp cups-1.4.3/scheduler/printers.c
|
||||
|
||||
|
||||
DEBUG_printf(("cupsdSetPrinterAttrs: entering name = %s, type = %x\n", p->name,
|
||||
@@ -2303,6 +2316,45 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p)
|
||||
@@ -2341,6 +2354,45 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p)
|
||||
attr->values[1].string.text = _cupsStrAlloc(Classification ?
|
||||
Classification : p->job_sheets[1]);
|
||||
}
|
||||
@ -2822,7 +2822,7 @@ diff -up cups-1.4.3/scheduler/printers.c.lspp cups-1.4.3/scheduler/printers.c
|
||||
}
|
||||
|
||||
p->raw = 0;
|
||||
@@ -4834,7 +4886,6 @@ write_irix_state(cupsd_printer_t *p) /*
|
||||
@@ -5320,7 +5372,6 @@ write_irix_state(cupsd_printer_t *p) /*
|
||||
}
|
||||
#endif /* __sgi */
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
diff -up cups-1.4.1/filter/pstops.c.page-label cups-1.4.1/filter/pstops.c
|
||||
--- cups-1.4.1/filter/pstops.c.page-label 2009-10-02 12:33:33.410719651 +0100
|
||||
+++ cups-1.4.1/filter/pstops.c 2009-10-02 12:34:11.399594180 +0100
|
||||
diff -up cups-1.4.4/filter/pstops.c.page-label cups-1.4.4/filter/pstops.c
|
||||
--- cups-1.4.4/filter/pstops.c.page-label 2010-03-30 23:07:33.000000000 +0100
|
||||
+++ cups-1.4.4/filter/pstops.c 2010-06-18 09:36:18.239126341 +0100
|
||||
@@ -108,6 +108,7 @@ typedef struct /**** Document informa
|
||||
int num_options; /* Number of document-wide options */
|
||||
cups_option_t *options; /* Document-wide options */
|
||||
@ -9,7 +9,7 @@ diff -up cups-1.4.1/filter/pstops.c.page-label cups-1.4.1/filter/pstops.c
|
||||
saw_eof, /* Saw the %%EOF comment? */
|
||||
slow_collate, /* Collate copies by hand? */
|
||||
slow_duplex, /* Duplex pages slowly? */
|
||||
@@ -2048,7 +2049,7 @@ do_setup(pstops_doc_t *doc, /* I - Docu
|
||||
@@ -2083,7 +2084,7 @@ do_setup(pstops_doc_t *doc, /* I - Docu
|
||||
* of the pages...
|
||||
*/
|
||||
|
||||
@ -18,7 +18,7 @@ diff -up cups-1.4.1/filter/pstops.c.page-label cups-1.4.1/filter/pstops.c
|
||||
write_label_prolog(doc, doc->page_label, PageBottom,
|
||||
PageWidth - PageLength + PageTop, PageLength);
|
||||
else
|
||||
@@ -2056,7 +2057,30 @@ do_setup(pstops_doc_t *doc, /* I - Docu
|
||||
@@ -2091,7 +2092,30 @@ do_setup(pstops_doc_t *doc, /* I - Docu
|
||||
PageLength);
|
||||
}
|
||||
else
|
||||
@ -50,7 +50,7 @@ diff -up cups-1.4.1/filter/pstops.c.page-label cups-1.4.1/filter/pstops.c
|
||||
}
|
||||
|
||||
|
||||
@@ -2141,7 +2165,7 @@ end_nup(pstops_doc_t *doc, /* I - Docum
|
||||
@@ -2176,7 +2200,7 @@ end_nup(pstops_doc_t *doc, /* I - Docum
|
||||
case 1 :
|
||||
if (doc->use_ESPshowpage)
|
||||
{
|
||||
@ -59,7 +59,7 @@ diff -up cups-1.4.1/filter/pstops.c.page-label cups-1.4.1/filter/pstops.c
|
||||
doc_puts(doc, "ESPshowpage\n");
|
||||
}
|
||||
break;
|
||||
@@ -2156,7 +2180,7 @@ end_nup(pstops_doc_t *doc, /* I - Docum
|
||||
@@ -2191,7 +2215,7 @@ end_nup(pstops_doc_t *doc, /* I - Docum
|
||||
* Rotate the labels back to portrait...
|
||||
*/
|
||||
|
||||
@ -68,7 +68,7 @@ diff -up cups-1.4.1/filter/pstops.c.page-label cups-1.4.1/filter/pstops.c
|
||||
}
|
||||
else if (Orientation == 0)
|
||||
{
|
||||
@@ -2182,7 +2206,7 @@ end_nup(pstops_doc_t *doc, /* I - Docum
|
||||
@@ -2217,7 +2241,7 @@ end_nup(pstops_doc_t *doc, /* I - Docum
|
||||
default :
|
||||
if (is_last_page(number) && doc->use_ESPshowpage)
|
||||
{
|
||||
@ -77,7 +77,7 @@ diff -up cups-1.4.1/filter/pstops.c.page-label cups-1.4.1/filter/pstops.c
|
||||
doc_puts(doc, "ESPshowpage\n");
|
||||
}
|
||||
break;
|
||||
@@ -2385,6 +2409,12 @@ set_pstops_options(
|
||||
@@ -2420,6 +2444,12 @@ set_pstops_options(
|
||||
doc->new_bounding_box[3] = INT_MIN;
|
||||
|
||||
/*
|
||||
@ -87,6 +87,6 @@ diff -up cups-1.4.1/filter/pstops.c.page-label cups-1.4.1/filter/pstops.c
|
||||
+ doc->orientation = Orientation;
|
||||
+
|
||||
+ /*
|
||||
* AP_FIRSTPAGE_InputSlot
|
||||
* AP_FIRSTPAGE_* and the corresponding non-first-page options.
|
||||
*/
|
||||
|
||||
|
21
cups-ricoh-deviceid-oid.patch
Normal file
21
cups-ricoh-deviceid-oid.patch
Normal file
@ -0,0 +1,21 @@
|
||||
diff -up cups-1.4.3/backend/snmp.c.ricoh-deviceid-oid cups-1.4.3/backend/snmp.c
|
||||
--- cups-1.4.3/backend/snmp.c.ricoh-deviceid-oid 2010-05-11 17:30:57.266120467 +0100
|
||||
+++ cups-1.4.3/backend/snmp.c 2010-05-11 17:31:16.267120141 +0100
|
||||
@@ -195,6 +195,7 @@ static const int LexmarkProductOID[] = {
|
||||
static const int LexmarkProductOID2[] = { 1,3,6,1,4,1,674,10898,100,2,1,2,1,2,1,-1 };
|
||||
static const int LexmarkDeviceIdOID[] = { 1,3,6,1,4,1,641,2,1,2,1,3,1,-1 };
|
||||
static const int HPDeviceIdOID[] = { 1,3,6,1,4,1,11,2,3,9,1,1,7,0,-1 };
|
||||
+static const int RicohDeviceIdOID[] = { 1,3,6,1,4,1,367,3,2,1,1,1,11,0,-1 };
|
||||
static const int XeroxProductOID[] = { 1,3,6,1,4,1,128,2,1,3,1,2,0,-1 };
|
||||
static cups_array_t *DeviceURIs = NULL;
|
||||
static int HostNameLookups = 0;
|
||||
@@ -1002,6 +1003,9 @@ read_snmp_response(int fd) /* I - SNMP
|
||||
packet.community, CUPS_ASN1_GET_REQUEST,
|
||||
DEVICE_ID, LexmarkDeviceIdOID);
|
||||
_cupsSNMPWrite(fd, &(packet.address), CUPS_SNMP_VERSION_1,
|
||||
+ packet.community, CUPS_ASN1_GET_REQUEST,
|
||||
+ DEVICE_ID, RicohDeviceIdOID);
|
||||
+ _cupsSNMPWrite(fd, &(packet.address), CUPS_SNMP_VERSION_1,
|
||||
packet.community, CUPS_ASN1_GET_REQUEST,
|
||||
DEVICE_PRODUCT, XeroxProductOID);
|
||||
_cupsSNMPWrite(fd, &(packet.address), CUPS_SNMP_VERSION_1,
|
@ -1,25 +0,0 @@
|
||||
diff -up cups-1.4.2/scheduler/main.c.str3399 cups-1.4.2/scheduler/main.c
|
||||
--- cups-1.4.2/scheduler/main.c.str3399 2010-03-02 11:04:28.968100478 +0000
|
||||
+++ cups-1.4.2/scheduler/main.c 2010-03-02 11:04:47.442226409 +0000
|
||||
@@ -1733,7 +1733,7 @@ process_children(void)
|
||||
job->backend = -pid;
|
||||
|
||||
if (status && status != SIGTERM && status != SIGKILL &&
|
||||
- job->status >= 0)
|
||||
+ status != SIGPIPE && job->status >= 0)
|
||||
{
|
||||
/*
|
||||
* An error occurred; save the exit status so we know to stop
|
||||
@@ -1829,6 +1829,12 @@ process_children(void)
|
||||
"PID %d (%s) was terminated normally with signal %d.",
|
||||
pid, name, status);
|
||||
}
|
||||
+ else if (status == SIGPIPE)
|
||||
+ {
|
||||
+ cupsdLogMessage(CUPSD_LOG_DEBUG,
|
||||
+ "PID %d (%s) did not catch or ignore signal %d.",
|
||||
+ pid, name, status);
|
||||
+ }
|
||||
else if (status)
|
||||
{
|
||||
if (WIFEXITED(status))
|
@ -1,49 +0,0 @@
|
||||
diff -up cups-1.4.3/scheduler/job.c.str3425p2 cups-1.4.3/scheduler/job.c
|
||||
--- cups-1.4.3/scheduler/job.c.str3425p2 2010-06-01 17:16:46.000000000 +0200
|
||||
+++ cups-1.4.3/scheduler/job.c 2010-06-01 17:19:10.000000000 +0200
|
||||
@@ -2286,12 +2286,14 @@ cupsdSetJobState(
|
||||
if (!cupsdLoadJob(job))
|
||||
return;
|
||||
|
||||
- /*
|
||||
- * Don't do anything if the state is unchanged...
|
||||
- */
|
||||
-
|
||||
- if (newstate == (oldstate = job->state_value))
|
||||
- return;
|
||||
+ /*
|
||||
+ * Don't do anything if the state is unchanged and we aren't purging the
|
||||
+ * job...
|
||||
+ */
|
||||
+
|
||||
+ oldstate = job->state_value;
|
||||
+ if (newstate == oldstate && action != CUPSD_JOB_PURGE)
|
||||
+ return;
|
||||
|
||||
/*
|
||||
* Stop any processes that are working on the current job...
|
||||
@@ -2498,6 +2500,15 @@ cupsdSetJobState(
|
||||
job->dirty = 1;
|
||||
cupsdMarkDirty(CUPSD_DIRTY_JOBS);
|
||||
}
|
||||
+ else if (!job->printer)
|
||||
+ {
|
||||
+ /*
|
||||
+ * Delete the job immediately if not actively printing...
|
||||
+ */
|
||||
+
|
||||
+ cupsdDeleteJob(job, CUPSD_JOB_PURGE);
|
||||
+ job = NULL;
|
||||
+ }
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -2505,7 +2516,7 @@ cupsdSetJobState(
|
||||
* Finalize the job immediately if we forced things...
|
||||
*/
|
||||
|
||||
- if (action >= CUPSD_JOB_FORCE && job->printer)
|
||||
+ if (action >= CUPSD_JOB_FORCE && job && job->printer)
|
||||
finalize_job(job, 0);
|
||||
|
||||
/*
|
@ -1,12 +0,0 @@
|
||||
diff -up cups-1.4.3/cups/dest.c.str3503 cups-1.4.3/cups/dest.c
|
||||
--- cups-1.4.3/cups/dest.c.str3503 2010-03-31 13:31:42.000000000 +0200
|
||||
+++ cups-1.4.3/cups/dest.c 2010-03-31 13:32:52.000000000 +0200
|
||||
@@ -553,7 +553,7 @@ cupsGetNamedDest(http_t *http, /* I
|
||||
|
||||
if (!cups_get_sdests(http, op, name, 0, &dest))
|
||||
{
|
||||
- if (op == CUPS_GET_DEFAULT || name)
|
||||
+ if (op == CUPS_GET_DEFAULT || (name && !set_as_default))
|
||||
return (NULL);
|
||||
|
||||
/*
|
@ -1,158 +0,0 @@
|
||||
diff -up cups-1.4.2/scheduler/classes.c.str3505 cups-1.4.2/scheduler/classes.c
|
||||
--- cups-1.4.2/scheduler/classes.c.str3505 2009-10-07 19:16:09.000000000 +0100
|
||||
+++ cups-1.4.2/scheduler/classes.c 2010-02-23 11:43:06.033263862 +0000
|
||||
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Printer class routines for the Common UNIX Printing System (CUPS).
|
||||
*
|
||||
- * Copyright 2007-2009 by Apple Inc.
|
||||
+ * Copyright 2007-2010 by Apple Inc.
|
||||
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
@@ -117,7 +117,7 @@ cupsdAddPrinterToClass(
|
||||
* 'cupsdDeletePrinterFromClass()' - Delete a printer from a class.
|
||||
*/
|
||||
|
||||
-void
|
||||
+int /* O - 1 if class changed, 0 otherwise */
|
||||
cupsdDeletePrinterFromClass(
|
||||
cupsd_printer_t *c, /* I - Class to delete from */
|
||||
cupsd_printer_t *p) /* I - Printer to delete */
|
||||
@@ -149,13 +149,15 @@ cupsdDeletePrinterFromClass(
|
||||
(c->num_printers - i) * sizeof(cupsd_printer_t *));
|
||||
}
|
||||
else
|
||||
- return;
|
||||
+ return (0);
|
||||
|
||||
/*
|
||||
* Update the IPP attributes (have to do this for member-names)...
|
||||
*/
|
||||
|
||||
cupsdSetPrinterAttrs(c);
|
||||
+
|
||||
+ return (1);
|
||||
}
|
||||
|
||||
|
||||
@@ -163,10 +165,11 @@ cupsdDeletePrinterFromClass(
|
||||
* 'cupsdDeletePrinterFromClasses()' - Delete a printer from all classes.
|
||||
*/
|
||||
|
||||
-void
|
||||
+int /* O - 1 if class changed, 0 otherwise */
|
||||
cupsdDeletePrinterFromClasses(
|
||||
cupsd_printer_t *p) /* I - Printer to delete */
|
||||
{
|
||||
+ int changed = 0; /* Any class changed? */
|
||||
cupsd_printer_t *c; /* Pointer to current class */
|
||||
|
||||
|
||||
@@ -179,7 +182,7 @@ cupsdDeletePrinterFromClasses(
|
||||
c;
|
||||
c = (cupsd_printer_t *)cupsArrayNext(Printers))
|
||||
if (c->type & (CUPS_PRINTER_CLASS | CUPS_PRINTER_IMPLICIT))
|
||||
- cupsdDeletePrinterFromClass(c, p);
|
||||
+ changed |= cupsdDeletePrinterFromClass(c, p);
|
||||
|
||||
/*
|
||||
* Then clean out any empty implicit classes...
|
||||
@@ -193,7 +196,10 @@ cupsdDeletePrinterFromClasses(
|
||||
cupsdLogMessage(CUPSD_LOG_DEBUG, "Deleting implicit class \"%s\"...",
|
||||
c->name);
|
||||
cupsdDeletePrinter(c, 0);
|
||||
+ changed = 1;
|
||||
}
|
||||
+
|
||||
+ return (changed);
|
||||
}
|
||||
|
||||
|
||||
diff -up cups-1.4.2/scheduler/classes.h.str3505 cups-1.4.2/scheduler/classes.h
|
||||
--- cups-1.4.2/scheduler/classes.h.str3505 2008-09-19 21:03:36.000000000 +0100
|
||||
+++ cups-1.4.2/scheduler/classes.h 2010-02-23 11:43:06.012262825 +0000
|
||||
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Printer class definitions for the Common UNIX Printing System (CUPS).
|
||||
*
|
||||
- * Copyright 2007-2008 by Apple Inc.
|
||||
+ * Copyright 2007-2010 by Apple Inc.
|
||||
* Copyright 1997-2005 by Easy Software Products, all rights reserved.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
@@ -21,9 +21,9 @@
|
||||
extern cupsd_printer_t *cupsdAddClass(const char *name);
|
||||
extern void cupsdAddPrinterToClass(cupsd_printer_t *c,
|
||||
cupsd_printer_t *p);
|
||||
-extern void cupsdDeletePrinterFromClass(cupsd_printer_t *c,
|
||||
+extern int cupsdDeletePrinterFromClass(cupsd_printer_t *c,
|
||||
cupsd_printer_t *p);
|
||||
-extern void cupsdDeletePrinterFromClasses(cupsd_printer_t *p);
|
||||
+extern int cupsdDeletePrinterFromClasses(cupsd_printer_t *p);
|
||||
extern cupsd_printer_t *cupsdFindAvailablePrinter(const char *name);
|
||||
extern cupsd_printer_t *cupsdFindClass(const char *name);
|
||||
extern void cupsdLoadAllClasses(void);
|
||||
diff -up cups-1.4.2/scheduler/ipp.c.str3505 cups-1.4.2/scheduler/ipp.c
|
||||
--- cups-1.4.2/scheduler/ipp.c.str3505 2010-02-23 11:42:12.713386792 +0000
|
||||
+++ cups-1.4.2/scheduler/ipp.c 2010-02-23 11:43:06.025262343 +0000
|
||||
@@ -6451,7 +6451,9 @@ delete_printer(cupsd_client_t *con, /*
|
||||
cupsdLogMessage(CUPSD_LOG_INFO, "Printer \"%s\" deleted by \"%s\".",
|
||||
printer->name, get_username(con));
|
||||
|
||||
- cupsdDeletePrinter(printer, 0);
|
||||
+ if (cupsdDeletePrinter(printer, 0))
|
||||
+ cupsdMarkDirty(CUPSD_DIRTY_CLASSES);
|
||||
+
|
||||
cupsdMarkDirty(CUPSD_DIRTY_PRINTERS);
|
||||
}
|
||||
|
||||
diff -up cups-1.4.2/scheduler/printers.c.str3505 cups-1.4.2/scheduler/printers.c
|
||||
--- cups-1.4.2/scheduler/printers.c.str3505 2010-02-23 11:42:12.223386167 +0000
|
||||
+++ cups-1.4.2/scheduler/printers.c 2010-02-23 11:43:06.030262135 +0000
|
||||
@@ -657,12 +657,13 @@ cupsdDeleteAllPrinters(void)
|
||||
* 'cupsdDeletePrinter()' - Delete a printer from the system.
|
||||
*/
|
||||
|
||||
-void
|
||||
+int /* O - 1 if classes affected, 0 otherwise */
|
||||
cupsdDeletePrinter(
|
||||
cupsd_printer_t *p, /* I - Printer to delete */
|
||||
int update) /* I - Update printers.conf? */
|
||||
{
|
||||
- int i; /* Looping var */
|
||||
+ int i, /* Looping var */
|
||||
+ changed = 0; /* Class changed? */
|
||||
#ifdef __sgi
|
||||
char filename[1024]; /* Interface script filename */
|
||||
#endif /* __sgi */
|
||||
@@ -773,7 +774,7 @@ cupsdDeletePrinter(
|
||||
|
||||
if (!(p->type & CUPS_PRINTER_IMPLICIT))
|
||||
{
|
||||
- cupsdDeletePrinterFromClasses(p);
|
||||
+ changed = cupsdDeletePrinterFromClasses(p);
|
||||
|
||||
/*
|
||||
* Deregister from any browse protocols...
|
||||
@@ -854,6 +855,8 @@ cupsdDeletePrinter(
|
||||
*/
|
||||
|
||||
cupsArrayRestore(Printers);
|
||||
+
|
||||
+ return (changed);
|
||||
}
|
||||
|
||||
|
||||
diff -up cups-1.4.2/scheduler/printers.h.str3505 cups-1.4.2/scheduler/printers.h
|
||||
--- cups-1.4.2/scheduler/printers.h.str3505 2009-06-25 18:07:26.000000000 +0100
|
||||
+++ cups-1.4.2/scheduler/printers.h 2010-02-23 11:43:06.032262357 +0000
|
||||
@@ -141,7 +141,7 @@ extern void cupsdAddPrinterUser(cupsd_p
|
||||
const char *username);
|
||||
extern void cupsdCreateCommonData(void);
|
||||
extern void cupsdDeleteAllPrinters(void);
|
||||
-extern void cupsdDeletePrinter(cupsd_printer_t *p, int update);
|
||||
+extern int cupsdDeletePrinter(cupsd_printer_t *p, int update);
|
||||
extern cupsd_printer_t *cupsdFindDest(const char *name);
|
||||
extern cupsd_printer_t *cupsdFindPrinter(const char *name);
|
||||
extern cupsd_quota_t *cupsdFindQuota(cupsd_printer_t *p,
|
@ -1,12 +0,0 @@
|
||||
diff -up cups-1.4.3/systemv/lpstat.c.str3541 cups-1.4.3/systemv/lpstat.c
|
||||
--- cups-1.4.3/systemv/lpstat.c.str3541 2009-12-15 23:40:37.000000000 +0100
|
||||
+++ cups-1.4.3/systemv/lpstat.c 2010-04-16 12:56:04.000000000 +0200
|
||||
@@ -1423,7 +1423,7 @@ show_jobs(const char *dests, /* I - Des
|
||||
|
||||
rank ++;
|
||||
|
||||
- if (match_list(dests, dest) || match_list(users, username))
|
||||
+ if (match_list(dests, dest) && match_list(users, username))
|
||||
{
|
||||
jobdate = localtime(&jobtime);
|
||||
snprintf(temp, sizeof(temp), "%s-%d", dest, jobid);
|
132
cups.spec
132
cups.spec
@ -7,23 +7,33 @@
|
||||
|
||||
Summary: Common Unix Printing System
|
||||
Name: cups
|
||||
Version: 1.4.3
|
||||
Release: 8%{?dist}
|
||||
Version: 1.4.4
|
||||
Release: 1%{?dist}
|
||||
License: GPLv2
|
||||
Group: System Environment/Daemons
|
||||
Source: http://ftp.easysw.com/pub/cups/%{version}/cups-%{version}-source.tar.bz2
|
||||
# Our initscript
|
||||
Source1: cups.init
|
||||
# Pixmap for desktop file
|
||||
Source2: cupsprinter.png
|
||||
# udev rules for libusb devices
|
||||
Source3: cups-libusb.rules
|
||||
# LSPP-required ps->pdf filter
|
||||
Source4: pstopdf
|
||||
# xinetd config file for cups-lpd service
|
||||
Source5: cups-lpd
|
||||
Source6: pstoraster
|
||||
Source7: pstoraster.convs
|
||||
Source8: cups.logrotate
|
||||
Source9: ncp.backend
|
||||
Source10: cups.cron
|
||||
Source11: textonly.filter
|
||||
Source12: textonly.ppd
|
||||
# Logrotate configuration
|
||||
Source6: cups.logrotate
|
||||
# Backend for NCP protocol
|
||||
Source7: ncp.backend
|
||||
# Cron-based tmpwatch for /var/spool/cups/tmp
|
||||
Source8: cups.cron
|
||||
# Filter and PPD for textonly printing
|
||||
Source9: textonly.filter
|
||||
Source10: textonly.ppd
|
||||
# pstoraster filter from ghostscript.
|
||||
Source11: pstoraster
|
||||
Source12: pstoraster.convs
|
||||
Patch1: cups-no-gzip-man.patch
|
||||
Patch2: cups-1.1.16-system-auth.patch
|
||||
Patch3: cups-multilib.patch
|
||||
@ -49,22 +59,18 @@ Patch22: cups-uri-compat.patch
|
||||
Patch23: cups-cups-get-classes.patch
|
||||
Patch24: cups-avahi.patch
|
||||
Patch25: cups-str3382.patch
|
||||
Patch26: cups-str3503.patch
|
||||
Patch27: cups-str3399.patch
|
||||
Patch28: cups-gnutls-gcrypt-threads.patch
|
||||
Patch29: cups-0755.patch
|
||||
Patch30: cups-EAI_AGAIN.patch
|
||||
Patch31: cups-str3505.patch
|
||||
Patch32: cups-str3541.patch
|
||||
Patch31: cups-hostnamelookups.patch
|
||||
Patch33: cups-snmp-quirks.patch
|
||||
Patch34: cups-hostnamelookups.patch
|
||||
Patch35: cups-texttops-rotate-page.patch
|
||||
Patch36: cups-str3425p2.patch
|
||||
Patch34: cups-hp-deviceid-oid.patch
|
||||
Patch35: cups-dnssd-deviceid.patch
|
||||
Patch36: cups-ricoh-deviceid-oid.patch
|
||||
Patch37: cups-texttops-rotate-page.patch
|
||||
|
||||
Patch100: cups-lspp.patch
|
||||
|
||||
## SECURITY PATCHES:
|
||||
Patch200: cups-CVE-2010-0302.patch
|
||||
|
||||
Epoch: 1
|
||||
Url: http://www.cups.org/
|
||||
@ -100,6 +106,9 @@ BuildRequires: krb5-devel
|
||||
BuildRequires: avahi-devel
|
||||
BuildRequires: poppler-utils
|
||||
|
||||
# Make sure we get postscriptdriver tags.
|
||||
BuildRequires: pycups
|
||||
|
||||
%if %lspp
|
||||
BuildRequires: libselinux-devel >= 1.23
|
||||
BuildRequires: audit-libs-devel >= 1.1
|
||||
@ -127,6 +136,9 @@ Requires: ghostscript
|
||||
Requires: udev
|
||||
Requires: acl
|
||||
|
||||
# Make sure we have some filters for converting to raster format.
|
||||
Requires: ghostscript-cups
|
||||
|
||||
%package devel
|
||||
Summary: Common Unix Printing System - development environment
|
||||
Group: Development/Libraries
|
||||
@ -183,60 +195,92 @@ natively, without needing the lp/lpr commands.
|
||||
|
||||
%description lpd
|
||||
The Common UNIX Printing System provides a portable printing layer for
|
||||
UNIX® operating systems. This is the package that provices standard
|
||||
UNIX® operating systems. This is the package that provides standard
|
||||
lpd emulation.
|
||||
|
||||
%description php
|
||||
The Common UNIX Printing System provides a portable printing layer for
|
||||
UNIX® operating systems. This is the package that provices a PHP
|
||||
UNIX® operating systems. This is the package that provides a PHP
|
||||
module.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
# Don't gzip man pages in the Makefile, let rpmbuild do it.
|
||||
%patch1 -p1 -b .no-gzip-man
|
||||
# Use the system pam configuration.
|
||||
%patch2 -p1 -b .system-auth
|
||||
# Prevent multilib conflict in cups-config script.
|
||||
%patch3 -p1 -b .multilib
|
||||
# Fix compilation of serial backend.
|
||||
%patch4 -p1 -b .serial
|
||||
# Ignore rpm save/new files in the banners directory.
|
||||
%patch5 -p1 -b .banners
|
||||
# Use compatibility fallback path for ServerBin.
|
||||
%patch6 -p1 -b .serverbin-compat
|
||||
# Don't export SSLLIBS to cups-config.
|
||||
%patch7 -p1 -b .no-export-ssllibs
|
||||
# Allow file-based usb device URIs.
|
||||
%patch8 -p1 -b .direct-usb
|
||||
# Add --help option to lpr.
|
||||
%patch9 -p1 -b .lpr-help
|
||||
# Fix compilation of peer credentials support.
|
||||
%patch10 -p1 -b .peercred
|
||||
# Maintain a cupsd.pid file.
|
||||
%patch11 -p1 -b .pid
|
||||
# Fix orientation of page labels.
|
||||
%patch12 -p1 -b .page-label
|
||||
# Fix implementation of com.redhat.PrinterSpooler D-Bus object.
|
||||
%patch13 -p1 -b .eggcups
|
||||
# More sophisticated implementation of cupsGetPassword than getpass.
|
||||
%patch14 -p1 -b .getpass
|
||||
# Increase driverd timeout to 70s to accommodate foomatic.
|
||||
%patch15 -p1 -b .driverd-timeout
|
||||
# Only enforce maximum PPD line length when in strict mode.
|
||||
%patch16 -p1 -b .strict-ppd-line-length
|
||||
# Re-open the log if it has been logrotated under us.
|
||||
%patch17 -p1 -b .logrotate
|
||||
# Support for errno==ENOSPACE-based USB paper-out reporting.
|
||||
%patch18 -p1 -b .usb-paperout
|
||||
# Simplify the DNSSD parts so they can build using the compat library.
|
||||
%patch19 -p1 -b .build
|
||||
# Re-initialise the resolver on failure in httpAddrGetList().
|
||||
%patch20 -p1 -b .res_init
|
||||
# Log extra debugging information if no filters are available.
|
||||
%patch21 -p1 -b .filter-debug
|
||||
# Allow the usb backend to understand old-style URI formats.
|
||||
%patch22 -p1 -b .uri-compat
|
||||
# Fix support for older CUPS servers in cupsGetDests.
|
||||
%patch23 -p1 -b .cups-get-classes
|
||||
# Avahi support in the dnssd backend.
|
||||
%patch24 -p1 -b .avahi
|
||||
# Fix temporary filename creation.
|
||||
%patch25 -p1 -b .str3382
|
||||
%patch26 -p1 -b .str3503
|
||||
%patch27 -p1 -b .str3399
|
||||
#%patch28 -p1 -b .gnutls-gcrypt-threads
|
||||
# Use mode 0755 for binaries and libraries where appropriate.
|
||||
%patch29 -p1 -b .0755
|
||||
# Re-initialise the resolver on failure in httpAddrLookup().
|
||||
%patch30 -p1 -b .EAI_AGAIN
|
||||
%patch31 -p1 -b .str3505
|
||||
%patch32 -p1 -b .str3541
|
||||
# Use numeric addresses for interfaces unless HostNameLookups are
|
||||
# turned on (bug #583054).
|
||||
%patch31 -p1 -b .hostnamelookups
|
||||
# Handle SNMP supply level quirks (bug #581825).
|
||||
%patch33 -p1 -b .snmp-quirks
|
||||
%patch34 -p1 -b .hostnamelookups
|
||||
%patch35 -p1 -b .texttops-rotate-page
|
||||
%patch36 -p1 -b .str3425p2
|
||||
# Add an SNMP query for HP's device ID OID (STR #3552).
|
||||
%patch34 -p1 -b .hp-deviceid-oid
|
||||
# Mark DNS-SD Device IDs that have been guessed at with "FZY:1;".
|
||||
%patch35 -p1 -b .dnssd-deviceid
|
||||
# Add an SNMP query for Ricoh's device ID OID (STR #3552).
|
||||
%patch36 -p1 -b .ricoh-deviceid-oid
|
||||
# Adjust texttops output to be in natural orientation (STR #3563).
|
||||
# This fixes page-label orientation when texttops is used in the
|
||||
# filter chain (bug #572338).
|
||||
%patch37 -p1 -b .texttops-rotate-page
|
||||
|
||||
%if %lspp
|
||||
# LSPP support.
|
||||
%patch100 -p1 -b .lspp
|
||||
%endif
|
||||
|
||||
# SECURITY PATCHES:
|
||||
%patch200 -p1 -b .CVE-2010-0302
|
||||
|
||||
|
||||
sed -i -e '1iMaxLogSize 0' conf/cupsd.conf.in
|
||||
|
||||
@ -304,11 +348,11 @@ popd
|
||||
mkdir -p $RPM_BUILD_ROOT%{_datadir}/pixmaps $RPM_BUILD_ROOT%{_sysconfdir}/X11/sysconfig $RPM_BUILD_ROOT%{_sysconfdir}/X11/applnk/System $RPM_BUILD_ROOT%{_sysconfdir}/xinetd.d $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d $RPM_BUILD_ROOT%{_sysconfdir}/cron.daily
|
||||
install -c -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{_datadir}/pixmaps
|
||||
install -c -m 644 cups-lpd.real $RPM_BUILD_ROOT%{_sysconfdir}/xinetd.d/cups-lpd
|
||||
install -c -m 644 %{SOURCE8} $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/cups
|
||||
install -c -m 755 %{SOURCE9} $RPM_BUILD_ROOT%{cups_serverbin}/backend/ncp
|
||||
install -c -m 755 %{SOURCE10} $RPM_BUILD_ROOT%{_sysconfdir}/cron.daily/cups
|
||||
install -c -m 755 %{SOURCE11} $RPM_BUILD_ROOT%{cups_serverbin}/filter/textonly
|
||||
install -c -m 644 %{SOURCE12} $RPM_BUILD_ROOT%{_datadir}/cups/model/textonly.ppd
|
||||
install -c -m 644 %{SOURCE6} $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/cups
|
||||
install -c -m 755 %{SOURCE7} $RPM_BUILD_ROOT%{cups_serverbin}/backend/ncp
|
||||
install -c -m 755 %{SOURCE8} $RPM_BUILD_ROOT%{_sysconfdir}/cron.daily/cups
|
||||
install -c -m 755 %{SOURCE9} $RPM_BUILD_ROOT%{cups_serverbin}/filter/textonly
|
||||
install -c -m 644 %{SOURCE10} $RPM_BUILD_ROOT%{_datadir}/cups/model/textonly.ppd
|
||||
|
||||
# Ship pstopdf for LSPP systems to deal with malicious postscript
|
||||
%if %lspp
|
||||
@ -316,8 +360,8 @@ install -c -m 755 %{SOURCE4} $RPM_BUILD_ROOT%{cups_serverbin}/filter
|
||||
%endif
|
||||
|
||||
# Ship pstoraster (bug #69573).
|
||||
install -c -m 755 %{SOURCE6} $RPM_BUILD_ROOT%{cups_serverbin}/filter
|
||||
install -c -m 644 %{SOURCE7} $RPM_BUILD_ROOT%{_sysconfdir}/cups
|
||||
install -c -m 755 %{SOURCE11} $RPM_BUILD_ROOT%{cups_serverbin}/filter
|
||||
install -c -m 644 %{SOURCE12} $RPM_BUILD_ROOT%{_sysconfdir}/cups
|
||||
|
||||
# Ship a printers.conf file, and a client.conf file. That way, they get
|
||||
# their SELinux file contexts set correctly.
|
||||
@ -532,6 +576,20 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%{php_extdir}/phpcups.so
|
||||
|
||||
%changelog
|
||||
* Fri Jun 18 2010 Tim Waugh <twaugh@redhat.com> 1:1.4.4-1
|
||||
- 1.4.4. Fixes several security vulnerabilities (bug #605399):
|
||||
CVE-2010-0540, CVE-2010-0542, CVE-2010-1748. No longer need str3503,
|
||||
str3399, str3505, str3541, str3425p2 or CVE-2010-0302 patches.
|
||||
- Fix lpd provides.
|
||||
- Added comments for all sources and patches.
|
||||
- Reset status after successful ipp job (bug #548219, STR #3460).
|
||||
- Install udev rules in correct place (bug #530378).
|
||||
- Removed unapplied gnutls-gcrypt-threads patch. Fixed typos in
|
||||
descriptions for lpd and php sub-packages.
|
||||
- Add an SNMP query for Ricoh's device ID OID (STR #3552).
|
||||
- Mark DNS-SD Device IDs that have been guessed at with "FZY:1;".
|
||||
- Add an SNMP query for HP's device ID OID (STR #3552).
|
||||
|
||||
* Wed Jun 9 2010 Tim Waugh <twaugh@redhat.com> 1:1.4.3-8
|
||||
- Use upstream method of handling SNMP quirks in PPDs (STR #3551,
|
||||
bug #581825).
|
||||
|
Loading…
Reference in New Issue
Block a user