- No longer need CVE-2009-3553, str3381, str3390, str3391, str3403,
    str3407, str3413, str3418, str3422, str3425, str3428, str3431, str3435,
    str3436, str3439, str3440, str3442, str3448, str3458, str3460,
    cups-sidechannel-intrs, negative-snmp-string-length,
    cups-media-empty-warning patches.
This commit is contained in:
Jiří Popelka 2010-03-31 13:11:15 +00:00
parent 199ad7fdd6
commit edc04bd8ed
32 changed files with 183 additions and 1850 deletions

View File

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

View File

@ -1,39 +0,0 @@
diff -up cups-1.4.2/scheduler/select.c.CVE-2009-3553 cups-1.4.2/scheduler/select.c
--- cups-1.4.2/scheduler/select.c.CVE-2009-3553 2009-07-15 00:07:52.000000000 +0100
+++ cups-1.4.2/scheduler/select.c 2009-11-19 12:30:39.672976150 +0000
@@ -454,7 +454,7 @@ cupsdDoSelect(long timeout) /* I - Time
if (fdptr->read_cb && event->filter == EVFILT_READ)
(*(fdptr->read_cb))(fdptr->data);
- if (fdptr->write_cb && event->filter == EVFILT_WRITE)
+ if (fdptr->use > 1 && fdptr->write_cb && event->filter == EVFILT_WRITE)
(*(fdptr->write_cb))(fdptr->data);
release_fd(fdptr);
@@ -499,7 +499,7 @@ cupsdDoSelect(long timeout) /* I - Time
if (fdptr->read_cb && (event->events & (EPOLLIN | EPOLLERR | EPOLLHUP)))
(*(fdptr->read_cb))(fdptr->data);
- if (fdptr->write_cb && (event->events & (EPOLLOUT | EPOLLERR | EPOLLHUP)))
+ if (fdptr->use > 1 && fdptr->write_cb && (event->events & (EPOLLOUT | EPOLLERR | EPOLLHUP)))
(*(fdptr->write_cb))(fdptr->data);
release_fd(fdptr);
@@ -590,7 +590,7 @@ cupsdDoSelect(long timeout) /* I - Time
if (fdptr->read_cb && (pfd->revents & (POLLIN | POLLERR | POLLHUP)))
(*(fdptr->read_cb))(fdptr->data);
- if (fdptr->write_cb && (pfd->revents & (POLLOUT | POLLERR | POLLHUP)))
+ if (fdptr->use > 1 && fdptr->write_cb && (pfd->revents & (POLLOUT | POLLERR | POLLHUP)))
(*(fdptr->write_cb))(fdptr->data);
release_fd(fdptr);
@@ -645,7 +645,7 @@ cupsdDoSelect(long timeout) /* I - Time
if (fdptr->read_cb && FD_ISSET(fdptr->fd, &cupsd_current_input))
(*(fdptr->read_cb))(fdptr->data);
- if (fdptr->write_cb && FD_ISSET(fdptr->fd, &cupsd_current_output))
+ if (fdptr->use > 1 && fdptr->write_cb && FD_ISSET(fdptr->fd, &cupsd_current_output))
(*(fdptr->write_cb))(fdptr->data);
release_fd(fdptr);

View File

@ -1,6 +1,6 @@
diff -up cups-1.4.2/scheduler/select.c.CVE-2010-0302 cups-1.4.2/scheduler/select.c
--- cups-1.4.2/scheduler/select.c.CVE-2010-0302 2010-03-05 10:37:49.990476887 +0000
+++ cups-1.4.2/scheduler/select.c 2010-03-05 10:38:01.803478081 +0000
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);
@ -11,12 +11,11 @@ diff -up cups-1.4.2/scheduler/select.c.CVE-2010-0302 cups-1.4.2/scheduler/select
(*(fdptr->write_cb))(fdptr->data);
release_fd(fdptr);
@@ -499,7 +500,9 @@ cupsdDoSelect(long timeout) /* I - Time
if (fdptr->read_cb && (event->events & (EPOLLIN | EPOLLERR | EPOLLHUP)))
@@ -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)))
+ if (fdptr->use > 1 && fdptr->write_cb &&
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);

View File

@ -1,7 +1,7 @@
diff -up cups-1.4.1/config.h.in.lspp cups-1.4.1/config.h.in
--- cups-1.4.1/config.h.in.lspp 2009-09-14 16:59:30.108873598 +0100
+++ cups-1.4.1/config.h.in 2009-09-14 16:59:30.122873526 +0100
@@ -619,6 +619,13 @@
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 @@
#undef HAVE_TCPD_H
@ -15,9 +15,9 @@ diff -up cups-1.4.1/config.h.in.lspp cups-1.4.1/config.h.in
#endif /* !_CUPS_CONFIG_H_ */
/*
diff -up /dev/null cups-1.4.1/config-scripts/cups-lspp.m4
--- /dev/null 2009-09-14 09:02:25.290577766 +0100
+++ cups-1.4.1/config-scripts/cups-lspp.m4 2009-09-14 16:59:30.124872629 +0100
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
@@ -0,0 +1,36 @@
+dnl
+dnl LSPP code for the Common UNIX Printing System (CUPS).
@ -55,9 +55,9 @@ diff -up /dev/null cups-1.4.1/config-scripts/cups-lspp.m4
+ ;;
+ esac
+fi
diff -up cups-1.4.1/configure.in.lspp cups-1.4.1/configure.in
--- cups-1.4.1/configure.in.lspp 2008-11-14 19:32:22.000000000 +0000
+++ cups-1.4.1/configure.in 2009-09-14 16:59:30.125879233 +0100
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
@@ -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.1/configure.in.lspp cups-1.4.1/configure.in
INSTALL_LANGUAGES=""
UNINSTALL_LANGUAGES=""
LANGFILES=""
diff -up cups-1.4.1/cups/cups.h.lspp cups-1.4.1/cups/cups.h
--- cups-1.4.1/cups/cups.h.lspp 2009-08-28 18:51:05.000000000 +0100
+++ cups-1.4.1/cups/cups.h 2009-09-14 16:59:30.127873074 +0100
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
@@ -15,6 +15,9 @@
* This file is subject to the Apple OS-Developed Software exception.
*/
@ -93,9 +93,9 @@ diff -up cups-1.4.1/cups/cups.h.lspp cups-1.4.1/cups/cups.h
/*
* Types and structures...
*/
diff -up cups-1.4.1/data/Makefile.lspp cups-1.4.1/data/Makefile
--- cups-1.4.1/data/Makefile.lspp 2008-11-12 19:30:57.000000000 +0000
+++ cups-1.4.1/data/Makefile 2009-09-14 16:59:30.129874067 +0100
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
@@ -25,7 +25,10 @@ BANNERS = \
secret \
standard \
@ -108,9 +108,9 @@ diff -up cups-1.4.1/data/Makefile.lspp cups-1.4.1/data/Makefile
CHARMAPS = \
euc-cn.txt \
diff -up /dev/null cups-1.4.1/data/mls
--- /dev/null 2009-09-14 09:02:25.290577766 +0100
+++ cups-1.4.1/data/mls 2009-09-14 16:59:30.131873095 +0100
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
@@ -0,0 +1,261 @@
+%!PS-Adobe-3.0
+%%BoundingBox: 0 0 612 792
@ -373,9 +373,9 @@ diff -up /dev/null cups-1.4.1/data/mls
+% End of "$Id: mls_template,v 1.1 2005/06/27 18:44:46 colmo Exp $".
+%
+%%EOF
diff -up /dev/null cups-1.4.1/data/selinux
--- /dev/null 2009-09-14 09:02:25.290577766 +0100
+++ cups-1.4.1/data/selinux 2009-09-14 16:59:30.133872489 +0100
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
@@ -0,0 +1,261 @@
+%!PS-Adobe-3.0
+%%BoundingBox: 0 0 612 792
@ -638,9 +638,9 @@ diff -up /dev/null cups-1.4.1/data/selinux
+% End of "$Id: mls_template,v 1.1 2005/06/27 18:44:46 colmo Exp $".
+%
+%%EOF
diff -up /dev/null cups-1.4.1/data/te
--- /dev/null 2009-09-14 09:02:25.290577766 +0100
+++ cups-1.4.1/data/te 2009-09-14 16:59:30.135873116 +0100
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
@@ -0,0 +1,261 @@
+%!PS-Adobe-3.0
+%%BoundingBox: 0 0 612 792
@ -903,9 +903,9 @@ diff -up /dev/null cups-1.4.1/data/te
+% End of "$Id: mls_template,v 1.1 2005/06/27 18:44:46 colmo Exp $".
+%
+%%EOF
diff -up cups-1.4.1/filter/common.c.lspp cups-1.4.1/filter/common.c
--- cups-1.4.1/filter/common.c.lspp 2007-07-11 22:46:42.000000000 +0100
+++ cups-1.4.1/filter/common.c 2009-09-14 16:59:30.137872500 +0100
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
@@ -30,6 +30,12 @@
* Include necessary headers...
*/
@ -1074,10 +1074,10 @@ diff -up cups-1.4.1/filter/common.c.lspp cups-1.4.1/filter/common.c
/*
diff -up cups-1.4.1/filter/pstops.c.lspp cups-1.4.1/filter/pstops.c
--- cups-1.4.1/filter/pstops.c.lspp 2009-09-14 16:59:29.803998275 +0100
+++ cups-1.4.1/filter/pstops.c 2009-09-14 16:59:30.141872862 +0100
@@ -3242,6 +3242,18 @@ write_label_prolog(pstops_doc_t *doc, /*
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, /*
{
const char *classification; /* CLASSIFICATION environment variable */
const char *ptr; /* Temporary string pointer */
@ -1096,7 +1096,7 @@ diff -up cups-1.4.1/filter/pstops.c.lspp cups-1.4.1/filter/pstops.c
/*
@@ -3264,6 +3276,124 @@ write_label_prolog(pstops_doc_t *doc, /*
@@ -3297,6 +3309,124 @@ write_label_prolog(pstops_doc_t *doc, /*
return;
}
@ -1221,7 +1221,7 @@ diff -up cups-1.4.1/filter/pstops.c.lspp cups-1.4.1/filter/pstops.c
/*
* Set the classification + page label string...
*/
@@ -3342,7 +3472,10 @@ write_label_prolog(pstops_doc_t *doc, /*
@@ -3375,7 +3505,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.1/filter/pstops.c.lspp cups-1.4.1/filter/pstops.c
/*
diff -up cups-1.4.1/Makedefs.in.lspp cups-1.4.1/Makedefs.in
--- cups-1.4.1/Makedefs.in.lspp 2009-09-14 16:59:30.024872775 +0100
+++ cups-1.4.1/Makedefs.in 2009-09-14 16:59:30.143872406 +0100
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
@@ -146,7 +146,7 @@ LIBCUPSORDER = @LIBCUPSORDER@
LIBCUPSIMAGEORDER = @LIBCUPSIMAGEORDER@
LINKCUPS = @LINKCUPS@ $(SSLLIBS) $(DNSSDLIBS)
@ -1253,9 +1253,9 @@ diff -up cups-1.4.1/Makedefs.in.lspp cups-1.4.1/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.1/scheduler/client.c.lspp cups-1.4.1/scheduler/client.c
--- cups-1.4.1/scheduler/client.c.lspp 2009-07-15 00:02:05.000000000 +0100
+++ cups-1.4.1/scheduler/client.c 2009-09-14 16:59:30.148872510 +0100
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
@@ -44,6 +44,7 @@
* valid_host() - Is the Host: field valid?
* write_file() - Send a file via HTTP.
@ -1476,9 +1476,9 @@ diff -up cups-1.4.1/scheduler/client.c.lspp cups-1.4.1/scheduler/client.c
/*
* 'pipe_command()' - Pipe the output of a command to the remote client.
*/
diff -up cups-1.4.1/scheduler/client.h.lspp cups-1.4.1/scheduler/client.h
--- cups-1.4.1/scheduler/client.h.lspp 2009-05-26 23:01:23.000000000 +0100
+++ cups-1.4.1/scheduler/client.h 2009-09-14 16:59:30.150872942 +0100
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
@@ -18,6 +18,13 @@
#endif /* HAVE_AUTHORIZATION_H */
@ -1514,9 +1514,9 @@ diff -up cups-1.4.1/scheduler/client.h.lspp cups-1.4.1/scheduler/client.h
/*
diff -up cups-1.4.1/scheduler/conf.c.lspp cups-1.4.1/scheduler/conf.c
--- cups-1.4.1/scheduler/conf.c.lspp 2009-09-14 16:59:29.837998036 +0100
+++ cups-1.4.1/scheduler/conf.c 2009-09-14 16:59:30.155872264 +0100
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
@@ -29,6 +29,7 @@
* read_configuration() - Read a configuration file.
* read_location() - Read a <Location path> definition.
@ -1626,9 +1626,9 @@ diff -up cups-1.4.1/scheduler/conf.c.lspp cups-1.4.1/scheduler/conf.c
/*
* 'read_policy()' - Read a <Policy name> definition.
diff -up cups-1.4.1/scheduler/conf.h.lspp cups-1.4.1/scheduler/conf.h
--- cups-1.4.1/scheduler/conf.h.lspp 2009-09-14 16:59:29.839997456 +0100
+++ cups-1.4.1/scheduler/conf.h 2009-09-14 16:59:30.157872484 +0100
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);
VAR int SSLOptions VALUE(CUPSD_SSL_NONE);
/* SSL/TLS options */
@ -1652,9 +1652,9 @@ diff -up cups-1.4.1/scheduler/conf.h.lspp cups-1.4.1/scheduler/conf.h
/*
* Prototypes...
diff -up cups-1.4.1/scheduler/ipp.c.lspp cups-1.4.1/scheduler/ipp.c
--- cups-1.4.1/scheduler/ipp.c.lspp 2009-09-14 16:59:29.974871379 +0100
+++ cups-1.4.1/scheduler/ipp.c 2009-09-14 16:59:30.168872218 +0100
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
@@ -41,6 +41,7 @@
* cancel_all_jobs() - Cancel all print jobs.
* cancel_job() - Cancel a print job.
@ -1698,7 +1698,7 @@ diff -up cups-1.4.1/scheduler/ipp.c.lspp cups-1.4.1/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);
@@ -1338,6 +1353,21 @@ add_job(cupsd_client_t *con, /* I - Cl
@@ -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 */
@ -1720,9 +1720,9 @@ diff -up cups-1.4.1/scheduler/ipp.c.lspp cups-1.4.1/scheduler/ipp.c
cupsdLogMessage(CUPSD_LOG_DEBUG2, "add_job(%p[%d], %p(%s), %p(%s/%s))",
@@ -1554,6 +1584,104 @@ add_job(cupsd_client_t *con, /* I - Cl
@@ -1550,6 +1580,104 @@ add_job(cupsd_client_t *con, /* I - Cl
ippAddString(con->request, IPP_TAG_JOB, IPP_TAG_NAME, "job-name", NULL,
title = "Untitled");
"Untitled");
+#ifdef WITH_LSPP
+ if (is_lspp_config())
@ -1825,7 +1825,7 @@ diff -up cups-1.4.1/scheduler/ipp.c.lspp cups-1.4.1/scheduler/ipp.c
if ((job = cupsdAddJob(priority, printer->name)) == NULL)
{
send_ipp_status(con, IPP_INTERNAL_ERROR,
@@ -1562,6 +1690,32 @@ add_job(cupsd_client_t *con, /* I - Cl
@@ -1558,6 +1686,32 @@ add_job(cupsd_client_t *con, /* I - Cl
return (NULL);
}
@ -1858,7 +1858,7 @@ diff -up cups-1.4.1/scheduler/ipp.c.lspp cups-1.4.1/scheduler/ipp.c
job->dtype = printer->type & (CUPS_PRINTER_CLASS | CUPS_PRINTER_IMPLICIT |
CUPS_PRINTER_REMOTE);
job->attrs = con->request;
@@ -1769,6 +1923,29 @@ add_job(cupsd_client_t *con, /* I - Cl
@@ -1763,6 +1917,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.1/scheduler/ipp.c.lspp cups-1.4.1/scheduler/ipp.c
job->job_sheets = attr;
@@ -1799,6 +1976,9 @@ add_job(cupsd_client_t *con, /* I - Cl
@@ -1793,6 +1970,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.1/scheduler/ipp.c.lspp cups-1.4.1/scheduler/ipp.c
}
else if (attr->num_values == 2 &&
strcmp(attr->values[0].string.text,
@@ -1817,6 +1997,9 @@ add_job(cupsd_client_t *con, /* I - Cl
@@ -1811,6 +1991,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.1/scheduler/ipp.c.lspp cups-1.4.1/scheduler/ipp.c
}
else if (strcmp(attr->values[0].string.text, Classification) &&
strcmp(attr->values[0].string.text, "none") &&
@@ -1837,6 +2020,9 @@ add_job(cupsd_client_t *con, /* I - Cl
@@ -1831,6 +2014,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.1/scheduler/ipp.c.lspp cups-1.4.1/scheduler/ipp.c
}
}
else if (strcmp(attr->values[0].string.text, Classification) &&
@@ -1877,8 +2063,52 @@ add_job(cupsd_client_t *con, /* I - Cl
@@ -1871,8 +2057,52 @@ add_job(cupsd_client_t *con, /* I - Cl
"job-sheets=\"%s\", "
"job-originating-user-name=\"%s\"",
Classification, job->username);
@ -2199,7 +2199,7 @@ diff -up cups-1.4.1/scheduler/ipp.c.lspp cups-1.4.1/scheduler/ipp.c
if (!strcmp(s, "printer-name"))
{
cupsFilePuts(out, job->dest);
@@ -6829,6 +7259,22 @@ get_job_attrs(cupsd_client_t *con, /* I
@@ -6844,6 +7274,22 @@ get_job_attrs(cupsd_client_t *con, /* I
return;
}
@ -2222,7 +2222,7 @@ diff -up cups-1.4.1/scheduler/ipp.c.lspp cups-1.4.1/scheduler/ipp.c
/*
* Copy attributes...
*/
@@ -7048,6 +7494,11 @@ get_jobs(cupsd_client_t *con, /* I - C
@@ -7074,6 +7520,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.1/scheduler/ipp.c.lspp cups-1.4.1/scheduler/ipp.c
if (count > 0)
ippAddSeparator(con->response);
@@ -11430,6 +11881,11 @@ validate_user(cupsd_job_t *job, /* I
@@ -11460,6 +11911,11 @@ validate_user(cupsd_job_t *job, /* I
strlcpy(username, get_username(con), userlen);
@ -2246,9 +2246,9 @@ diff -up cups-1.4.1/scheduler/ipp.c.lspp cups-1.4.1/scheduler/ipp.c
/*
* Check the username against the owner...
*/
diff -up cups-1.4.1/scheduler/job.c.lspp cups-1.4.1/scheduler/job.c
--- cups-1.4.1/scheduler/job.c.lspp 2009-09-14 16:59:30.058872907 +0100
+++ cups-1.4.1/scheduler/job.c 2009-09-14 17:00:42.616998003 +0100
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
@@ -66,6 +66,9 @@
* update_job_attrs() - Update the job-printer-* attributes.
*/
@ -2403,7 +2403,7 @@ diff -up cups-1.4.1/scheduler/job.c.lspp cups-1.4.1/scheduler/job.c
job->sheets = ippFindAttribute(job->attrs, "job-media-sheets-completed",
IPP_TAG_INTEGER);
job->job_sheets = ippFindAttribute(job->attrs, "job-sheets", IPP_TAG_NAME);
@@ -1975,6 +2069,14 @@ cupsdSaveJob(cupsd_job_t *job) /* I - J
@@ -2013,6 +2107,14 @@ cupsdSaveJob(cupsd_job_t *job) /* I - J
{
char filename[1024]; /* Job control filename */
cups_file_t *fp; /* Job file */
@ -2418,7 +2418,7 @@ diff -up cups-1.4.1/scheduler/job.c.lspp cups-1.4.1/scheduler/job.c
cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdSaveJob(job=%p(%d)): job->attrs=%p",
@@ -1993,6 +2095,76 @@ cupsdSaveJob(cupsd_job_t *job) /* I - J
@@ -2031,6 +2133,76 @@ cupsdSaveJob(cupsd_job_t *job) /* I - J
fchmod(cupsFileNumber(fp), 0600);
fchown(cupsFileNumber(fp), RunUser, Group);
@ -2495,7 +2495,7 @@ diff -up cups-1.4.1/scheduler/job.c.lspp cups-1.4.1/scheduler/job.c
job->attrs->state = IPP_IDLE;
if (ippWriteIO(fp, (ipp_iocb_t)cupsFileWrite, 1, NULL,
@@ -3138,6 +3310,18 @@ get_options(cupsd_job_t *job, /* I - Jo
@@ -3177,6 +3349,18 @@ get_options(cupsd_job_t *job, /* I - Jo
banner_page)
continue;
@ -2514,7 +2514,7 @@ diff -up cups-1.4.1/scheduler/job.c.lspp cups-1.4.1/scheduler/job.c
/*
* Otherwise add them to the list...
*/
@@ -3810,6 +3994,19 @@ static void
@@ -3849,6 +4033,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.1/scheduler/job.c.lspp cups-1.4.1/scheduler/job.c
cupsdLogMessage(CUPSD_LOG_DEBUG2, "start_job(job=%p(%d), printer=%p(%s))",
job, job->id, printer, printer->name);
@@ -3932,6 +4129,106 @@ start_job(cupsd_job_t *job, /* I -
@@ -3971,6 +4168,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.1/scheduler/job.c.lspp cups-1.4.1/scheduler/job.c
/*
* Now start the first file in the job...
*/
diff -up cups-1.4.1/scheduler/job.h.lspp cups-1.4.1/scheduler/job.h
--- cups-1.4.1/scheduler/job.h.lspp 2009-05-11 23:46:01.000000000 +0100
+++ cups-1.4.1/scheduler/job.h 2009-09-14 16:59:30.177872674 +0100
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
@@ -13,6 +13,13 @@
* file is missing or damaged, see the license at "http://www.cups.org/".
*/
@ -2669,9 +2669,9 @@ diff -up cups-1.4.1/scheduler/job.h.lspp cups-1.4.1/scheduler/job.h
};
typedef struct cupsd_joblog_s /**** Job log message ****/
diff -up cups-1.4.1/scheduler/main.c.lspp cups-1.4.1/scheduler/main.c
--- cups-1.4.1/scheduler/main.c.lspp 2009-09-14 16:59:29.925872130 +0100
+++ cups-1.4.1/scheduler/main.c 2009-09-14 16:59:30.180872667 +0100
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.
*/
@ -2701,7 +2701,7 @@ diff -up cups-1.4.1/scheduler/main.c.lspp cups-1.4.1/scheduler/main.c
#ifdef HAVE_GETEUID
@@ -462,6 +470,25 @@ main(int argc, /* I - Number of comm
@@ -465,6 +473,25 @@ main(int argc, /* I - Number of comm
#endif /* DEBUG */
}
@ -2727,7 +2727,7 @@ diff -up cups-1.4.1/scheduler/main.c.lspp cups-1.4.1/scheduler/main.c
/*
* Set the timezone info...
*/
@@ -1230,6 +1257,11 @@ main(int argc, /* I - Number of comm
@@ -1235,6 +1262,11 @@ main(int argc, /* I - Number of comm
cupsdStopSelect();
@ -2739,9 +2739,9 @@ diff -up cups-1.4.1/scheduler/main.c.lspp cups-1.4.1/scheduler/main.c
return (!stop_scheduler);
}
diff -up cups-1.4.1/scheduler/printers.c.lspp cups-1.4.1/scheduler/printers.c
--- cups-1.4.1/scheduler/printers.c.lspp 2009-09-14 16:59:29.866997809 +0100
+++ cups-1.4.1/scheduler/printers.c 2009-09-14 16:59:30.185871787 +0100
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 @@
* write_xml_string() - Write a string with XML escaping.
*/
@ -2762,7 +2762,7 @@ diff -up cups-1.4.1/scheduler/printers.c.lspp cups-1.4.1/scheduler/printers.c
/*
* 'cupsdAddPrinter()' - Add a printer to the system.
@@ -2166,6 +2172,13 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p)
@@ -2173,6 +2179,13 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p)
"username",
"password"
};
@ -2776,7 +2776,7 @@ diff -up cups-1.4.1/scheduler/printers.c.lspp cups-1.4.1/scheduler/printers.c
DEBUG_printf(("cupsdSetPrinterAttrs: entering name = %s, type = %x\n", p->name,
@@ -2296,6 +2309,45 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p)
@@ -2303,6 +2316,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.1/scheduler/printers.c.lspp cups-1.4.1/scheduler/printers.c
}
p->raw = 0;
@@ -4827,7 +4876,6 @@ write_irix_state(cupsd_printer_t *p) /*
@@ -4834,7 +4886,6 @@ write_irix_state(cupsd_printer_t *p) /*
}
#endif /* __sgi */

View File

@ -1,132 +0,0 @@
diff -up cups-1.4.2/backend/backend-private.h.media-empty-warning cups-1.4.2/backend/backend-private.h
--- cups-1.4.2/backend/backend-private.h.media-empty-warning 2009-08-31 19:45:43.000000000 +0100
+++ cups-1.4.2/backend/backend-private.h 2009-12-08 11:22:27.859488572 +0000
@@ -280,7 +280,8 @@ extern int backendNetworkSideCB(int pri
int snmp_fd, http_addr_t *addr,
int use_bc);
extern ssize_t backendRunLoop(int print_fd, int device_fd, int snmp_fd,
- http_addr_t *addr, int use_bc,
+ http_addr_t *addr, int use_bc,
+ int update_state,
int (*side_cb)(int print_fd,
int device_fd,
int snmp_fd,
diff -up cups-1.4.2/backend/ipp.c.media-empty-warning cups-1.4.2/backend/ipp.c
--- cups-1.4.2/backend/ipp.c.media-empty-warning 2009-12-08 11:22:12.388488617 +0000
+++ cups-1.4.2/backend/ipp.c 2009-12-08 11:22:27.860488582 +0000
@@ -498,7 +498,7 @@ main(int argc, /* I - Number of comm
_cupsLangPuts(stderr, _("INFO: Copying print data...\n"));
- tbytes = backendRunLoop(-1, fd, snmp_fd, &(addrlist->addr), 0,
+ tbytes = backendRunLoop(-1, fd, snmp_fd, &(addrlist->addr), 0, 0,
backendNetworkSideCB);
if (snmp_fd >= 0)
diff -up cups-1.4.2/backend/lpd.c.media-empty-warning cups-1.4.2/backend/lpd.c
--- cups-1.4.2/backend/lpd.c.media-empty-warning 2009-06-26 19:26:36.000000000 +0100
+++ cups-1.4.2/backend/lpd.c 2009-12-08 11:22:27.861488697 +0000
@@ -447,7 +447,8 @@ main(int argc, /* I - Number of comm
_cupsLangPuts(stderr, _("INFO: Copying print data...\n"));
- backendRunLoop(-1, fd, snmp_fd, &(addrlist->addr), 0, backendNetworkSideCB);
+ backendRunLoop(-1, fd, snmp_fd, &(addrlist->addr), 0, 0,
+ backendNetworkSideCB);
if (snmp_fd >= 0)
_cupsSNMPClose(snmp_fd);
diff -up cups-1.4.2/backend/parallel.c.media-empty-warning cups-1.4.2/backend/parallel.c
--- cups-1.4.2/backend/parallel.c.media-empty-warning 2009-08-31 19:45:43.000000000 +0100
+++ cups-1.4.2/backend/parallel.c 2009-12-08 11:22:27.862488185 +0000
@@ -284,7 +284,7 @@ main(int argc, /* I - Number of comm
lseek(print_fd, 0, SEEK_SET);
}
- tbytes = backendRunLoop(print_fd, device_fd, -1, NULL, use_bc, side_cb);
+ tbytes = backendRunLoop(print_fd, device_fd, -1, NULL, use_bc, 1, side_cb);
if (print_fd != 0 && tbytes >= 0)
_cupsLangPrintf(stderr,
diff -up cups-1.4.2/backend/runloop.c.media-empty-warning cups-1.4.2/backend/runloop.c
--- cups-1.4.2/backend/runloop.c.media-empty-warning 2009-08-31 19:45:43.000000000 +0100
+++ cups-1.4.2/backend/runloop.c 2009-12-08 11:22:27.862488185 +0000
@@ -147,6 +147,7 @@ backendRunLoop(
int snmp_fd, /* I - SNMP socket or -1 if none */
http_addr_t *addr, /* I - Address of device */
int use_bc, /* I - Use back-channel? */
+ int update_state, /* I - Update printer-state-reasons? */
int (*side_cb)(int, int, int, http_addr_t *, int))
/* I - Side-channel callback */
{
@@ -245,7 +246,7 @@ backendRunLoop(
* Pause printing to clear any pending errors...
*/
- if (errno == ENXIO && offline != 1)
+ if (errno == ENXIO && offline != 1 && update_state)
{
fputs("STATE: +offline-report\n", stderr);
_cupsLangPuts(stderr, _("INFO: Printer is currently offline.\n"));
@@ -351,7 +352,7 @@ backendRunLoop(
if (errno == ENOSPC)
{
- if (paperout != 1)
+ if (paperout != 1 && update_state)
{
fputs("STATE: +media-empty-warning\n", stderr);
_cupsLangPuts(stderr, _("ERROR: Out of paper!\n"));
@@ -360,7 +361,7 @@ backendRunLoop(
}
else if (errno == ENXIO)
{
- if (offline != 1)
+ if (offline != 1 && update_state)
{
fputs("STATE: +offline-report\n", stderr);
_cupsLangPuts(stderr, _("INFO: Printer is currently off-line.\n"));
@@ -376,13 +377,13 @@ backendRunLoop(
}
else
{
- if (paperout)
+ if (paperout && update_state)
{
fputs("STATE: -media-empty-warning\n", stderr);
paperout = 0;
}
- if (offline)
+ if (offline && update_state)
{
fputs("STATE: -offline-report\n", stderr);
_cupsLangPuts(stderr, _("INFO: Printer is now online.\n"));
diff -up cups-1.4.2/backend/socket.c.media-empty-warning cups-1.4.2/backend/socket.c
--- cups-1.4.2/backend/socket.c.media-empty-warning 2009-06-12 05:02:45.000000000 +0100
+++ cups-1.4.2/backend/socket.c 2009-12-08 11:22:27.863488075 +0000
@@ -393,7 +393,7 @@ main(int argc, /* I - Number of comm
lseek(print_fd, 0, SEEK_SET);
}
- tbytes = backendRunLoop(print_fd, device_fd, snmp_fd, &(addr->addr), 1,
+ tbytes = backendRunLoop(print_fd, device_fd, snmp_fd, &(addr->addr), 1, 0,
backendNetworkSideCB);
if (print_fd != 0 && tbytes >= 0)
diff -up cups-1.4.2/backend/usb-unix.c.media-empty-warning cups-1.4.2/backend/usb-unix.c
--- cups-1.4.2/backend/usb-unix.c.media-empty-warning 2009-12-08 11:22:12.445487428 +0000
+++ cups-1.4.2/backend/usb-unix.c 2009-12-08 11:22:27.864488180 +0000
@@ -218,10 +218,10 @@ print_device(const char *uri, /* I - De
* select() or poll(), so we can't support the sidechannel either...
*/
- tbytes = backendRunLoop(print_fd, device_fd, -1, NULL, use_bc, NULL);
+ tbytes = backendRunLoop(print_fd, device_fd, -1, NULL, use_bc, 1, NULL);
#else
- tbytes = backendRunLoop(print_fd, device_fd, -1, NULL, use_bc, side_cb);
+ tbytes = backendRunLoop(print_fd, device_fd, -1, NULL, use_bc, 1, side_cb);
#endif /* __sun */
if (print_fd != 0 && tbytes >= 0)

View File

@ -1,31 +0,0 @@
diff -up cups-1.4.2/backend/network.c.negative-snmp-string-length cups-1.4.2/backend/network.c
--- cups-1.4.2/backend/network.c.negative-snmp-string-length 2009-08-31 19:45:43.000000000 +0100
+++ cups-1.4.2/backend/network.c 2009-12-08 11:14:45.010363459 +0000
@@ -170,9 +170,13 @@ backendNetworkSideCB(
case CUPS_ASN1_BIT_STRING :
case CUPS_ASN1_OCTET_STRING :
- i = (int)(sizeof(data) - (dataptr - data));
- if (packet.object_value.string.num_bytes < i)
+ if (packet.object_value.string.num_bytes < 0)
+ i = 0;
+ else if (packet.object_value.string.num_bytes <
+ (sizeof(data) - (dataptr - data)))
i = packet.object_value.string.num_bytes;
+ else
+ i = (int)(sizeof(data) - (dataptr - data));
memcpy(dataptr, packet.object_value.string.bytes, i);
diff -up cups-1.4.2/backend/snmp-supplies.c.negative-snmp-string-length cups-1.4.2/backend/snmp-supplies.c
--- cups-1.4.2/backend/snmp-supplies.c.negative-snmp-string-length 2009-08-31 17:34:06.000000000 +0100
+++ cups-1.4.2/backend/snmp-supplies.c 2009-12-08 11:15:05.505362685 +0000
@@ -232,6 +232,8 @@ backendSNMPSupplies(
if (packet.object_value.string.num_bytes == 2)
new_state = (packet.object_value.string.bytes[0] << 8) |
packet.object_value.string.bytes[1];
+ else if (packet.object_value.string.num_bytes == 1)
+ new_state = (packet.object_value.string.bytes[0] << 8);
else
new_state = 0;

View File

@ -1,68 +0,0 @@
diff -up cups-1.4.2/cups/sidechannel.c.sidechannel-intrs cups-1.4.2/cups/sidechannel.c
--- cups-1.4.2/cups/sidechannel.c.sidechannel-intrs 2009-09-23 00:20:35.000000000 +0100
+++ cups-1.4.2/cups/sidechannel.c 2009-12-08 11:08:15.297539377 +0000
@@ -116,6 +116,7 @@ cupsSideChannelRead(
char buffer[16388]; /* Message buffer */
int bytes; /* Bytes read */
int templen; /* Data length from message */
+ int nfds; /* Number of file descriptors */
#ifdef HAVE_POLL
struct pollfd pfd; /* Poll structure for poll() */
#else /* select() */
@@ -143,39 +144,31 @@ cupsSideChannelRead(
pfd.fd = CUPS_SC_FD;
pfd.events = POLLIN;
- if (timeout < 0.0)
- {
- if (poll(&pfd, 1, -1) < 1)
- return (-1);
- }
- else if (poll(&pfd, 1, (long)(timeout * 1000)) < 1)
- return (-1);
+ while ((nfds = poll(&pfd, 1,
+ timeout < 0.0 ? -1 : (long)(timeout * 1000))) < 0 &&
+ (errno == EINTR || errno == EAGAIN))
+ ;
#else /* select() */
FD_ZERO(&input_set);
FD_SET(CUPS_SC_FD, &input_set);
- if (timeout < 0.0)
- {
- if (select(CUPS_SC_FD + 1, &input_set, NULL, NULL, NULL) < 1)
- {
- DEBUG_printf(("1cupsSideChannelRead: Select error: %s", strerror(errno)));
- return (-1);
- }
- }
- else
- {
- stimeout.tv_sec = (int)timeout;
- stimeout.tv_usec = (int)(timeout * 1000000) % 1000000;
+ stimeout.tv_sec = (int)timeout;
+ stimeout.tv_usec = (int)(timeout * 1000000) % 1000000;
+
+ while ((nfds = select(CUPS_SC_FD + 1, &input_set, NULL, NULL,
+ timeout < 0.0 ? NULL : &stimeout)) < 0 &&
+ (errno == EINTR || errno == EAGAIN))
+ ;
- if (select(CUPS_SC_FD + 1, &input_set, NULL, NULL, &stimeout) < 1)
- {
- DEBUG_puts("1cupsSideChannelRead: Select timeout");
- return (-1);
- }
- }
#endif /* HAVE_POLL */
+ if (nfds < 1)
+ {
+ *status = nfds==0 ? CUPS_SC_STATUS_TIMEOUT : CUPS_SC_STATUS_IO_ERROR;
+ return (-1);
+ }
+
/*
* Read a side-channel message for the format:
*

View File

@ -1,12 +0,0 @@
diff -up cups-1.4.1/cups/dest.c.str3285 cups-1.4.1/cups/dest.c
--- cups-1.4.1/cups/dest.c.str3285 2009-10-27 12:50:04.560012076 +0000
+++ cups-1.4.1/cups/dest.c 2009-10-27 12:50:23.814012173 +0000
@@ -549,7 +549,7 @@ cupsGetNamedDest(http_t *http, /* I
if (!cups_get_sdests(http, op, name, 0, &dest))
{
- if (op == CUPS_GET_DEFAULT)
+ if (op == CUPS_GET_DEFAULT || (name && !set_as_default))
return (NULL);
/*

View File

@ -1,208 +0,0 @@
diff -up cups-1.4.2/CHANGES.txt.str3381 cups-1.4.2/CHANGES.txt
--- cups-1.4.2/CHANGES.txt.str3381 2009-11-09 23:01:17.000000000 +0000
+++ cups-1.4.2/CHANGES.txt 2009-11-16 10:55:21.518666538 +0000
@@ -1,6 +1,11 @@
-CHANGES.txt - 2009-11-09
+CHANGES.txt - 2009-11-13
------------------------
+CHANGES IN CUPS V1.4.3
+
+ - Fixed a GNU TLS error handling bug (STR #3381)
+
+
CHANGES IN CUPS V1.4.2
- SECURITY: The CUPS web interface was vulnerable to several XSS and
diff -up cups-1.4.2/cups/http.c.str3381 cups-1.4.2/cups/http.c
--- cups-1.4.2/cups/http.c.str3381 2009-07-01 16:23:28.000000000 +0100
+++ cups-1.4.2/cups/http.c 2009-11-16 10:55:21.520666380 +0000
@@ -26,7 +26,6 @@
* httpClearCookie() - Clear the cookie value(s).
* httpClearFields() - Clear HTTP request fields.
* httpClose() - Close an HTTP connection...
- * httpConnect() - Connect to a HTTP server.
* httpConnectEncrypt() - Connect to a HTTP server using encryption.
* _httpCreate() - Create an unconnected HTTP connection.
* httpDelete() - Send a DELETE request to the server.
@@ -721,7 +720,7 @@ httpGetField(http_t *http, /* I -
{
if (!http || field <= HTTP_FIELD_UNKNOWN || field >= HTTP_FIELD_MAX)
return (NULL);
- else if (field == HTTP_FIELD_AUTHORIZATION &&
+ else if (field == HTTP_FIELD_AUTHORIZATION &&
http->field_authorization)
{
/*
@@ -1137,7 +1136,7 @@ httpGets(char *line, /* I - Line to
http->activity = time(NULL);
*lineptr = '\0';
-
+
DEBUG_printf(("3httpGets: Returning \"%s\"", line));
return (line);
@@ -2283,7 +2282,7 @@ httpWait(http_t *http, /* I - Connecti
*
* @deprecated@
*/
-
+
int /* O - Number of bytes written */
httpWrite(http_t *http, /* I - Connection to server */
const char *buffer, /* I - Buffer for data */
@@ -2298,7 +2297,7 @@ httpWrite(http_t *http, /* I - Conn
*
* @since CUPS 1.2/Mac OS X 10.5@
*/
-
+
ssize_t /* O - Number of bytes written */
httpWrite2(http_t *http, /* I - Connection to server */
const char *buffer, /* I - Buffer for data */
@@ -2456,7 +2455,7 @@ _httpWriteCDSA(
else
{
*dataLength = 0;
-
+
if (errno == EAGAIN)
result = errSSLWouldBlock;
else
@@ -2517,7 +2516,7 @@ http_bio_ctrl(BIO *h, /* I - BIO data
}
else
return (0);
-
+
case BIO_CTRL_DUP :
case BIO_CTRL_FLUSH :
return (1);
@@ -2719,7 +2718,36 @@ http_read_ssl(http_t *http, /* I - Conn
return (SSL_read((SSL *)(http->tls), buf, len));
# elif defined(HAVE_GNUTLS)
- return (gnutls_record_recv(((http_tls_t *)(http->tls))->session, buf, len));
+ ssize_t result; /* Return value */
+
+
+ result = gnutls_record_recv(((http_tls_t *)(http->tls))->session, buf, len);
+
+ if (result < 0 && !errno)
+ {
+ /*
+ * Convert GNU TLS error to errno value...
+ */
+
+ switch (result)
+ {
+ case GNUTLS_E_INTERRUPTED :
+ errno = EINTR;
+ break;
+
+ case GNUTLS_E_AGAIN :
+ errno = EAGAIN;
+ break;
+
+ default :
+ errno = EPIPE;
+ break;
+ }
+
+ result = -1;
+ }
+
+ return ((int)result);
# elif defined(HAVE_CDSASSL)
int result; /* Return value */
@@ -2857,7 +2885,7 @@ http_send(http_t *http, /* I - Con
DEBUG_printf(("9http_send: %s: %s", http_fields[i],
httpGetField(http, i)));
- if (httpPrintf(http, "%s: %s\r\n", http_fields[i],
+ if (httpPrintf(http, "%s: %s\r\n", http_fields[i],
httpGetField(http, i)) < 1)
{
http->status = HTTP_ERROR;
@@ -2896,15 +2924,15 @@ http_send(http_t *http, /* I - Con
* The Kerberos and AuthRef authentication strings can only be used once...
*/
- if (http->field_authorization && http->authstring &&
- (!strncmp(http->authstring, "Negotiate", 9) ||
+ if (http->field_authorization && http->authstring &&
+ (!strncmp(http->authstring, "Negotiate", 9) ||
!strncmp(http->authstring, "AuthRef", 7)))
{
http->_authstring[0] = '\0';
if (http->authstring != http->_authstring)
free(http->authstring);
-
+
http->authstring = http->_authstring;
}
@@ -3220,7 +3248,7 @@ http_upgrade(http_t *http) /* I - Conne
/*
* 'http_write()' - Write a buffer to a HTTP connection.
*/
-
+
static int /* O - Number of bytes written */
http_write(http_t *http, /* I - Connection to server */
const char *buffer, /* I - Buffer for data */
@@ -3335,7 +3363,36 @@ http_write_ssl(http_t *http, /* I -
return (SSL_write((SSL *)(http->tls), buf, len));
# elif defined(HAVE_GNUTLS)
- return (gnutls_record_send(((http_tls_t *)(http->tls))->session, buf, len));
+ ssize_t result; /* Return value */
+
+ result = gnutls_record_send(((http_tls_t *)(http->tls))->session, buf, len);
+
+ if (result < 0 && !errno)
+ {
+ /*
+ * Convert GNU TLS error to errno value...
+ */
+
+ switch (result)
+ {
+ case GNUTLS_E_INTERRUPTED :
+ errno = EINTR;
+ break;
+
+ case GNUTLS_E_AGAIN :
+ errno = EAGAIN;
+ break;
+
+ default :
+ errno = EPIPE;
+ break;
+ }
+
+ result = -1;
+ }
+
+ return ((int)result);
+
# elif defined(HAVE_CDSASSL)
int result; /* Return value */
OSStatus error; /* Error info */
@@ -3358,11 +3415,11 @@ http_write_ssl(http_t *http, /* I -
else
{
result = -1;
- errno = EINTR;
+ errno = EINTR;
}
break;
default :
- errno = EPIPE;
+ errno = EPIPE;
result = -1;
break;
}

View File

@ -1,6 +1,6 @@
diff -up cups-1.4.1/cups/tempfile.c.str3382 cups-1.4.1/cups/tempfile.c
--- cups-1.4.1/cups/tempfile.c.str3382 2008-12-10 06:03:11.000000000 +0100
+++ cups-1.4.1/cups/tempfile.c 2009-10-20 15:08:39.000000000 +0200
diff -up cups-1.4.3/cups/tempfile.c.str3382 cups-1.4.3/cups/tempfile.c
--- cups-1.4.3/cups/tempfile.c.str3382 2010-01-18 19:47:12.000000000 +0100
+++ cups-1.4.3/cups/tempfile.c 2010-03-31 13:26:52.000000000 +0200
@@ -35,6 +35,7 @@
# include <io.h>
#else
@ -33,8 +33,8 @@ diff -up cups-1.4.1/cups/tempfile.c.str3382 cups-1.4.1/cups/tempfile.c
- * Format a string using the hex time values...
- */
-
- snprintf(filename, len - 1, "%s/%08lx%05lx", tmpdir,
- (unsigned long)curtime.tv_sec, (unsigned long)curtime.tv_usec);
- snprintf(filename, len - 1, "%s/%05x%08x", tmpdir, (unsigned)getpid(),
- (unsigned)(curtime.tv_sec + curtime.tv_usec + tries));
-#endif /* WIN32 */
/*

View File

@ -1,15 +0,0 @@
diff -up cups-1.4.1/cgi-bin/admin.c.str3390 cups-1.4.1/cgi-bin/admin.c
--- cups-1.4.1/cgi-bin/admin.c.str3390 2009-08-29 08:05:14.000000000 +0200
+++ cups-1.4.1/cgi-bin/admin.c 2009-10-27 14:44:53.000000000 +0100
@@ -1044,6 +1044,11 @@ do_am_printer(http_t *http, /* I - HTTP
if ((attr = ippFindAttribute(oldinfo, "printer-location",
IPP_TAG_TEXT)) != NULL)
cgiSetVariable("PRINTER_LOCATION", attr->values[0].string.text);
+
+ if ((attr = ippFindAttribute(oldinfo, "printer-is-shared",
+ IPP_TAG_BOOLEAN)) != NULL)
+ cgiSetVariable("PRINTER_IS_SHARED",
+ attr->values[0].boolean ? "1" : "0");
}
cgiCopyTemplateLang("modify-printer.tmpl");

View File

@ -1,196 +0,0 @@
diff -up cups-1.4.1/templates/add-printer.tmpl.str3391 cups-1.4.1/templates/add-printer.tmpl
--- cups-1.4.1/templates/add-printer.tmpl.str3391 2009-06-18 19:23:21.000000000 +0200
+++ cups-1.4.1/templates/add-printer.tmpl 2009-10-27 15:08:45.000000000 +0100
@@ -4,6 +4,10 @@
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
diff -up cups-1.4.1/templates/de/add-printer.tmpl.str3391 cups-1.4.1/templates/de/add-printer.tmpl
--- cups-1.4.1/templates/de/add-printer.tmpl.str3391 2009-06-18 19:23:21.000000000 +0200
+++ cups-1.4.1/templates/de/add-printer.tmpl 2009-10-27 15:08:56.000000000 +0100
@@ -4,6 +4,10 @@
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
diff -up cups-1.4.1/templates/de/modify-printer.tmpl.str3391 cups-1.4.1/templates/de/modify-printer.tmpl
--- cups-1.4.1/templates/de/modify-printer.tmpl.str3391 2009-06-18 19:23:21.000000000 +0200
+++ cups-1.4.1/templates/de/modify-printer.tmpl 2009-10-27 15:10:28.000000000 +0100
@@ -4,6 +4,10 @@
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
<TABLE>
diff -up cups-1.4.1/templates/es/add-printer.tmpl.str3391 cups-1.4.1/templates/es/add-printer.tmpl
--- cups-1.4.1/templates/es/add-printer.tmpl.str3391 2009-06-18 19:23:21.000000000 +0200
+++ cups-1.4.1/templates/es/add-printer.tmpl 2009-10-27 15:09:02.000000000 +0100
@@ -4,6 +4,10 @@
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
diff -up cups-1.4.1/templates/es/modify-printer.tmpl.str3391 cups-1.4.1/templates/es/modify-printer.tmpl
--- cups-1.4.1/templates/es/modify-printer.tmpl.str3391 2009-06-18 19:23:21.000000000 +0200
+++ cups-1.4.1/templates/es/modify-printer.tmpl 2009-10-27 15:10:32.000000000 +0100
@@ -4,6 +4,10 @@
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
<TABLE>
diff -up cups-1.4.1/templates/eu/add-printer.tmpl.str3391 cups-1.4.1/templates/eu/add-printer.tmpl
--- cups-1.4.1/templates/eu/add-printer.tmpl.str3391 2009-07-07 18:52:34.000000000 +0200
+++ cups-1.4.1/templates/eu/add-printer.tmpl 2009-10-27 15:09:08.000000000 +0100
@@ -4,6 +4,10 @@
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
diff -up cups-1.4.1/templates/eu/modify-printer.tmpl.str3391 cups-1.4.1/templates/eu/modify-printer.tmpl
--- cups-1.4.1/templates/eu/modify-printer.tmpl.str3391 2009-07-07 18:52:34.000000000 +0200
+++ cups-1.4.1/templates/eu/modify-printer.tmpl 2009-10-27 15:10:37.000000000 +0100
@@ -4,6 +4,10 @@
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
<TABLE>
diff -up cups-1.4.1/templates/ja/add-printer.tmpl.str3391 cups-1.4.1/templates/ja/add-printer.tmpl
--- cups-1.4.1/templates/ja/add-printer.tmpl.str3391 2009-06-18 19:23:21.000000000 +0200
+++ cups-1.4.1/templates/ja/add-printer.tmpl 2009-10-27 15:09:15.000000000 +0100
@@ -4,6 +4,10 @@
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
diff -up cups-1.4.1/templates/ja/modify-printer.tmpl.str3391 cups-1.4.1/templates/ja/modify-printer.tmpl
--- cups-1.4.1/templates/ja/modify-printer.tmpl.str3391 2009-06-18 19:23:21.000000000 +0200
+++ cups-1.4.1/templates/ja/modify-printer.tmpl 2009-10-27 15:10:40.000000000 +0100
@@ -4,6 +4,10 @@
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
<TABLE>
diff -up cups-1.4.1/templates/modify-printer.tmpl.str3391 cups-1.4.1/templates/modify-printer.tmpl
--- cups-1.4.1/templates/modify-printer.tmpl.str3391 2009-06-18 19:23:21.000000000 +0200
+++ cups-1.4.1/templates/modify-printer.tmpl 2009-10-27 15:10:23.000000000 +0100
@@ -4,6 +4,10 @@
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
<TABLE>
diff -up cups-1.4.1/templates/pl/add-printer.tmpl.str3391 cups-1.4.1/templates/pl/add-printer.tmpl
--- cups-1.4.1/templates/pl/add-printer.tmpl.str3391 2009-06-18 19:23:21.000000000 +0200
+++ cups-1.4.1/templates/pl/add-printer.tmpl 2009-10-27 15:09:20.000000000 +0100
@@ -4,6 +4,10 @@
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
diff -up cups-1.4.1/templates/pl/modify-printer.tmpl.str3391 cups-1.4.1/templates/pl/modify-printer.tmpl
--- cups-1.4.1/templates/pl/modify-printer.tmpl.str3391 2009-06-18 19:23:21.000000000 +0200
+++ cups-1.4.1/templates/pl/modify-printer.tmpl 2009-10-27 15:10:44.000000000 +0100
@@ -4,6 +4,10 @@
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
<TABLE>
diff -up cups-1.4.1/templates/ru/add-printer.tmpl.str3391 cups-1.4.1/templates/ru/add-printer.tmpl
--- cups-1.4.1/templates/ru/add-printer.tmpl.str3391 2009-06-18 19:23:21.000000000 +0200
+++ cups-1.4.1/templates/ru/add-printer.tmpl 2009-10-27 15:09:24.000000000 +0100
@@ -4,6 +4,10 @@
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
diff -up cups-1.4.1/templates/ru/modify-printer.tmpl.str3391 cups-1.4.1/templates/ru/modify-printer.tmpl
--- cups-1.4.1/templates/ru/modify-printer.tmpl.str3391 2009-06-18 19:23:21.000000000 +0200
+++ cups-1.4.1/templates/ru/modify-printer.tmpl 2009-10-27 15:10:48.000000000 +0100
@@ -4,6 +4,10 @@
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
<TABLE>

View File

@ -1,27 +1,4 @@
diff -up cups-1.4.2/CHANGES-1.4.txt.str3399 cups-1.4.2/CHANGES-1.4.txt
diff -up cups-1.4.2/scheduler/process.c.str3399 cups-1.4.2/scheduler/process.c
--- cups-1.4.2/scheduler/process.c.str3399 2009-05-16 04:04:48.000000000 +0100
+++ cups-1.4.2/scheduler/process.c 2009-11-16 17:15:26.104542409 +0000
@@ -505,6 +505,7 @@ cupsdStartProcess(
#ifdef HAVE_SIGSET
sigset(SIGTERM, SIG_DFL);
sigset(SIGCHLD, SIG_DFL);
+ sigset(SIGPIPE, SIG_DFL);
#elif defined(HAVE_SIGACTION)
memset(&action, 0, sizeof(action));
@@ -513,9 +514,11 @@ cupsdStartProcess(
sigaction(SIGTERM, &action, NULL);
sigaction(SIGCHLD, &action, NULL);
+ sigaction(SIGPIPE, &action, NULL);
#else
signal(SIGTERM, SIG_DFL);
signal(SIGCHLD, SIG_DFL);
+ signal(SIGPIPE, SIG_DFL);
#endif /* HAVE_SIGSET */
cupsdReleaseSignals();
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)

View File

@ -1,84 +0,0 @@
diff -up cups-1.4.2/templates/admin.tmpl.str3403 cups-1.4.2/templates/admin.tmpl
--- cups-1.4.2/templates/admin.tmpl.str3403 2008-09-26 16:52:03.000000000 +0100
+++ cups-1.4.2/templates/admin.tmpl 2009-11-16 17:21:56.108541688 +0000
@@ -20,7 +20,7 @@
<H2 CLASS="title">Jobs</H2>
<P>
-<FORM ACTION="/jobs/" METHDO="GET"><INPUT TYPE="SUBMIT" VALUE="Manage Jobs"></FORM>
+<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Manage Jobs"></FORM>
</P>
</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
diff -up cups-1.4.2/templates/de/admin.tmpl.str3403 cups-1.4.2/templates/de/admin.tmpl
--- cups-1.4.2/templates/de/admin.tmpl.str3403 2009-04-03 16:55:28.000000000 +0100
+++ cups-1.4.2/templates/de/admin.tmpl 2009-11-16 17:21:56.109542590 +0000
@@ -20,7 +20,7 @@
<H2 CLASS="title">Druckauftr&auml;ge</H2>
<P>
-<FORM ACTION="/jobs/" METHDO="GET"><INPUT TYPE="SUBMIT" VALUE="Auftr&auml;ge verwalten"></FORM>
+<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Auftr&auml;ge verwalten"></FORM>
</P>
</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
diff -up cups-1.4.2/templates/es/admin.tmpl.str3403 cups-1.4.2/templates/es/admin.tmpl
--- cups-1.4.2/templates/es/admin.tmpl.str3403 2009-01-10 00:26:04.000000000 +0000
+++ cups-1.4.2/templates/es/admin.tmpl 2009-11-16 17:21:56.120542504 +0000
@@ -20,7 +20,7 @@
<H2 CLASS="title">Trabajos</H2>
<P>
-<FORM ACTION="/jobs/" METHDO="GET"><INPUT TYPE="SUBMIT" VALUE="Administrar trabajos"></FORM>
+<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Administrar trabajos"></FORM>
</P>
</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
diff -up cups-1.4.2/templates/eu/admin.tmpl.str3403 cups-1.4.2/templates/eu/admin.tmpl
--- cups-1.4.2/templates/eu/admin.tmpl.str3403 2009-07-07 17:52:34.000000000 +0100
+++ cups-1.4.2/templates/eu/admin.tmpl 2009-11-16 17:21:56.120542504 +0000
@@ -20,7 +20,7 @@
<H2 CLASS="title">Lanak</H2>
<P>
-<FORM ACTION="/jobs/" METHDO="GET"><INPUT TYPE="SUBMIT" VALUE="Kudeatu lanak"></FORM>
+<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Kudeatu lanak"></FORM>
</P>
</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
diff -up cups-1.4.2/templates/ja/admin.tmpl.str3403 cups-1.4.2/templates/ja/admin.tmpl
--- cups-1.4.2/templates/ja/admin.tmpl.str3403 2009-02-17 19:04:25.000000000 +0000
+++ cups-1.4.2/templates/ja/admin.tmpl 2009-11-16 17:21:56.120542504 +0000
@@ -20,7 +20,7 @@
<H2 CLASS="title">ジョブ</H2>
<P>
-<FORM ACTION="/jobs/" METHDO="GET"><INPUT TYPE="SUBMIT" VALUE="ジョブの管理"></FORM>
+<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="ジョブの管理"></FORM>
</P>
</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
diff -up cups-1.4.2/templates/pl/admin.tmpl.str3403 cups-1.4.2/templates/pl/admin.tmpl
--- cups-1.4.2/templates/pl/admin.tmpl.str3403 2009-02-25 16:48:35.000000000 +0000
+++ cups-1.4.2/templates/pl/admin.tmpl 2009-11-16 17:21:56.121542314 +0000
@@ -20,7 +20,7 @@
<H2 CLASS="title">Zadania</H2>
<P>
-<FORM ACTION="/jobs/" METHDO="GET"><INPUT TYPE="SUBMIT" VALUE="Zarządzanie zadaniami"></FORM>
+<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Zarządzanie zadaniami"></FORM>
</P>
</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
diff -up cups-1.4.2/templates/ru/admin.tmpl.str3403 cups-1.4.2/templates/ru/admin.tmpl
--- cups-1.4.2/templates/ru/admin.tmpl.str3403 2009-10-26 16:01:08.000000000 +0000
+++ cups-1.4.2/templates/ru/admin.tmpl 2009-11-16 17:21:56.121542314 +0000
@@ -20,7 +20,7 @@
<H2 CLASS="title">Задания</H2>
<P>
-<FORM ACTION="/jobs/" METHDO="GET"><INPUT TYPE="SUBMIT" VALUE="Управление заданиями"></FORM>
+<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Управление заданиями"></FORM>
</P>
</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">

View File

@ -1,67 +0,0 @@
diff -up cups-1.4.2/CHANGES-1.4.txt.str3407 cups-1.4.2/CHANGES-1.4.txt
diff -up cups-1.4.2/scheduler/job.c.str3407 cups-1.4.2/scheduler/job.c
--- cups-1.4.2/scheduler/job.c.str3407 2009-11-17 12:18:38.518084476 +0000
+++ cups-1.4.2/scheduler/job.c 2009-11-17 13:00:46.204083691 +0000
@@ -1721,7 +1721,30 @@ cupsdLoadJob(cupsd_job_t *job) /* I - J
cupsdLogMessage(CUPSD_LOG_ERROR,
"[Job %d] Ran out of memory for job file types!",
job->id);
- return (1);
+
+ ippDelete(job->attrs);
+ job->attrs = NULL;
+
+ if (compressions)
+ free(compressions);
+
+ if (filetypes)
+ free(filetypes);
+
+ if (job->compressions)
+ {
+ free(job->compressions);
+ job->compressions = NULL;
+ }
+
+ if (job->filetypes)
+ {
+ free(job->filetypes);
+ job->filetypes = NULL;
+ }
+
+ job->num_files = 0;
+ return (0);
}
job->compressions = compressions;
@@ -1789,6 +1812,21 @@ cupsdLoadJob(cupsd_job_t *job) /* I - J
ippDelete(job->attrs);
job->attrs = NULL;
+
+ if (job->compressions)
+ {
+ free(job->compressions);
+ job->compressions = NULL;
+ }
+
+ if (job->filetypes)
+ {
+ free(job->filetypes);
+ job->filetypes = NULL;
+ }
+
+ job->num_files = 0;
+
unlink(jobfile);
return (0);
@@ -4411,7 +4449,7 @@ update_job_attrs(cupsd_job_t *job, /* I
else if (job->printer->state_message[0] && do_message)
cupsdSetString(&(job->printer_message->values[0].string.text),
job->printer->state_message);
-
+
/*
* ... and the printer-state-reasons value...
*/

View File

@ -1,33 +0,0 @@
diff -up cups-1.4.2/backend/snmp.c.str3413 cups-1.4.2/backend/snmp.c
--- cups-1.4.2/backend/snmp.c.str3413 2009-01-14 22:40:58.000000000 +0000
+++ cups-1.4.2/backend/snmp.c 2009-12-08 10:54:11.798515550 +0000
@@ -999,7 +999,7 @@ read_snmp_response(int fd) /* I - SNMP
DEVICE_PRODUCT, LexmarkProductOID2);
_cupsSNMPWrite(fd, &(packet.address), CUPS_SNMP_VERSION_1,
packet.community, CUPS_ASN1_GET_REQUEST,
- DEVICE_URI, LexmarkDeviceIdOID);
+ DEVICE_ID, LexmarkDeviceIdOID);
_cupsSNMPWrite(fd, &(packet.address), CUPS_SNMP_VERSION_1,
packet.community, CUPS_ASN1_GET_REQUEST,
DEVICE_PRODUCT, XeroxProductOID);
@@ -1054,7 +1054,9 @@ read_snmp_response(int fd) /* I - SNMP
break;
case DEVICE_ID :
- if (device && packet.object_type == CUPS_ASN1_OCTET_STRING)
+ if (device && packet.object_type == CUPS_ASN1_OCTET_STRING &&
+ (!device->id ||
+ strlen(device->id) < packet.object_value.string.num_bytes))
{
/*
* Update an existing cache entry...
@@ -1107,7 +1109,7 @@ read_snmp_response(int fd) /* I - SNMP
case DEVICE_URI :
if (device && packet.object_type == CUPS_ASN1_OCTET_STRING &&
- !device->uri)
+ !device->uri && packet.object_value.string.num_bytes > 0)
{
/*
* Update an existing cache entry...
diff -up cups-1.4.2/CHANGES-1.4.txt.str3413 cups-1.4.2/CHANGES-1.4.txt

View File

@ -1,90 +0,0 @@
diff -up cups-1.4.2/cgi-bin/admin.c.str3418 cups-1.4.2/cgi-bin/admin.c
--- cups-1.4.2/cgi-bin/admin.c.str3418 2009-11-17 13:23:51.130084685 +0000
+++ cups-1.4.2/cgi-bin/admin.c 2009-11-17 13:23:56.773209143 +0000
@@ -1261,7 +1261,7 @@ do_am_printer(http_t *http, /* I - HTTP
* Got the list of PPDs, see if the user has selected a make...
*/
- if (cgiSetIPPVars(response, NULL, NULL, NULL, 0) == 0)
+ if (cgiSetIPPVars(response, NULL, NULL, NULL, 0) == 0 && !modify)
{
/*
* No PPD files with this make, try again with all makes...
@@ -1297,8 +1297,11 @@ do_am_printer(http_t *http, /* I - HTTP
*/
cgiStartHTML(title);
- cgiSetVariable("CURRENT_MAKE_AND_MODEL",
- cgiGetArray("PPD_MAKE_AND_MODEL", 0));
+ if (!cgiGetVariable("PPD_MAKE"))
+ cgiSetVariable("PPD_MAKE", cgiGetVariable("CURRENT_MAKE"));
+ if (!modify)
+ cgiSetVariable("CURRENT_MAKE_AND_MODEL",
+ cgiGetArray("PPD_MAKE_AND_MODEL", 0));
cgiCopyTemplateLang("choose-model.tmpl");
cgiEndHTML();
}
@@ -1590,7 +1593,7 @@ do_config_server(http_t *http) /* I - H
#ifdef HAVE_GSSAPI
char default_auth_type[255];
/* DefaultAuthType value */
- const char *val; /* Setting value */
+ const char *val; /* Setting value */
#endif /* HAVE_GSSAPI */
@@ -1662,7 +1665,7 @@ do_config_server(http_t *http) /* I - H
strcat(local_protocols, "slp");
}
#endif /* HAVE_SLP */
-
+
if (cgiGetVariable("BROWSE_REMOTE_CUPS"))
strcpy(remote_protocols, "cups");
else
@@ -1915,7 +1918,7 @@ do_config_server(http_t *http) /* I - H
cgiSetVariable("ERROR", strerror(errno));
cgiCopyTemplateLang("error.tmpl");
cgiEndHTML();
-
+
perror(tempfile);
return;
}
@@ -1927,7 +1930,7 @@ do_config_server(http_t *http) /* I - H
cgiSetVariable("ERROR", strerror(errno));
cgiCopyTemplateLang("error.tmpl");
cgiEndHTML();
-
+
perror(tempfile);
close(tempfd);
unlink(tempfile);
@@ -3342,7 +3345,7 @@ do_set_options(http_t *http, /* I - HTT
((ppdattr = ppdFindAttr(ppd, "cupsCommands", NULL)) != NULL &&
ppdattr->value && strstr(ppdattr->value, "AutoConfigure")))
cgiSetVariable("HAVE_AUTOCONFIGURE", "YES");
- else
+ else
{
for (i = 0; i < ppd->num_filters; i ++)
if (!strncmp(ppd->filters[i], "application/vnd.cups-postscript", 31))
@@ -3446,7 +3449,7 @@ do_set_options(http_t *http, /* I - HTT
cgiSetVariable("GROUP", group->text);
cgiCopyTemplateLang("option-header.tmpl");
-
+
for (j = group->num_options, option = group->options;
j > 0;
j --, option ++)
@@ -4090,7 +4093,7 @@ get_option_value(
snprintf(buffer, bufsize, "Custom.%gx%g%s", width, length, uval);
}
- else if (cupsArrayCount(coption->params) == 1)
+ else if (cupsArrayCount(coption->params) == 1)
{
cparam = ppdFirstCustomParam(coption);
snprintf(keyword, sizeof(keyword), "%s.%s", coption->keyword, cparam->name);
diff -up cups-1.4.2/CHANGES-1.4.txt.str3418 cups-1.4.2/CHANGES-1.4.txt

View File

@ -1,22 +0,0 @@
diff -up cups-1.4.2/templates/pl/jobs-header.tmpl.localize cups-1.4.2/templates/pl/jobs-header.tmpl
--- cups-1.4.2/templates/pl/jobs-header.tmpl.localize 2009-02-25 17:48:35.000000000 +0100
+++ cups-1.4.2/templates/pl/jobs-header.tmpl 2009-11-20 13:56:58.000000000 +0100
@@ -2,4 +2,4 @@
{?which_jobs=completed?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="completed"><INPUT TYPE="SUBMIT" VALUE="Wyświetl zakończone zadania"></FORM>}
{?which_jobs=all?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="all"><INPUT TYPE="SUBMIT" VALUE="Wyświetl wszystkie zadania"></FORM>}</DIV>
-<P ALIGN="CENTER">{total=0?Brak zadań:Wyświetlanie {#job_id} z {total} {?which_jobs=?aktywnych:{which_jobs=wszystkich?:zakończonych}} zadań{total=1?:s}}.</P>
+<P ALIGN="CENTER">{total=0?Brak zadań:Wyświetlanie {#job_id} z {total} {?which_jobs=?aktywnych:{which_jobs=all?:zakończonych}} zadań{total=1?:s}}.</P>
diff -up cups-1.4.2/templates/ru/jobs-header.tmpl.localize cups-1.4.2/templates/ru/jobs-header.tmpl
--- cups-1.4.2/templates/ru/jobs-header.tmpl.localize 2009-02-17 20:04:25.000000000 +0100
+++ cups-1.4.2/templates/ru/jobs-header.tmpl 2009-11-20 13:53:54.000000000 +0100
@@ -1,5 +1,6 @@
<DIV CLASS="indent">{?which_jobs=?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Показать активные задания"></FORM>}
-{?which_jobs=completed?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="Завершено"><INPUT TYPE="SUBMIT" VALUE="Показать завершенные задания"></FORM>}
-{?which_jobs=all?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="все"><INPUT TYPE="SUBMIT" VALUE="Показать все задания"></FORM>}</DIV>
+{?which_jobs=completed?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="completed"><INPUT TYPE="SUBMIT" VALUE="Показать завершенные задания"></FORM>}
+{?which_jobs=all?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="all"><INPUT TYPE="SUBMIT" VALUE="Показать все задания"></FORM>}</DIV>
+
+<P ALIGN="CENTER">{total=0?Нет заданий:Задание {#job_id} из {total} {?which_jobs=?активных:{which_jobs=all?:завершенных}}.</P>
-<P ALIGN="CENTER">{total=0?Нет заданий:Задание {#job_id} из {total} {?which_jobs=?активных:{which_jobs=всех?:завершенных}}.</P>

View File

@ -1,145 +0,0 @@
diff -up cups-1.4.2/scheduler/job.c.str3425 cups-1.4.2/scheduler/job.c
--- cups-1.4.2/scheduler/job.c.str3425 2010-03-09 16:59:12.000000000 +0100
+++ cups-1.4.2/scheduler/job.c 2010-03-09 17:02:57.000000000 +0100
@@ -253,7 +253,7 @@ cupsdCancelJobs(const char *dest, /* I -
if (purge)
cupsdSetJobState(job, IPP_JOB_CANCELED, CUPSD_JOB_PURGE,
"Job purged by user.");
- else
+ else if (job->state_value < IPP_JOB_CANCELED)
cupsdSetJobState(job, IPP_JOB_CANCELED, CUPSD_JOB_DEFAULT,
"Job canceled by user.");
}
@@ -433,11 +433,11 @@ cupsdCleanJobs(void)
cupsd_job_t *job; /* Current job */
- if (MaxJobs <= 0)
+ if (MaxJobs <= 0 && JobHistory)
return;
for (job = (cupsd_job_t *)cupsArrayFirst(Jobs);
- job && cupsArrayCount(Jobs) >= MaxJobs;
+ job && (cupsArrayCount(Jobs) >= MaxJobs || !JobHistory);
job = (cupsd_job_t *)cupsArrayNext(Jobs))
if (job->state_value >= IPP_JOB_CANCELED && !job->printer)
cupsdDeleteJob(job, CUPSD_JOB_PURGE);
@@ -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...
@@ -2499,7 +2501,14 @@ cupsdSetJobState(
cupsdMarkDirty(CUPSD_DIRTY_JOBS);
}
else if (!job->printer)
+ {
+ /*
+ * Delete the job immediately if not actively printing...
+ */
+
cupsdDeleteJob(job, CUPSD_JOB_PURGE);
+ job = NULL;
+ }
break;
}
@@ -2507,7 +2516,7 @@ cupsdSetJobState(
* Finalize the job immediately if we forced things...
*/
- if (action == CUPSD_JOB_FORCE)
+ if (action >= CUPSD_JOB_FORCE && job && job->printer)
finalize_job(job);
/*
diff -up cups-1.4.2/scheduler/main.c.str3425 cups-1.4.2/scheduler/main.c
--- cups-1.4.2/scheduler/main.c.str3425 2010-03-09 16:59:12.000000000 +0100
+++ cups-1.4.2/scheduler/main.c 2010-03-09 16:59:12.000000000 +0100
@@ -389,7 +389,7 @@ main(int argc, /* I - Number of comm
* parent's file descriptors to be blocking. This is a workaround for a
* limitation of userland libpthread on OpenBSD.
*/
-
+
_thread_sys_closefrom(0);
#endif /* __OpenBSD__ */
@@ -817,8 +817,8 @@ main(int argc, /* I - Number of comm
if (timeout == 86400 && Launchd && LaunchdTimeout && !NumPolled &&
!cupsArrayCount(ActiveJobs) &&
- (!Browsing ||
- (!BrowseRemoteProtocols &&
+ (!Browsing ||
+ (!BrowseRemoteProtocols &&
(!NumBrowsers || !BrowseLocalProtocols ||
cupsArrayCount(Printers) == 0))))
{
@@ -1046,6 +1046,7 @@ main(int argc, /* I - Number of comm
if ((current_time - senddoc_time) >= 10)
{
cupsdCheckJobs();
+ cupsdCleanJobs();
senddoc_time = current_time;
}
@@ -1204,8 +1205,8 @@ main(int argc, /* I - Number of comm
#endif /* HAVE_GSSAPI */
#if defined(__APPLE__) && defined(HAVE_DLFCN_H)
- /*
- * Unload Print Service quota enforcement library (X Server only)
+ /*
+ * Unload Print Service quota enforcement library (X Server only)
*/
PSQUpdateQuotaProc = NULL;
@@ -1562,13 +1563,13 @@ launchd_checkin(void)
if (lis)
{
- cupsdLogMessage(CUPSD_LOG_DEBUG,
+ cupsdLogMessage(CUPSD_LOG_DEBUG,
"launchd_checkin: Matched existing listener %s with fd %d...",
httpAddrString(&(lis->address), s, sizeof(s)), fd);
}
else
{
- cupsdLogMessage(CUPSD_LOG_DEBUG,
+ cupsdLogMessage(CUPSD_LOG_DEBUG,
"launchd_checkin: Adding new listener %s with fd %d...",
httpAddrString(&addr, s, sizeof(s)), fd);
@@ -1622,12 +1623,12 @@ launchd_checkout(void)
/*
* Create or remove the launchd KeepAlive file based on whether
- * there are active jobs, polling, browsing for remote printers or
+ * there are active jobs, polling, browsing for remote printers or
* shared printers to advertise...
*/
- if ((cupsArrayCount(ActiveJobs) || NumPolled ||
- (Browsing &&
+ if ((cupsArrayCount(ActiveJobs) || NumPolled ||
+ (Browsing &&
(BrowseRemoteProtocols ||
(BrowseLocalProtocols && NumBrowsers && cupsArrayCount(Printers))))))
{

View File

@ -1,57 +0,0 @@
diff -up cups-1.4.2/scheduler/ipp.c.str3428 cups-1.4.2/scheduler/ipp.c
--- cups-1.4.2/scheduler/ipp.c.str3428 2009-12-08 12:24:31.177373309 +0000
+++ cups-1.4.2/scheduler/ipp.c 2009-12-08 12:27:33.910498083 +0000
@@ -1860,8 +1860,6 @@ add_job(cupsd_client_t *con, /* I - Cl
"job-media-sheets-completed", 0);
ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_URI, "job-printer-uri", NULL,
printer->uri);
- ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_NAME, "job-name", NULL,
- title);
if ((attr = ippFindAttribute(job->attrs, "job-k-octets",
IPP_TAG_INTEGER)) != NULL)
@@ -3438,7 +3436,7 @@ apple_register_profiles(
num_profiles ++;
}
-
+
/*
* If we have profiles, add them...
*/
@@ -3484,7 +3482,7 @@ apple_register_profiles(
snprintf(q_keyword, sizeof(q_keyword), "Default%s", attr->value);
q2_attr = ppdFindAttr(ppd, q_keyword, NULL);
}
- else
+ else
q2_attr = ppdFindAttr(ppd, "DefaultMediaType", NULL);
if (q2_attr && q2_attr->value && q2_attr->value[0])
@@ -3498,7 +3496,7 @@ apple_register_profiles(
snprintf(q_keyword, sizeof(q_keyword), "Default%s", attr->value);
q3_attr = ppdFindAttr(ppd, q_keyword, NULL);
}
- else
+ else
q3_attr = ppdFindAttr(ppd, "DefaultResolution", NULL);
if (q3_attr && q3_attr->value && q3_attr->value[0])
@@ -3667,7 +3665,7 @@ apple_register_profiles(
attr = ppdFindAttr(ppd, "DefaultColorSpace", NULL);
num_profiles = (attr && ppd->colorspace == PPD_CS_GRAY) ? 1 : 2;
-
+
if ((profiles = calloc(num_profiles, sizeof(CMDeviceProfileArray))) == NULL)
{
cupsdLogMessage(CUPSD_LOG_ERROR,
@@ -4762,7 +4760,7 @@ check_quotas(cupsd_client_t *con, /* I
if (q->page_count == -4) /* special case: unlimited user */
{
cupsdLogMessage(CUPSD_LOG_INFO,
- "User \"%s\" request approved for printer %s (%s): "
+ "User \"%s\" request approved for printer %s (%s): "
"unlimited quota.",
username, p->name, p->info);
q->page_count = 0; /* allow user to print */

View File

@ -1,32 +0,0 @@
diff -up cups-1.4.2/scheduler/ipp.c.str3431 cups-1.4.2/scheduler/ipp.c
--- cups-1.4.2/scheduler/ipp.c.str3431 2009-12-08 12:28:21.095374048 +0000
+++ cups-1.4.2/scheduler/ipp.c 2009-12-08 12:32:03.829498891 +0000
@@ -7183,6 +7183,7 @@ get_job_attrs(cupsd_client_t *con, /* I
ipp_attribute_t *attr; /* Current attribute */
int jobid; /* Job ID */
cupsd_job_t *job; /* Current job */
+ cupsd_printer_t *printer; /* Current printer */
char scheme[HTTP_MAX_URI], /* Method portion of URI */
username[HTTP_MAX_URI], /* Username portion of URI */
host[HTTP_MAX_URI], /* Host portion of URI */
@@ -7257,7 +7258,19 @@ get_job_attrs(cupsd_client_t *con, /* I
* Check policy...
*/
- if ((status = cupsdCheckPolicy(DefaultPolicyPtr, con, NULL)) != HTTP_OK)
+ if ((printer = job->printer) == NULL)
+ printer = cupsdFindDest(job->dest);
+
+ if (printer)
+ {
+ if ((status = cupsdCheckPolicy(printer->op_policy_ptr, con,
+ NULL)) != HTTP_OK)
+ {
+ send_http_error(con, status, printer);
+ return;
+ }
+ }
+ else if ((status = cupsdCheckPolicy(DefaultPolicyPtr, con, NULL)) != HTTP_OK)
{
send_http_error(con, status, NULL);
return;

View File

@ -1,45 +0,0 @@
diff -up cups-1.4.2/cups/util.c.str3435 cups-1.4.2/cups/util.c
--- cups-1.4.2/cups/util.c.str3435 2009-06-22 21:44:34.000000000 +0100
+++ cups-1.4.2/cups/util.c 2009-12-08 12:11:38.647375446 +0000
@@ -1511,12 +1511,36 @@ cupsPrintFiles2(
return (0);
}
- status = cupsStartDocument(http, name, job_id, docname, format,
- i == (num_files - 1));
+ do
+ {
+ cupsFileRewind(fp);
+
+ status = cupsStartDocument(http, name, job_id, docname, format,
+ i == (num_files - 1));
+
+ while (status == HTTP_CONTINUE &&
+ (bytes = cupsFileRead(fp, buffer, sizeof(buffer))) > 0)
+ status = cupsWriteRequestData(http, buffer, bytes);
+
+ if (status == HTTP_UNAUTHORIZED)
+ {
+ char resource[1024]; /* Printer resource */
- while (status == HTTP_CONTINUE &&
- (bytes = cupsFileRead(fp, buffer, sizeof(buffer))) > 0)
- status = cupsWriteRequestData(http, buffer, bytes);
+ snprintf(resource, sizeof(resource), "/printers/%s", name);
+
+ if (!cupsDoAuthentication(http, "POST", resource))
+ {
+ if (httpReconnect(http))
+ {
+ _cupsSetError(IPP_SERVICE_UNAVAILABLE, NULL, 0);
+ return (0);
+ }
+ }
+ else
+ status = HTTP_AUTHORIZATION_CANCELED;
+ }
+ }
+ while (status == HTTP_UNAUTHORIZED);
cupsFileClose(fp);

View File

@ -1,33 +0,0 @@
diff -up cups-1.4.2/cgi-bin/ipp-var.c.str3436 cups-1.4.2/cgi-bin/ipp-var.c
--- cups-1.4.2/cgi-bin/ipp-var.c.str3436 2009-11-09 23:01:17.000000000 +0000
+++ cups-1.4.2/cgi-bin/ipp-var.c 2009-12-08 12:19:01.988500453 +0000
@@ -333,7 +333,7 @@ cgiMoveJobs(http_t *http, /* I - Co
NULL, job_uri);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
"requested-attributes", NULL, "job-printer-uri");
-
+
if ((response = cupsDoRequest(http, request, "/")) != NULL)
{
if ((attr = ippFindAttribute(response, "job-printer-uri",
@@ -926,7 +926,7 @@ cgiRewriteURL(const char *uri, /* I - C
ishttps ? "https" : "http",
userpass, hostname, port, resource);
else
- snprintf(url, urlsize, "%s://%s:%d%s",
+ snprintf(url, urlsize, "%s://%s:%d%s",
ishttps ? "https" : "http",
hostname, port, resource);
}
@@ -1518,7 +1518,11 @@ cgiShowJobs(http_t *http, /* I - Co
*/
if (dest)
+ {
snprintf(val, sizeof(val), "/%s/%s", section, dest);
+ cgiSetVariable("PRINTER_NAME", dest);
+ cgiSetVariable("PRINTER_URI_SUPPORTED", val);
+ }
else
strlcpy(val, "/jobs/", sizeof(val));

View File

@ -1,126 +0,0 @@
diff -up cups-1.4.2/cgi-bin/admin.c.str3439 cups-1.4.2/cgi-bin/admin.c
--- cups-1.4.2/cgi-bin/admin.c.str3439 2009-12-08 10:03:36.412157983 +0000
+++ cups-1.4.2/cgi-bin/admin.c 2009-12-08 10:03:41.659157246 +0000
@@ -3320,11 +3320,16 @@ do_set_options(http_t *http, /* I - HTT
for (option = ppdFirstOption(ppd);
option;
option = ppdNextOption(ppd))
+ {
if ((var = cgiGetVariable(option->keyword)) != NULL)
{
have_options = 1;
ppdMarkOption(ppd, option->keyword, var);
+ fprintf(stderr, "DEBUG: Set %s to %s...\n", option->keyword, var);
}
+ else
+ fprintf(stderr, "DEBUG: Didn't find %s...\n", option->keyword);
+ }
}
if (!have_options || ppdConflicts(ppd))
diff -up cups-1.4.2/cups/conflicts.c.str3439 cups-1.4.2/cups/conflicts.c
--- cups-1.4.2/cups/conflicts.c.str3439 2009-05-18 23:55:15.000000000 +0100
+++ cups-1.4.2/cups/conflicts.c 2009-12-08 10:03:41.657157719 +0000
@@ -583,9 +583,13 @@ ppdConflicts(ppd_file_t *ppd) /* I - PP
* Clear all conflicts...
*/
+ cupsArraySave(ppd->options);
+
for (o = ppdFirstOption(ppd); o; o = ppdNextOption(ppd))
o->conflicted = 0;
+ cupsArrayRestore(ppd->options);
+
/*
* Test for conflicts...
*/
diff -up cups-1.4.2/cups/mark.c.str3439 cups-1.4.2/cups/mark.c
--- cups-1.4.2/cups/mark.c.str3439 2009-04-20 22:37:14.000000000 +0100
+++ cups-1.4.2/cups/mark.c 2009-12-08 10:03:41.656157620 +0000
@@ -842,6 +842,8 @@ ppd_mark_option(ppd_file_t *ppd, /* I -
if (!strcasecmp(option, "AP_D_InputSlot"))
{
+ cupsArraySave(ppd->options);
+
if ((o = ppdFindOption(ppd, "InputSlot")) != NULL)
{
key.option = o;
@@ -851,13 +853,21 @@ ppd_mark_option(ppd_file_t *ppd, /* I -
cupsArrayRemove(ppd->marked, oldc);
}
}
+
+ cupsArrayRestore(ppd->options);
}
/*
* Check for custom options...
*/
- if ((o = ppdFindOption(ppd, option)) == NULL)
+ cupsArraySave(ppd->options);
+
+ o = ppdFindOption(ppd, option);
+
+ cupsArrayRestore(ppd->options);
+
+ if (!o)
return;
loc = localeconv();
@@ -1060,6 +1070,8 @@ ppd_mark_option(ppd_file_t *ppd, /* I -
* appropriate...
*/
+ cupsArraySave(ppd->options);
+
if (!strcasecmp(option, "PageSize"))
{
if ((o = ppdFindOption(ppd, "PageRegion")) != NULL)
@@ -1084,6 +1096,8 @@ ppd_mark_option(ppd_file_t *ppd, /* I -
}
}
}
+
+ cupsArrayRestore(ppd->options);
}
else if (!strcasecmp(option, "InputSlot"))
{
@@ -1091,6 +1105,8 @@ ppd_mark_option(ppd_file_t *ppd, /* I -
* Unmark ManualFeed option...
*/
+ cupsArraySave(ppd->options);
+
if ((o = ppdFindOption(ppd, "ManualFeed")) != NULL)
{
key.option = o;
@@ -1100,6 +1116,8 @@ ppd_mark_option(ppd_file_t *ppd, /* I -
cupsArrayRemove(ppd->marked, oldc);
}
}
+
+ cupsArrayRestore(ppd->options);
}
else if (!strcasecmp(option, "ManualFeed") &&
!strcasecmp(choice, "True"))
@@ -1108,6 +1126,8 @@ ppd_mark_option(ppd_file_t *ppd, /* I -
* Unmark InputSlot option...
*/
+ cupsArraySave(ppd->options);
+
if ((o = ppdFindOption(ppd, "InputSlot")) != NULL)
{
key.option = o;
@@ -1117,6 +1137,8 @@ ppd_mark_option(ppd_file_t *ppd, /* I -
cupsArrayRemove(ppd->marked, oldc);
}
}
+
+ cupsArrayRestore(ppd->options);
}
}

View File

@ -1,104 +0,0 @@
diff -up cups-1.4.2/cgi-bin/admin.c.str3440 cups-1.4.2/cgi-bin/admin.c
--- cups-1.4.2/cgi-bin/admin.c.str3440 2009-12-08 10:10:05.529157178 +0000
+++ cups-1.4.2/cgi-bin/admin.c 2009-12-08 10:10:12.571033051 +0000
@@ -3436,6 +3436,16 @@ do_set_options(http_t *http, /* I - HTT
{
cgiSetArray("ckeyword", k, option->keyword);
cgiSetArray("ckeytext", k, option->text);
+
+ for (m = 0; m < option->num_choices; m ++)
+ {
+ if (option->choices[m].marked)
+ {
+ cgiSetArray("cchoice", k, option->choices[m].text);
+ break;
+ }
+ }
+
k ++;
}
diff -up cups-1.4.2/templates/de/option-conflict.tmpl.str3440 cups-1.4.2/templates/de/option-conflict.tmpl
--- cups-1.4.2/templates/de/option-conflict.tmpl.str3440 2009-04-03 16:55:28.000000000 +0100
+++ cups-1.4.2/templates/de/option-conflict.tmpl 2009-12-08 10:10:12.567157789 +0000
@@ -1,7 +1,7 @@
<P><B>Error:</B> The following options are conflicting:</P>
<UL>
-{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A></LI>
+{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
}</UL>
<P>Bitte &auml;ndern sie eine oder mehrere Einstellungen um die Konflikte zu l&ouml;sen.</P>
diff -up cups-1.4.2/templates/es/option-conflict.tmpl.str3440 cups-1.4.2/templates/es/option-conflict.tmpl
--- cups-1.4.2/templates/es/option-conflict.tmpl.str3440 2008-12-08 21:20:06.000000000 +0000
+++ cups-1.4.2/templates/es/option-conflict.tmpl 2009-12-08 10:10:12.568157603 +0000
@@ -1,7 +1,7 @@
<P><B>Error:</B> Las siguientes opciones est&aacute;n en conflicto:</P>
<UL>
-{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A></LI>
+{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
}</UL>
<P>Cambie una o m&aacute;s de las opciones para resolver el problema.</P>
diff -up cups-1.4.2/templates/eu/option-conflict.tmpl.str3440 cups-1.4.2/templates/eu/option-conflict.tmpl
--- cups-1.4.2/templates/eu/option-conflict.tmpl.str3440 2009-07-07 17:52:34.000000000 +0100
+++ cups-1.4.2/templates/eu/option-conflict.tmpl 2009-12-08 10:10:12.569157261 +0000
@@ -1,7 +1,7 @@
<P><B>Errorea:</B> honako aukerak gatazkan daude:</P>
<UL>
-{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A></LI>
+{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
}</UL>
<P>Aldatu aukera bat edo gehiago gatazkak ebazteko.</P>
diff -up cups-1.4.2/templates/ja/option-conflict.tmpl.str3440 cups-1.4.2/templates/ja/option-conflict.tmpl
--- cups-1.4.2/templates/ja/option-conflict.tmpl.str3440 2009-02-17 19:04:25.000000000 +0000
+++ cups-1.4.2/templates/ja/option-conflict.tmpl 2009-12-08 10:10:12.566157419 +0000
@@ -1,7 +1,7 @@
<P><B>エラー:</B> 以下のオプションは競合します:</P>
<UL>
-{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A></LI>
+{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
}</UL>
<P>競合を解決するために、1 つ以上のオプションを変更してください。</P>
diff -up cups-1.4.2/templates/option-conflict.tmpl.str3440 cups-1.4.2/templates/option-conflict.tmpl
--- cups-1.4.2/templates/option-conflict.tmpl.str3440 2005-08-24 20:25:49.000000000 +0100
+++ cups-1.4.2/templates/option-conflict.tmpl 2009-12-08 10:10:12.566157419 +0000
@@ -1,7 +1,7 @@
<P><B>Error:</B> The following options are conflicting:</P>
<UL>
-{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A></LI>
+{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
}</UL>
<P>Please change one or more of the options to resolve the conflicts.</P>
diff -up cups-1.4.2/templates/pl/option-conflict.tmpl.str3440 cups-1.4.2/templates/pl/option-conflict.tmpl
--- cups-1.4.2/templates/pl/option-conflict.tmpl.str3440 2009-02-25 16:48:35.000000000 +0000
+++ cups-1.4.2/templates/pl/option-conflict.tmpl 2009-12-08 10:10:12.567157789 +0000
@@ -1,7 +1,7 @@
<P><B>Błąd:</B> następujące opcje są w konflikcie ze sobą:</P>
<UL>
-{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A></LI>
+{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
}</UL>
<P>Proszę zmienić jedną lub więcej opcji, aby rozwiązać konflikt.</P>
diff -up cups-1.4.2/templates/ru/option-conflict.tmpl.str3440 cups-1.4.2/templates/ru/option-conflict.tmpl
--- cups-1.4.2/templates/ru/option-conflict.tmpl.str3440 2009-02-17 19:04:25.000000000 +0000
+++ cups-1.4.2/templates/ru/option-conflict.tmpl 2009-12-08 10:10:12.567157789 +0000
@@ -1,7 +1,7 @@
<P><B>Ошибка:</B> следующие параметры конфликтуют:</P>
<UL>
-{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A></LI>
+{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
}</UL>
<P>Измените один или несколько параметров для того, чтобы избежать конфликта.</P>

View File

@ -1,11 +0,0 @@
diff -up cups-1.4.2/conf/mime.convs.in.str3442 cups-1.4.2/conf/mime.convs.in
--- cups-1.4.2/conf/mime.convs.in.str3442 2009-05-22 20:30:39.000000000 +0100
+++ cups-1.4.2/conf/mime.convs.in 2009-12-08 10:19:40.044329553 +0000
@@ -47,6 +47,7 @@ application/x-perl application/postscri
application/x-shell application/postscript 33 texttops
text/plain application/postscript 33 texttops
text/html application/postscript 33 texttops
+text/css application/postscript 33 texttops
image/gif application/vnd.cups-postscript 66 imagetops
image/png application/vnd.cups-postscript 66 imagetops
image/jpeg application/vnd.cups-postscript 66 imagetops

View File

@ -1,16 +0,0 @@
diff -up cups-1.4.2/cups/dest.c.str3448 cups-1.4.2/cups/dest.c
--- cups-1.4.2/cups/dest.c.str3448 2009-08-28 23:54:34.000000000 +0100
+++ cups-1.4.2/cups/dest.c 2009-12-10 18:15:50.910079549 +0000
@@ -145,6 +145,12 @@ cupsAddDest(const char *name, /* I -
dest = cups_add_dest(name, instance, &num_dests, dests);
+ /*
+ * Find the base dest again now the array has been realloc'd.
+ */
+
+ parent = cupsGetDest(name, NULL, num_dests, *dests);
+
if (instance && parent && parent->num_options > 0)
{
/*

View File

@ -1,19 +0,0 @@
diff -up cups-1.4.2/backend/ipp.c.str3458 cups-1.4.2/backend/ipp.c
--- cups-1.4.2/backend/ipp.c.str3458 2009-12-22 13:04:25.021208333 +0000
+++ cups-1.4.2/backend/ipp.c 2009-12-22 13:04:26.570082893 +0000
@@ -802,6 +802,15 @@ main(int argc, /* I - Number of comm
return (CUPS_BACKEND_STOP);
}
+ else if (ipp_status == IPP_NOT_AUTHORIZED || ipp_status == IPP_FORBIDDEN)
+ {
+ if (!strncmp(httpGetField(http, HTTP_FIELD_WWW_AUTHENTICATE),
+ "Negotiate", 9))
+ auth_info_required = "negotiate";
+
+ fprintf(stderr, "ATTR: auth-info-required=%s\n", auth_info_required);
+ return (CUPS_BACKEND_AUTH_REQUIRED);
+ }
else
{
_cupsLangPrintf(stderr,

View File

@ -1,14 +0,0 @@
diff -up cups-1.4.2/backend/ipp.c.str3460 cups-1.4.2/backend/ipp.c
--- cups-1.4.2/backend/ipp.c.str3460 2010-01-15 10:25:14.720258721 +0000
+++ cups-1.4.2/backend/ipp.c 2010-01-15 10:28:57.218384231 +0000
@@ -1435,7 +1435,10 @@ main(int argc, /* I - Number of comm
else if (ipp_status > IPP_OK_CONFLICT)
return (CUPS_BACKEND_FAILED);
else
+ {
+ _cupsLangPuts(stderr, _("INFO: Ready to print.\n"));
return (CUPS_BACKEND_OK);
+ }
}

12
cups-str3503.patch Normal file
View File

@ -0,0 +1,12 @@
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);
/*

199
cups.spec
View File

@ -7,8 +7,8 @@
Summary: Common Unix Printing System
Name: cups
Version: 1.4.2
Release: 36%{?dist}
Version: 1.4.3
Release: 1%{?dist}
License: GPLv2
Group: System Environment/Daemons
Source: http://ftp.easysw.com/pub/cups/%{version}/cups-%{version}-source.tar.bz2
@ -38,60 +38,36 @@ Patch4: cups-serial.patch
Patch5: cups-banners.patch
Patch6: cups-serverbin-compat.patch
Patch7: cups-no-export-ssllibs.patch
Patch8: cups-str3448.patch
Patch9: cups-direct-usb.patch
Patch10: cups-lpr-help.patch
Patch11: cups-peercred.patch
Patch12: cups-pid.patch
Patch13: cups-page-label.patch
Patch14: cups-eggcups.patch
Patch15: cups-getpass.patch
Patch16: cups-driverd-timeout.patch
Patch17: cups-strict-ppd-line-length.patch
Patch18: cups-logrotate.patch
Patch19: cups-usb-paperout.patch
Patch20: cups-build.patch
Patch21: cups-res_init.patch
Patch22: cups-filter-debug.patch
Patch23: cups-uri-compat.patch
Patch24: cups-cups-get-classes.patch
Patch25: cups-avahi.patch
Patch26: cups-str3382.patch
Patch27: cups-str3285_v2-str3503.patch
Patch28: cups-str3390.patch
Patch29: cups-str3391.patch
Patch30: cups-str3381.patch
Patch31: cups-str3399.patch
Patch32: cups-str3403.patch
Patch33: cups-str3407.patch
Patch34: cups-str3418.patch
Patch35: cups-CVE-2009-3553.patch
Patch36: cups-str3422.patch
Patch37: cups-str3413.patch
Patch38: cups-str3439.patch
Patch39: cups-str3440.patch
Patch40: cups-str3442.patch
Patch41: cups-negative-snmp-string-length.patch
Patch42: cups-sidechannel-intrs.patch
Patch43: cups-media-empty-warning.patch
Patch44: cups-str3435.patch
Patch45: cups-str3436.patch
Patch46: cups-str3425.patch
Patch47: cups-str3428.patch
Patch48: cups-str3431.patch
Patch49: cups-gnutls-gcrypt-threads.patch
Patch50: cups-str3458.patch
Patch51: cups-0755.patch
Patch52: cups-str3460.patch
Patch53: cups-EAI_AGAIN.patch
Patch54: cups-str3505.patch
Patch55: cups-CVE-2010-0302.patch
Patch56: cups-str3541.patch
Patch8: cups-direct-usb.patch
Patch9: cups-lpr-help.patch
Patch10: cups-peercred.patch
Patch11: cups-pid.patch
Patch12: cups-page-label.patch
Patch13: cups-eggcups.patch
Patch14: cups-getpass.patch
Patch15: cups-driverd-timeout.patch
Patch16: cups-strict-ppd-line-length.patch
Patch17: cups-logrotate.patch
Patch18: cups-usb-paperout.patch
Patch19: cups-build.patch
Patch20: cups-res_init.patch
Patch21: cups-filter-debug.patch
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
Patch100: cups-lspp.patch
## SECURITY PATCHES:
Patch200: cups-CVE-2010-0302.patch
Epoch: 1
Url: http://www.cups.org/
@ -237,111 +213,66 @@ module.
%patch6 -p1 -b .serverbin-compat
# Don't export SSLLIBS to cups-config.
%patch7 -p1 -b .no-export-ssllibs
# Avoid use-after-free in cupsAddDest.
%patch8 -p1 -b .str3448
# Allow file-based usb device URIs.
%patch9 -p1 -b .direct-usb
%patch8 -p1 -b .direct-usb
# Add --help option to lpr.
%patch10 -p1 -b .lpr-help
%patch9 -p1 -b .lpr-help
# Fix compilation of peer credentials support.
%patch11 -p1 -b .peercred
%patch10 -p1 -b .peercred
# Maintain a cupsd.pid file.
%patch12 -p1 -b .pid
%patch11 -p1 -b .pid
# Fix orientation of page labels.
%patch13 -p1 -b .page-label
%patch12 -p1 -b .page-label
# Fix implementation of com.redhat.PrinterSpooler D-Bus object.
%patch14 -p1 -b .eggcups
%patch13 -p1 -b .eggcups
# More sophisticated implementation of cupsGetPassword than getpass.
%patch15 -p1 -b .getpass
%patch14 -p1 -b .getpass
# Increase driverd timeout to 70s to accommodate foomatic.
%patch16 -p1 -b .driverd-timeout
%patch15 -p1 -b .driverd-timeout
# Only enforce maximum PPD line length when in strict mode.
%patch17 -p1 -b .strict-ppd-line-length
%patch16 -p1 -b .strict-ppd-line-length
# Re-open the log if it has been logrotated under us.
%patch18 -p1 -b .logrotate
%patch17 -p1 -b .logrotate
# Support for errno==ENOSPACE-based USB paper-out reporting.
%patch19 -p1 -b .usb-paperout
%patch18 -p1 -b .usb-paperout
# Simplify the DNSSD parts so they can build using the compat library.
%patch20 -p1 -b .build
%patch19 -p1 -b .build
# Re-initialise the resolver on failure in httpAddrGetList().
%patch21 -p1 -b .res_init
%patch20 -p1 -b .res_init
# Log extra debugging information if no filters are available.
%patch22 -p1 -b .filter-debug
%patch21 -p1 -b .filter-debug
# Allow the usb backend to understand old-style URI formats.
%patch23 -p1 -b .uri-compat
%patch22 -p1 -b .uri-compat
# Fix support for older CUPS servers in cupsGetDests.
%patch24 -p1 -b .cups-get-classes
%patch23 -p1 -b .cups-get-classes
# Avahi support in the dnssd backend.
%patch25 -p1 -b .avahi
%patch24 -p1 -b .avahi
# Fix temporary filename creation.
%patch26 -p1 -b .str3382
%patch25 -p1 -b .str3382
# Fix cupsGetNamedDest() when a name is specified.
%patch27 -p1 -b .str3285_v2-str3503
# Set the PRINTER_IS_SHARED CGI variable.
%patch28 -p1 -b .str3390
# Set the CGI variables required by the serial backend.
%patch29 -p1 -b .str3391
# Fix signal handling when using gnutls.
%patch30 -p1 -b .str3381
# Reset SIGPIPE handler before starting child processes.
%patch31 -p1 -b .str3399
# Fixed typo in Russian translation of admin CGI page.
%patch32 -p1 -b .str3403
# Handle out-of-memory more gracefully when loading jobs.
%patch33 -p1 -b .str3407
# Set PPD_MAKE CGI variable.
%patch34 -p1 -b .str3418
# Fix use-after-free in select.c.
%patch35 -p1 -b .CVE-2009-3553
# Fix Russian translations of CGI pages.
%patch36 -p1 -b .str3422
# Fix SNMP handling.
%patch37 -p1 -b .str3413
# Fix adjustment of conflicting options in web interface.
%patch38 -p1 -b .str3439
# Show which option conflicts in web interface.
%patch39 -p1 -b .str3440
# Provide filter path for text/css.
%patch40 -p1 -b .str3442
# Fix SNMP handling with negative string lengths.
%patch41 -p1 -b .negative-snmp-string-length
# Fix signal handling in the sidechannel API.
%patch42 -p1 -b .sidechannel-intrs
# Stop network backends incorrectly clearing media-empty-warning.
%patch43 -p1 -b .media-empty-warning
# Fixed authentication bug in cupsPrintFiles2.
%patch44 -p1 -b .str3435
# Set PRINTER_NAME and PRINTER_URI_SUPPORTED CGI variables.
%patch45 -p1 -b .str3436
# Clean out completed jobs when PreserveJobHistory is off.
%patch46 -p1 -b .str3425
# Don't add two job-name attributes to each job object.
%patch47 -p1 -b .str3428
# Use the Get-Job-Attributes policy for a printer.
%patch48 -p1 -b .str3431
#%patch49 -p1 -b .gnutls-gcrypt-threads
# Fix IPP authentication for servers requiring auth for
# IPP-Get-Printer-Attributes.
%patch50 -p1 -b .str3458
%patch26 -p1 -b .str3503
# Don't treat SIGPIPE as an error.
%patch27 -p1 -b .str3399
#%patch28 -p1 -b .gnutls-gcrypt-threads
# Use mode 0755 for binaries and libraries where appropriate.
%patch51 -p1 -b .0755
# Clear printer status after successful IPP job.
%patch52 -p1 -b .str3460
%patch29 -p1 -b .0755
# Re-initialise the resolver on failure in httpAddrLookup().
%patch53 -p1 -b .EAI_AGAIN
%patch30 -p1 -b .EAI_AGAIN
# Update classes.conf when a class member printer is deleted
%patch54 -p1 -b .str3505
# Applied patch for CVE-2010-0302 (incomplete fix for CVE-2009-3553,
# bug #557775).
%patch55 -p1 -b .CVE-2010-0302
%patch31 -p1 -b .str3505
# Fix lpstat to adhere to -o option.
%patch56 -p1 -b .str3541
%patch32 -p1 -b .str3541
%if %lspp
# LSPP support.
%patch100 -p1 -b .lspp
%endif
# SECURITY PATCHES:
# Applied patch for CVE-2010-0302 (incomplete fix for CVE-2009-3553,
# bug #557775).
%patch200 -p1 -b .CVE-2010-0302
sed -i -e '1iMaxLogSize 0' conf/cupsd.conf.in
cp %{SOURCE5} cups-lpd.real
@ -549,6 +480,8 @@ rm -rf $RPM_BUILD_ROOT
%config(noreplace) %doc %{_datadir}/%{name}/www/de/index.html
%config(noreplace) %doc %{_datadir}/%{name}/www/es/index.html
%config(noreplace) %doc %{_datadir}/%{name}/www/eu/index.html
%config(noreplace) %doc %{_datadir}/%{name}/www/id/index.html
%config(noreplace) %doc %{_datadir}/%{name}/www/it/index.html
%config(noreplace) %doc %{_datadir}/%{name}/www/ja/index.html
%config(noreplace) %doc %{_datadir}/%{name}/www/pl/index.html
%config(noreplace) %doc %{_datadir}/%{name}/www/ru/index.html
@ -584,6 +517,8 @@ rm -rf $RPM_BUILD_ROOT
%config(noreplace) %{_datadir}/cups/templates/de/*.tmpl
%config(noreplace) %{_datadir}/cups/templates/es/*.tmpl
%config(noreplace) %{_datadir}/cups/templates/eu/*.tmpl
%config(noreplace) %{_datadir}/cups/templates/id/*.tmpl
%config(noreplace) %{_datadir}/cups/templates/it/*.tmpl
%config(noreplace) %{_datadir}/cups/templates/ja/*.tmpl
%config(noreplace) %{_datadir}/cups/templates/pl/*.tmpl
%config(noreplace) %{_datadir}/cups/templates/ru/*.tmpl
@ -627,6 +562,14 @@ rm -rf $RPM_BUILD_ROOT
%{php_extdir}/phpcups.so
%changelog
* Wed Mar 31 2010 Jiri Popelka <jpopelka@redhat.com> 1:1.4.3-1
- 1.4.3.
- No longer need CVE-2009-3553, str3381, str3390, str3391,
str3403, str3407, str3413, str3418, str3422, str3425,
str3428, str3431, str3435, str3436, str3439, str3440,
str3442, str3448, str3458, str3460, cups-sidechannel-intrs,
negative-snmp-string-length, cups-media-empty-warning patches.
* Tue Mar 30 2010 Jiri Popelka <jpopelka@redhat.com> 1:1.4.2-36
- Fixed lpstat to adhere to -o option (bug #577901, STR #3541).

View File

@ -1 +1 @@
d95e2d588e3d36e563027a963b117b1b cups-1.4.2-source.tar.bz2
e70b1c3f60143d7310c1d74c111a21ab cups-1.4.3-source.tar.bz2