- 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:
Tim Waugh 2010-06-18 10:42:26 +00:00
parent fdf33eb9cd
commit 8399d834ef
17 changed files with 311 additions and 502 deletions

View File

@ -42,3 +42,4 @@ cups-1.4.0-source.tar.bz2
cups-1.4b2-source.tar.bz2 cups-1.4b2-source.tar.bz2
cups-1.4b2-svn8404-source.tar.bz2 cups-1.4b2-svn8404-source.tar.bz2
cups-1.4.3-source.tar.bz2 cups-1.4.3-source.tar.bz2
cups-1.4.4-source.tar.bz2

View File

@ -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
View 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);
}
}

View File

@ -1,6 +1,7 @@
--- cups-1.2.6/cups/usersys.c.getpass 2006-08-29 16:51:19.000000000 +0100 diff -up cups-1.4.4/cups/usersys.c.getpass cups-1.4.4/cups/usersys.c
+++ cups-1.2.6/cups/usersys.c 2006-11-13 16:19:32.000000000 +0000 --- cups-1.4.4/cups/usersys.c.getpass 2010-03-30 23:07:33.000000000 +0100
@@ -46,6 +46,8 @@ +++ cups-1.4.4/cups/usersys.c 2010-06-18 09:38:08.368096897 +0100
@@ -41,6 +41,8 @@
#include "globals.h" #include "globals.h"
#include <stdlib.h> #include <stdlib.h>
#include <sys/stat.h> #include <sys/stat.h>
@ -8,11 +9,11 @@
+#include <signal.h> +#include <signal.h>
#ifdef WIN32 #ifdef WIN32
# include <windows.h> # include <windows.h>
#endif /* WIN32 */ #else
@@ -455,7 +457,29 @@ @@ -406,7 +408,29 @@ _cupsGetPassword(const char *prompt) /*
const char * /* O - Password */ * Use the standard getpass function to get a password from the console.
_cupsGetPassword(const char *prompt) /* I - Prompt string */ */
{
- return (getpass(prompt)); - return (getpass(prompt));
+ static char password[100]; + static char password[100];
+ struct termios oldtio, newtio; + struct termios oldtio, newtio;
@ -37,6 +38,6 @@
+ else + else
+ password[0] ='\0'; + password[0] ='\0';
+ return password; + return password;
}
#endif /* WIN32 */ #endif /* WIN32 */
}

View File

@ -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 */

View File

@ -1,16 +1,19 @@
diff -up cups-1.4.3/scheduler/network.c.hostnamelookups cups-1.4.3/scheduler/network.c diff -up cups-1.4.4/scheduler/network.c.hostnamelookups cups-1.4.4/scheduler/network.c
--- cups-1.4.3/scheduler/network.c.hostnamelookups 2009-04-28 01:23:38.000000000 +0100 --- cups-1.4.4/scheduler/network.c.hostnamelookups 2010-04-09 23:42:09.000000000 +0100
+++ cups-1.4.3/scheduler/network.c 2010-05-06 15:11:34.652926030 +0100 +++ cups-1.4.4/scheduler/network.c 2010-06-18 11:13:02.331979867 +0100
@@ -155,7 +155,7 @@ cupsdNetIFUpdate(void) @@ -154,11 +154,7 @@ cupsdNetIFUpdate(void)
* Try looking up the hostname for the address as needed... * Try looking up the hostname for the address as needed...
*/ */
-#ifdef __APPLE__
if (HostNameLookups)
-#else
- if (HostNameLookups || RemotePort) - if (HostNameLookups || RemotePort)
+ if (HostNameLookups) -#endif /* __APPLE__ */
httpAddrLookup((http_addr_t *)(addr->ifa_addr), hostname, httpAddrLookup((http_addr_t *)(addr->ifa_addr), hostname,
sizeof(hostname)); sizeof(hostname));
else else
@@ -163,7 +163,7 @@ cupsdNetIFUpdate(void) @@ -166,7 +162,7 @@ cupsdNetIFUpdate(void)
/* /*
* Map the default server address and localhost to the server name * Map the default server address and localhost to the server name
* and localhost, respectively; for all other addresses, use the * and localhost, respectively; for all other addresses, use the

View 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 :

View File

@ -1,7 +1,7 @@
diff -up cups-1.4.3/config.h.in.lspp cups-1.4.3/config.h.in diff -up cups-1.4.4/config.h.in.lspp cups-1.4.4/config.h.in
--- cups-1.4.3/config.h.in.lspp 2010-03-31 14:08:57.000000000 +0200 --- cups-1.4.4/config.h.in.lspp 2010-06-18 09:38:22.645104842 +0100
+++ cups-1.4.3/config.h.in 2010-03-31 14:08:57.000000000 +0200 +++ cups-1.4.4/config.h.in 2010-06-18 09:38:22.681104733 +0100
@@ -633,6 +633,13 @@ @@ -646,6 +646,13 @@
#undef HAVE_TCPD_H #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_ */ #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 diff -up cups-1.4.4/config-scripts/cups-lspp.m4.lspp cups-1.4.4/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.4/config-scripts/cups-lspp.m4.lspp 2010-06-18 09:38:22.681104733 +0100
+++ cups-1.4.3/config-scripts/cups-lspp.m4 2010-03-31 14:08:57.000000000 +0200 +++ cups-1.4.4/config-scripts/cups-lspp.m4 2010-06-18 09:38:22.681104733 +0100
@@ -0,0 +1,36 @@ @@ -0,0 +1,36 @@
+dnl +dnl
+dnl LSPP code for the Common UNIX Printing System (CUPS). +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 + esac
+fi +fi
diff -up cups-1.4.3/configure.in.lspp cups-1.4.3/configure.in diff -up cups-1.4.4/configure.in.lspp cups-1.4.4/configure.in
--- cups-1.4.3/configure.in.lspp 2008-11-14 20:32:22.000000000 +0100 --- cups-1.4.4/configure.in.lspp 2010-06-16 01:39:16.000000000 +0100
+++ cups-1.4.3/configure.in 2010-03-31 14:08:57.000000000 +0200 +++ cups-1.4.4/configure.in 2010-06-18 09:38:22.682104565 +0100
@@ -42,6 +42,8 @@ sinclude(config-scripts/cups-pap.m4) @@ -42,6 +42,8 @@ sinclude(config-scripts/cups-pap.m4)
sinclude(config-scripts/cups-pdf.m4) sinclude(config-scripts/cups-pdf.m4)
sinclude(config-scripts/cups-scripting.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="" INSTALL_LANGUAGES=""
UNINSTALL_LANGUAGES="" UNINSTALL_LANGUAGES=""
LANGFILES="" LANGFILES=""
diff -up cups-1.4.3/cups/cups.h.lspp cups-1.4.3/cups/cups.h diff -up cups-1.4.4/cups/cups.h.lspp cups-1.4.4/cups/cups.h
--- cups-1.4.3/cups/cups.h.lspp 2009-11-16 18:11:56.000000000 +0100 --- cups-1.4.4/cups/cups.h.lspp 2010-04-23 19:56:34.000000000 +0100
+++ cups-1.4.3/cups/cups.h 2010-03-31 14:08:57.000000000 +0200 +++ cups-1.4.4/cups/cups.h 2010-06-18 09:38:22.682104565 +0100
@@ -15,6 +15,9 @@ @@ -15,6 +15,9 @@
* This file is subject to the Apple OS-Developed Software exception. * 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_ #ifndef _CUPS_CUPS_H_
# define _CUPS_CUPS_H_ # define _CUPS_CUPS_H_
@@ -84,6 +87,12 @@ extern "C" { @@ -86,6 +89,12 @@ extern "C" {
# define CUPS_WHICHJOBS_COMPLETED 1 # 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... * Types and structures...
*/ */
diff -up cups-1.4.3/data/Makefile.lspp cups-1.4.3/data/Makefile diff -up cups-1.4.4/data/Makefile.lspp cups-1.4.4/data/Makefile
--- cups-1.4.3/data/Makefile.lspp 2008-11-12 20:30:57.000000000 +0100 --- cups-1.4.4/data/Makefile.lspp 2008-11-12 19:30:57.000000000 +0000
+++ cups-1.4.3/data/Makefile 2010-03-31 14:08:57.000000000 +0200 +++ cups-1.4.4/data/Makefile 2010-06-18 09:38:22.686104153 +0100
@@ -25,7 +25,10 @@ BANNERS = \ @@ -25,7 +25,10 @@ BANNERS = \
secret \ secret \
standard \ standard \
@ -108,9 +108,9 @@ diff -up cups-1.4.3/data/Makefile.lspp cups-1.4.3/data/Makefile
CHARMAPS = \ CHARMAPS = \
euc-cn.txt \ euc-cn.txt \
diff -up cups-1.4.3/data/mls.lspp cups-1.4.3/data/mls diff -up cups-1.4.4/data/mls.lspp cups-1.4.4/data/mls
--- cups-1.4.3/data/mls.lspp 2010-03-31 14:08:57.000000000 +0200 --- cups-1.4.4/data/mls.lspp 2010-06-18 09:38:22.686104153 +0100
+++ cups-1.4.3/data/mls 2010-03-31 14:08:57.000000000 +0200 +++ cups-1.4.4/data/mls 2010-06-18 09:38:22.687104566 +0100
@@ -0,0 +1,261 @@ @@ -0,0 +1,261 @@
+%!PS-Adobe-3.0 +%!PS-Adobe-3.0
+%%BoundingBox: 0 0 612 792 +%%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 $". +% End of "$Id: mls_template,v 1.1 2005/06/27 18:44:46 colmo Exp $".
+% +%
+%%EOF +%%EOF
diff -up cups-1.4.3/data/selinux.lspp cups-1.4.3/data/selinux diff -up cups-1.4.4/data/selinux.lspp cups-1.4.4/data/selinux
--- cups-1.4.3/data/selinux.lspp 2010-03-31 14:08:57.000000000 +0200 --- cups-1.4.4/data/selinux.lspp 2010-06-18 09:38:22.687104566 +0100
+++ cups-1.4.3/data/selinux 2010-03-31 14:08:57.000000000 +0200 +++ cups-1.4.4/data/selinux 2010-06-18 09:38:22.687104566 +0100
@@ -0,0 +1,261 @@ @@ -0,0 +1,261 @@
+%!PS-Adobe-3.0 +%!PS-Adobe-3.0
+%%BoundingBox: 0 0 612 792 +%%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 $". +% End of "$Id: mls_template,v 1.1 2005/06/27 18:44:46 colmo Exp $".
+% +%
+%%EOF +%%EOF
diff -up cups-1.4.3/data/te.lspp cups-1.4.3/data/te diff -up cups-1.4.4/data/te.lspp cups-1.4.4/data/te
--- cups-1.4.3/data/te.lspp 2010-03-31 14:08:57.000000000 +0200 --- cups-1.4.4/data/te.lspp 2010-06-18 09:38:22.688105441 +0100
+++ cups-1.4.3/data/te 2010-03-31 14:08:57.000000000 +0200 +++ cups-1.4.4/data/te 2010-06-18 09:38:22.688105441 +0100
@@ -0,0 +1,261 @@ @@ -0,0 +1,261 @@
+%!PS-Adobe-3.0 +%!PS-Adobe-3.0
+%%BoundingBox: 0 0 612 792 +%%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 $". +% End of "$Id: mls_template,v 1.1 2005/06/27 18:44:46 colmo Exp $".
+% +%
+%%EOF +%%EOF
diff -up cups-1.4.3/filter/common.c.lspp cups-1.4.3/filter/common.c diff -up cups-1.4.4/filter/common.c.lspp cups-1.4.4/filter/common.c
--- cups-1.4.3/filter/common.c.lspp 2007-07-11 23:46:42.000000000 +0200 --- cups-1.4.4/filter/common.c.lspp 2007-07-11 22:46:42.000000000 +0100
+++ cups-1.4.3/filter/common.c 2010-03-31 14:08:57.000000000 +0200 +++ cups-1.4.4/filter/common.c 2010-06-18 09:38:22.689104687 +0100
@@ -30,6 +30,12 @@ @@ -30,6 +30,12 @@
* Include necessary headers... * 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 diff -up cups-1.4.4/filter/pstops.c.lspp cups-1.4.4/filter/pstops.c
--- cups-1.4.3/filter/pstops.c.lspp 2010-03-31 14:08:57.000000000 +0200 --- cups-1.4.4/filter/pstops.c.lspp 2010-06-18 09:38:22.579980230 +0100
+++ cups-1.4.3/filter/pstops.c 2010-03-31 14:08:57.000000000 +0200 +++ cups-1.4.4/filter/pstops.c 2010-06-18 09:38:22.693979174 +0100
@@ -3275,6 +3275,18 @@ write_label_prolog(pstops_doc_t *doc, /* @@ -3314,6 +3314,18 @@ write_label_prolog(pstops_doc_t *doc, /*
{ {
const char *classification; /* CLASSIFICATION environment variable */ const char *classification; /* CLASSIFICATION environment variable */
const char *ptr; /* Temporary string pointer */ 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; 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... * 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_printf(doc, " %.0f moveto ESPpl show\n", top - 14.0);
doc_puts(doc, "pop\n"); doc_puts(doc, "pop\n");
doc_puts(doc, "}bind put\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 diff -up cups-1.4.4/Makedefs.in.lspp cups-1.4.4/Makedefs.in
--- cups-1.4.3/Makedefs.in.lspp 2010-03-31 14:08:57.000000000 +0200 --- cups-1.4.4/Makedefs.in.lspp 2010-06-18 09:38:22.654104605 +0100
+++ cups-1.4.3/Makedefs.in 2010-03-31 14:08:57.000000000 +0200 +++ cups-1.4.4/Makedefs.in 2010-06-18 09:38:22.698980378 +0100
@@ -146,7 +146,7 @@ LIBCUPSORDER = @LIBCUPSORDER@ @@ -146,7 +146,7 @@ LIBCUPSORDER = @LIBCUPSORDER@
LIBCUPSIMAGEORDER = @LIBCUPSIMAGEORDER@ LIBCUPSIMAGEORDER = @LIBCUPSIMAGEORDER@
LINKCUPS = @LINKCUPS@ $(SSLLIBS) $(DNSSDLIBS) 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 .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: .c.o:
diff -up cups-1.4.3/scheduler/client.c.lspp cups-1.4.3/scheduler/client.c diff -up cups-1.4.4/scheduler/client.c.lspp cups-1.4.4/scheduler/client.c
--- cups-1.4.3/scheduler/client.c.lspp 2009-07-15 01:02:05.000000000 +0200 --- cups-1.4.4/scheduler/client.c.lspp 2010-04-23 19:56:34.000000000 +0100
+++ cups-1.4.3/scheduler/client.c 2010-03-31 14:08:57.000000000 +0200 +++ cups-1.4.4/scheduler/client.c 2010-06-18 09:38:22.705980063 +0100
@@ -44,6 +44,7 @@ @@ -44,6 +44,7 @@
* valid_host() - Is the Host: field valid? * valid_host() - Is the Host: field valid?
* write_file() - Send a file via HTTP. * 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) 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 */ #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. * '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 diff -up cups-1.4.4/scheduler/client.h.lspp cups-1.4.4/scheduler/client.h
--- cups-1.4.3/scheduler/client.h.lspp 2009-05-27 00:01:23.000000000 +0200 --- cups-1.4.4/scheduler/client.h.lspp 2009-05-26 23:01:23.000000000 +0100
+++ cups-1.4.3/scheduler/client.h 2010-03-31 14:08:57.000000000 +0200 +++ cups-1.4.4/scheduler/client.h 2010-06-18 09:38:22.711104323 +0100
@@ -18,6 +18,13 @@ @@ -18,6 +18,13 @@
#endif /* HAVE_AUTHORIZATION_H */ #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 diff -up cups-1.4.4/scheduler/conf.c.lspp cups-1.4.4/scheduler/conf.c
--- cups-1.4.3/scheduler/conf.c.lspp 2010-03-31 14:08:57.000000000 +0200 --- cups-1.4.4/scheduler/conf.c.lspp 2010-06-18 09:38:22.526979999 +0100
+++ cups-1.4.3/scheduler/conf.c 2010-03-31 14:08:57.000000000 +0200 +++ cups-1.4.4/scheduler/conf.c 2010-06-18 09:38:22.713979624 +0100
@@ -29,6 +29,7 @@ @@ -29,6 +29,7 @@
* read_configuration() - Read a configuration file. * read_configuration() - Read a configuration file.
* read_location() - Read a <Location path> definition. * 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... * 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) # if defined(HAVE_LIBSSL) || defined(HAVE_GNUTLS)
{ "ServerKey", &ServerKey, CUPSD_VARTYPE_PATHNAME }, { "ServerKey", &ServerKey, CUPSD_VARTYPE_PATHNAME },
# endif /* HAVE_LIBSSL || HAVE_GNUTLS */ # 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 */ #endif /* HAVE_SSL */
{ "ServerName", &ServerName, CUPSD_VARTYPE_STRING }, { "ServerName", &ServerName, CUPSD_VARTYPE_STRING },
{ "ServerRoot", &ServerRoot, CUPSD_VARTYPE_PATHNAME }, { "ServerRoot", &ServerRoot, CUPSD_VARTYPE_PATHNAME },
@@ -432,6 +440,9 @@ cupsdReadConfiguration(void) @@ -430,6 +438,9 @@ cupsdReadConfiguration(void)
const char *tmpdir; /* TMPDIR environment variable */ const char *tmpdir; /* TMPDIR environment variable */
struct stat tmpinfo; /* Temporary directory info */ struct stat tmpinfo; /* Temporary directory info */
cupsd_policy_t *p; /* Policy */ 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(); 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.", cupsdLogMessage(CUPSD_LOG_INFO, "Remote access is %s.",
RemotePort ? "enabled" : "disabled"); RemotePort ? "enabled" : "disabled");
@@ -1083,11 +1113,23 @@ cupsdReadConfiguration(void) @@ -1081,11 +1111,23 @@ cupsdReadConfiguration(void)
* Update classification setting as needed... * 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... * 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); 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. * 'read_policy()' - Read a <Policy name> definition.
diff -up cups-1.4.3/scheduler/conf.h.lspp cups-1.4.3/scheduler/conf.h diff -up cups-1.4.4/scheduler/conf.h.lspp cups-1.4.4/scheduler/conf.h
--- cups-1.4.3/scheduler/conf.h.lspp 2010-03-31 14:08:57.000000000 +0200 --- cups-1.4.4/scheduler/conf.h.lspp 2010-06-18 09:38:22.527979881 +0100
+++ cups-1.4.3/scheduler/conf.h 2010-03-31 14:08:57.000000000 +0200 +++ cups-1.4.4/scheduler/conf.h 2010-06-18 09:38:22.715979172 +0100
@@ -253,6 +253,12 @@ VAR char *ServerKey VALUE(NULL); @@ -250,6 +250,12 @@ VAR char *ServerKey VALUE(NULL);
VAR int SSLOptions VALUE(CUPSD_SSL_NONE); VAR int SSLOptions VALUE(CUPSD_SSL_NONE);
/* SSL/TLS options */ /* SSL/TLS options */
#endif /* HAVE_SSL */ #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 #ifdef HAVE_LAUNCHD
VAR int LaunchdTimeout VALUE(DEFAULT_KEEPALIVE); 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 */ /* System group auth key */
#endif /* HAVE_AUTHORIZATION_H */ #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... * Prototypes...
diff -up cups-1.4.3/scheduler/ipp.c.lspp cups-1.4.3/scheduler/ipp.c diff -up cups-1.4.4/scheduler/ipp.c.lspp cups-1.4.4/scheduler/ipp.c
--- cups-1.4.3/scheduler/ipp.c.lspp 2010-03-31 14:08:57.000000000 +0200 --- cups-1.4.4/scheduler/ipp.c.lspp 2010-06-18 09:38:22.599103898 +0100
+++ cups-1.4.3/scheduler/ipp.c 2010-03-31 14:11:37.000000000 +0200 +++ cups-1.4.4/scheduler/ipp.c 2010-06-18 09:39:08.308979874 +0100
@@ -41,6 +41,7 @@ @@ -41,6 +41,7 @@
* cancel_all_jobs() - Cancel all print jobs. * cancel_all_jobs() - Cancel all print jobs.
* cancel_job() - Cancel a print job. * 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 int check_quotas(cupsd_client_t *con, cupsd_printer_t *p);
static ipp_attribute_t *copy_attribute(ipp_t *to, ipp_attribute_t *attr, static ipp_attribute_t *copy_attribute(ipp_t *to, ipp_attribute_t *attr,
int quickcopy); int quickcopy);
@@ -1337,6 +1352,21 @@ add_job(cupsd_client_t *con, /* I - Cl @@ -1355,6 +1370,21 @@ add_job(cupsd_client_t *con, /* I - Cl
int kbytes; /* Size of print file */ ipp_attribute_t *media_col, /* media-col attribute */
int i; /* Looping var */ *media_margin; /* media-*-margin attribute */
int lowerpagerange; /* Page range bound */ ipp_t *unsup_col; /* media-col in unsupported response */
+#ifdef WITH_LSPP +#ifdef WITH_LSPP
+ char *audit_message; /* Audit message string */ + char *audit_message; /* Audit message string */
+ char *printerfile; /* device file pointed to by the printer */ + 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))", 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, ippAddString(con->request, IPP_TAG_JOB, IPP_TAG_NAME, "job-name", NULL,
"Untitled"); "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) if ((job = cupsdAddJob(priority, printer->name)) == NULL)
{ {
send_ipp_status(con, IPP_INTERNAL_ERROR, 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); 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 | job->dtype = printer->type & (CUPS_PRINTER_CLASS | CUPS_PRINTER_IMPLICIT |
CUPS_PRINTER_REMOTE); CUPS_PRINTER_REMOTE);
job->attrs = con->request; 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[0].string.text = _cupsStrRetain(printer->job_sheets[0]);
attr->values[1].string.text = _cupsStrRetain(printer->job_sheets[1]); 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; 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-sheets=\"%s,none\", "
"job-originating-user-name=\"%s\"", "job-originating-user-name=\"%s\"",
Classification, job->username); 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 && else if (attr->num_values == 2 &&
strcmp(attr->values[0].string.text, 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\"", "job-originating-user-name=\"%s\"",
attr->values[0].string.text, attr->values[0].string.text,
attr->values[1].string.text, job->username); 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) && else if (strcmp(attr->values[0].string.text, Classification) &&
strcmp(attr->values[0].string.text, "none") && 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\"", "job-originating-user-name=\"%s\"",
attr->values[0].string.text, attr->values[0].string.text,
attr->values[1].string.text, job->username); 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) && 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-sheets=\"%s\", "
"job-originating-user-name=\"%s\"", "job-originating-user-name=\"%s\"",
Classification, job->username); 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... * 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. * '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 */ char attrname[255], /* Name of attribute */
*s; /* Pointer into name */ *s; /* Pointer into name */
ipp_attribute_t *attr; /* Attribute */ 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, 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); fchmod(cupsFileNumber(out), 0640);
fchown(cupsFileNumber(out), RunUser, Group); 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... * 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 else
s = attrname; 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")) if (!strcmp(s, "printer-name"))
{ {
cupsFilePuts(out, job->dest); 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; return;
} }
@ -2222,7 +2222,7 @@ diff -up cups-1.4.3/scheduler/ipp.c.lspp cups-1.4.3/scheduler/ipp.c
/* /*
* Copy attributes... * 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)) if (username[0] && strcasecmp(username, job->username))
continue; 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) if (count > 0)
ippAddSeparator(con->response); 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); 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... * Check the username against the owner...
*/ */
diff -up cups-1.4.3/scheduler/job.c.lspp cups-1.4.3/scheduler/job.c diff -up cups-1.4.4/scheduler/job.c.lspp cups-1.4.4/scheduler/job.c
--- cups-1.4.3/scheduler/job.c.lspp 2010-03-31 14:08:57.000000000 +0200 --- cups-1.4.4/scheduler/job.c.lspp 2010-06-18 09:38:22.629104109 +0100
+++ cups-1.4.3/scheduler/job.c 2010-03-31 14:08:57.000000000 +0200 +++ cups-1.4.4/scheduler/job.c 2010-06-18 09:38:22.734978722 +0100
@@ -66,6 +66,9 @@ @@ -66,6 +66,9 @@
* update_job_attrs() - Update the job-printer-* attributes. * 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; job->attrs->state = IPP_IDLE;
if (ippWriteIO(fp, (ipp_iocb_t)cupsFileWrite, 1, NULL, 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) banner_page)
continue; 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... * 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 */ start_job(cupsd_job_t *job, /* I - Job ID */
cupsd_printer_t *printer) /* I - Printer to print job */ 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))", cupsdLogMessage(CUPSD_LOG_DEBUG2, "start_job(job=%p(%d), printer=%p(%s))",
job, job->id, printer, printer->name); 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_SETFD,
fcntl(job->side_pipes[1], F_GETFD) | FD_CLOEXEC); 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... * 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 diff -up cups-1.4.4/scheduler/job.h.lspp cups-1.4.4/scheduler/job.h
--- cups-1.4.3/scheduler/job.h.lspp 2009-05-12 00:46:01.000000000 +0200 --- cups-1.4.4/scheduler/job.h.lspp 2009-05-11 23:46:01.000000000 +0100
+++ cups-1.4.3/scheduler/job.h 2010-03-31 14:08:57.000000000 +0200 +++ cups-1.4.4/scheduler/job.h 2010-06-18 09:38:22.734978722 +0100
@@ -13,6 +13,13 @@ @@ -13,6 +13,13 @@
* file is missing or damaged, see the license at "http://www.cups.org/". * file is missing or damaged, see the license at "http://www.cups.org/".
*/ */
@ -2669,10 +2669,10 @@ 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 ****/ 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 diff -up cups-1.4.4/scheduler/main.c.lspp cups-1.4.4/scheduler/main.c
--- cups-1.4.3/scheduler/main.c.lspp 2010-03-31 14:08:57.000000000 +0200 --- cups-1.4.4/scheduler/main.c.lspp 2010-06-18 09:38:22.574980424 +0100
+++ cups-1.4.3/scheduler/main.c 2010-03-31 14:08:57.000000000 +0200 +++ cups-1.4.4/scheduler/main.c 2010-06-18 09:39:26.548103442 +0100
@@ -35,6 +35,8 @@ @@ -37,6 +37,8 @@
* usage() - Show scheduler usage. * usage() - Show scheduler usage.
*/ */
@ -2681,7 +2681,7 @@ diff -up cups-1.4.3/scheduler/main.c.lspp cups-1.4.3/scheduler/main.c
/* /*
* Include necessary headers... * Include necessary headers...
*/ */
@@ -73,6 +75,9 @@ @@ -76,6 +78,9 @@
# include <dlfcn.h> # include <dlfcn.h>
#endif /* __APPLE__ && HAVE_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... * 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; int launchd_idle_exit;
/* Idle exit on select timeout? */ /* Idle exit on select timeout? */
#endif /* HAVE_LAUNCHD */ #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 #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 */ #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... * 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(); 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); return (!stop_scheduler);
} }
diff -up cups-1.4.3/scheduler/printers.c.lspp cups-1.4.3/scheduler/printers.c diff -up cups-1.4.4/scheduler/printers.c.lspp cups-1.4.4/scheduler/printers.c
--- cups-1.4.3/scheduler/printers.c.lspp 2010-03-31 14:08:57.000000000 +0200 --- cups-1.4.4/scheduler/printers.c.lspp 2010-06-18 09:38:22.556104527 +0100
+++ cups-1.4.3/scheduler/printers.c 2010-03-31 14:08:57.000000000 +0200 +++ cups-1.4.4/scheduler/printers.c 2010-06-18 09:38:22.740980299 +0100
@@ -58,6 +58,8 @@ @@ -59,6 +59,8 @@
* write_xml_string() - Write a string with XML escaping. * 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... * 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 */ #endif /* __sgi */
static void write_xml_string(cups_file_t *fp, const char *s); 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. * '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", "username",
"password" "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, 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 ? attr->values[1].string.text = _cupsStrAlloc(Classification ?
Classification : p->job_sheets[1]); 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; 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 */ #endif /* __sgi */

View File

@ -1,6 +1,6 @@
diff -up cups-1.4.1/filter/pstops.c.page-label cups-1.4.1/filter/pstops.c diff -up cups-1.4.4/filter/pstops.c.page-label cups-1.4.4/filter/pstops.c
--- cups-1.4.1/filter/pstops.c.page-label 2009-10-02 12:33:33.410719651 +0100 --- cups-1.4.4/filter/pstops.c.page-label 2010-03-30 23:07:33.000000000 +0100
+++ cups-1.4.1/filter/pstops.c 2009-10-02 12:34:11.399594180 +0100 +++ cups-1.4.4/filter/pstops.c 2010-06-18 09:36:18.239126341 +0100
@@ -108,6 +108,7 @@ typedef struct /**** Document informa @@ -108,6 +108,7 @@ typedef struct /**** Document informa
int num_options; /* Number of document-wide options */ int num_options; /* Number of document-wide options */
cups_option_t *options; /* 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? */ saw_eof, /* Saw the %%EOF comment? */
slow_collate, /* Collate copies by hand? */ slow_collate, /* Collate copies by hand? */
slow_duplex, /* Duplex pages slowly? */ 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... * 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, write_label_prolog(doc, doc->page_label, PageBottom,
PageWidth - PageLength + PageTop, PageLength); PageWidth - PageLength + PageTop, PageLength);
else 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); PageLength);
} }
else 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 : case 1 :
if (doc->use_ESPshowpage) 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"); doc_puts(doc, "ESPshowpage\n");
} }
break; 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... * 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) 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 : default :
if (is_last_page(number) && doc->use_ESPshowpage) 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"); doc_puts(doc, "ESPshowpage\n");
} }
break; break;
@@ -2385,6 +2409,12 @@ set_pstops_options( @@ -2420,6 +2444,12 @@ set_pstops_options(
doc->new_bounding_box[3] = INT_MIN; 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; + doc->orientation = Orientation;
+ +
+ /* + /*
* AP_FIRSTPAGE_InputSlot * AP_FIRSTPAGE_* and the corresponding non-first-page options.
*/ */

View 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,

View File

@ -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))

View File

@ -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);
/*

View File

@ -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);
/*

View File

@ -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,

View File

@ -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
View File

@ -7,23 +7,33 @@
Summary: Common Unix Printing System Summary: Common Unix Printing System
Name: cups Name: cups
Version: 1.4.3 Version: 1.4.4
Release: 8%{?dist} Release: 1%{?dist}
License: GPLv2 License: GPLv2
Group: System Environment/Daemons Group: System Environment/Daemons
Source: http://ftp.easysw.com/pub/cups/%{version}/cups-%{version}-source.tar.bz2 Source: http://ftp.easysw.com/pub/cups/%{version}/cups-%{version}-source.tar.bz2
# Our initscript
Source1: cups.init Source1: cups.init
# Pixmap for desktop file
Source2: cupsprinter.png Source2: cupsprinter.png
# udev rules for libusb devices
Source3: cups-libusb.rules Source3: cups-libusb.rules
# LSPP-required ps->pdf filter
Source4: pstopdf Source4: pstopdf
# xinetd config file for cups-lpd service
Source5: cups-lpd Source5: cups-lpd
Source6: pstoraster # Logrotate configuration
Source7: pstoraster.convs Source6: cups.logrotate
Source8: cups.logrotate # Backend for NCP protocol
Source9: ncp.backend Source7: ncp.backend
Source10: cups.cron # Cron-based tmpwatch for /var/spool/cups/tmp
Source11: textonly.filter Source8: cups.cron
Source12: textonly.ppd # 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 Patch1: cups-no-gzip-man.patch
Patch2: cups-1.1.16-system-auth.patch Patch2: cups-1.1.16-system-auth.patch
Patch3: cups-multilib.patch Patch3: cups-multilib.patch
@ -49,22 +59,18 @@ Patch22: cups-uri-compat.patch
Patch23: cups-cups-get-classes.patch Patch23: cups-cups-get-classes.patch
Patch24: cups-avahi.patch Patch24: cups-avahi.patch
Patch25: cups-str3382.patch Patch25: cups-str3382.patch
Patch26: cups-str3503.patch
Patch27: cups-str3399.patch
Patch28: cups-gnutls-gcrypt-threads.patch
Patch29: cups-0755.patch Patch29: cups-0755.patch
Patch30: cups-EAI_AGAIN.patch Patch30: cups-EAI_AGAIN.patch
Patch31: cups-str3505.patch Patch31: cups-hostnamelookups.patch
Patch32: cups-str3541.patch
Patch33: cups-snmp-quirks.patch Patch33: cups-snmp-quirks.patch
Patch34: cups-hostnamelookups.patch Patch34: cups-hp-deviceid-oid.patch
Patch35: cups-texttops-rotate-page.patch Patch35: cups-dnssd-deviceid.patch
Patch36: cups-str3425p2.patch Patch36: cups-ricoh-deviceid-oid.patch
Patch37: cups-texttops-rotate-page.patch
Patch100: cups-lspp.patch Patch100: cups-lspp.patch
## SECURITY PATCHES: ## SECURITY PATCHES:
Patch200: cups-CVE-2010-0302.patch
Epoch: 1 Epoch: 1
Url: http://www.cups.org/ Url: http://www.cups.org/
@ -100,6 +106,9 @@ BuildRequires: krb5-devel
BuildRequires: avahi-devel BuildRequires: avahi-devel
BuildRequires: poppler-utils BuildRequires: poppler-utils
# Make sure we get postscriptdriver tags.
BuildRequires: pycups
%if %lspp %if %lspp
BuildRequires: libselinux-devel >= 1.23 BuildRequires: libselinux-devel >= 1.23
BuildRequires: audit-libs-devel >= 1.1 BuildRequires: audit-libs-devel >= 1.1
@ -127,6 +136,9 @@ Requires: ghostscript
Requires: udev Requires: udev
Requires: acl Requires: acl
# Make sure we have some filters for converting to raster format.
Requires: ghostscript-cups
%package devel %package devel
Summary: Common Unix Printing System - development environment Summary: Common Unix Printing System - development environment
Group: Development/Libraries Group: Development/Libraries
@ -183,60 +195,92 @@ natively, without needing the lp/lpr commands.
%description lpd %description lpd
The Common UNIX Printing System provides a portable printing layer for 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. lpd emulation.
%description php %description php
The Common UNIX Printing System provides a portable printing layer for 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. module.
%prep %prep
%setup -q %setup -q
# Don't gzip man pages in the Makefile, let rpmbuild do it.
%patch1 -p1 -b .no-gzip-man %patch1 -p1 -b .no-gzip-man
# Use the system pam configuration.
%patch2 -p1 -b .system-auth %patch2 -p1 -b .system-auth
# Prevent multilib conflict in cups-config script.
%patch3 -p1 -b .multilib %patch3 -p1 -b .multilib
# Fix compilation of serial backend.
%patch4 -p1 -b .serial %patch4 -p1 -b .serial
# Ignore rpm save/new files in the banners directory.
%patch5 -p1 -b .banners %patch5 -p1 -b .banners
# Use compatibility fallback path for ServerBin.
%patch6 -p1 -b .serverbin-compat %patch6 -p1 -b .serverbin-compat
# Don't export SSLLIBS to cups-config.
%patch7 -p1 -b .no-export-ssllibs %patch7 -p1 -b .no-export-ssllibs
# Allow file-based usb device URIs.
%patch8 -p1 -b .direct-usb %patch8 -p1 -b .direct-usb
# Add --help option to lpr.
%patch9 -p1 -b .lpr-help %patch9 -p1 -b .lpr-help
# Fix compilation of peer credentials support.
%patch10 -p1 -b .peercred %patch10 -p1 -b .peercred
# Maintain a cupsd.pid file.
%patch11 -p1 -b .pid %patch11 -p1 -b .pid
# Fix orientation of page labels.
%patch12 -p1 -b .page-label %patch12 -p1 -b .page-label
# Fix implementation of com.redhat.PrinterSpooler D-Bus object.
%patch13 -p1 -b .eggcups %patch13 -p1 -b .eggcups
# More sophisticated implementation of cupsGetPassword than getpass.
%patch14 -p1 -b .getpass %patch14 -p1 -b .getpass
# Increase driverd timeout to 70s to accommodate foomatic.
%patch15 -p1 -b .driverd-timeout %patch15 -p1 -b .driverd-timeout
# Only enforce maximum PPD line length when in strict mode.
%patch16 -p1 -b .strict-ppd-line-length %patch16 -p1 -b .strict-ppd-line-length
# Re-open the log if it has been logrotated under us.
%patch17 -p1 -b .logrotate %patch17 -p1 -b .logrotate
# Support for errno==ENOSPACE-based USB paper-out reporting.
%patch18 -p1 -b .usb-paperout %patch18 -p1 -b .usb-paperout
# Simplify the DNSSD parts so they can build using the compat library.
%patch19 -p1 -b .build %patch19 -p1 -b .build
# Re-initialise the resolver on failure in httpAddrGetList().
%patch20 -p1 -b .res_init %patch20 -p1 -b .res_init
# Log extra debugging information if no filters are available.
%patch21 -p1 -b .filter-debug %patch21 -p1 -b .filter-debug
# Allow the usb backend to understand old-style URI formats.
%patch22 -p1 -b .uri-compat %patch22 -p1 -b .uri-compat
# Fix support for older CUPS servers in cupsGetDests.
%patch23 -p1 -b .cups-get-classes %patch23 -p1 -b .cups-get-classes
# Avahi support in the dnssd backend.
%patch24 -p1 -b .avahi %patch24 -p1 -b .avahi
# Fix temporary filename creation.
%patch25 -p1 -b .str3382 %patch25 -p1 -b .str3382
%patch26 -p1 -b .str3503 # Use mode 0755 for binaries and libraries where appropriate.
%patch27 -p1 -b .str3399
#%patch28 -p1 -b .gnutls-gcrypt-threads
%patch29 -p1 -b .0755 %patch29 -p1 -b .0755
# Re-initialise the resolver on failure in httpAddrLookup().
%patch30 -p1 -b .EAI_AGAIN %patch30 -p1 -b .EAI_AGAIN
%patch31 -p1 -b .str3505 # Use numeric addresses for interfaces unless HostNameLookups are
%patch32 -p1 -b .str3541 # turned on (bug #583054).
%patch31 -p1 -b .hostnamelookups
# Handle SNMP supply level quirks (bug #581825).
%patch33 -p1 -b .snmp-quirks %patch33 -p1 -b .snmp-quirks
%patch34 -p1 -b .hostnamelookups # Add an SNMP query for HP's device ID OID (STR #3552).
%patch35 -p1 -b .texttops-rotate-page %patch34 -p1 -b .hp-deviceid-oid
%patch36 -p1 -b .str3425p2 # 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 %if %lspp
# LSPP support.
%patch100 -p1 -b .lspp %patch100 -p1 -b .lspp
%endif %endif
# SECURITY PATCHES: # SECURITY PATCHES:
%patch200 -p1 -b .CVE-2010-0302
sed -i -e '1iMaxLogSize 0' conf/cupsd.conf.in 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 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 %{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 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 644 %{SOURCE6} $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/cups
install -c -m 755 %{SOURCE9} $RPM_BUILD_ROOT%{cups_serverbin}/backend/ncp install -c -m 755 %{SOURCE7} $RPM_BUILD_ROOT%{cups_serverbin}/backend/ncp
install -c -m 755 %{SOURCE10} $RPM_BUILD_ROOT%{_sysconfdir}/cron.daily/cups install -c -m 755 %{SOURCE8} $RPM_BUILD_ROOT%{_sysconfdir}/cron.daily/cups
install -c -m 755 %{SOURCE11} $RPM_BUILD_ROOT%{cups_serverbin}/filter/textonly install -c -m 755 %{SOURCE9} $RPM_BUILD_ROOT%{cups_serverbin}/filter/textonly
install -c -m 644 %{SOURCE12} $RPM_BUILD_ROOT%{_datadir}/cups/model/textonly.ppd install -c -m 644 %{SOURCE10} $RPM_BUILD_ROOT%{_datadir}/cups/model/textonly.ppd
# Ship pstopdf for LSPP systems to deal with malicious postscript # Ship pstopdf for LSPP systems to deal with malicious postscript
%if %lspp %if %lspp
@ -316,8 +360,8 @@ install -c -m 755 %{SOURCE4} $RPM_BUILD_ROOT%{cups_serverbin}/filter
%endif %endif
# Ship pstoraster (bug #69573). # Ship pstoraster (bug #69573).
install -c -m 755 %{SOURCE6} $RPM_BUILD_ROOT%{cups_serverbin}/filter install -c -m 755 %{SOURCE11} $RPM_BUILD_ROOT%{cups_serverbin}/filter
install -c -m 644 %{SOURCE7} $RPM_BUILD_ROOT%{_sysconfdir}/cups install -c -m 644 %{SOURCE12} $RPM_BUILD_ROOT%{_sysconfdir}/cups
# Ship a printers.conf file, and a client.conf file. That way, they get # Ship a printers.conf file, and a client.conf file. That way, they get
# their SELinux file contexts set correctly. # their SELinux file contexts set correctly.
@ -532,6 +576,20 @@ rm -rf $RPM_BUILD_ROOT
%{php_extdir}/phpcups.so %{php_extdir}/phpcups.so
%changelog %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 * 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, - Use upstream method of handling SNMP quirks in PPDs (STR #3551,
bug #581825). bug #581825).

View File

@ -1 +1,2 @@
e70b1c3f60143d7310c1d74c111a21ab cups-1.4.3-source.tar.bz2 e70b1c3f60143d7310c1d74c111a21ab cups-1.4.3-source.tar.bz2
8776403ad60fea9e85eab9c04d88560d cups-1.4.4-source.tar.bz2