diff --git a/.cvsignore b/.cvsignore index 168a39e..f3cee3a 100644 --- a/.cvsignore +++ b/.cvsignore @@ -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 diff --git a/cups-CVE-2009-3553.patch b/cups-CVE-2009-3553.patch deleted file mode 100644 index 6aadfe4..0000000 --- a/cups-CVE-2009-3553.patch +++ /dev/null @@ -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); diff --git a/cups-CVE-2010-0302.patch b/cups-CVE-2010-0302.patch index 63d2081..da108e1 100644 --- a/cups-CVE-2010-0302.patch +++ b/cups-CVE-2010-0302.patch @@ -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); diff --git a/cups-lspp.patch b/cups-lspp.patch index 90f20ad..3e7a00f 100644 --- a/cups-lspp.patch +++ b/cups-lspp.patch @@ -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 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 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 */ diff --git a/cups-media-empty-warning.patch b/cups-media-empty-warning.patch deleted file mode 100644 index adf0ac2..0000000 --- a/cups-media-empty-warning.patch +++ /dev/null @@ -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) diff --git a/cups-negative-snmp-string-length.patch b/cups-negative-snmp-string-length.patch deleted file mode 100644 index 5d94fbb..0000000 --- a/cups-negative-snmp-string-length.patch +++ /dev/null @@ -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; - diff --git a/cups-sidechannel-intrs.patch b/cups-sidechannel-intrs.patch deleted file mode 100644 index 4a5420c..0000000 --- a/cups-sidechannel-intrs.patch +++ /dev/null @@ -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: - * diff --git a/cups-str3285_v2-str3503.patch b/cups-str3285_v2-str3503.patch deleted file mode 100644 index 35b6002..0000000 --- a/cups-str3285_v2-str3503.patch +++ /dev/null @@ -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); - - /* diff --git a/cups-str3381.patch b/cups-str3381.patch deleted file mode 100644 index 88a007c..0000000 --- a/cups-str3381.patch +++ /dev/null @@ -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; - } diff --git a/cups-str3382.patch b/cups-str3382.patch index 2999c79..14e9b27 100644 --- a/cups-str3382.patch +++ b/cups-str3382.patch @@ -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 #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 */ /* diff --git a/cups-str3390.patch b/cups-str3390.patch deleted file mode 100644 index a9d958d..0000000 --- a/cups-str3390.patch +++ /dev/null @@ -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"); diff --git a/cups-str3391.patch b/cups-str3391.patch deleted file mode 100644 index 4e6cc7b..0000000 --- a/cups-str3391.patch +++ /dev/null @@ -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 @@ - -
- -+ -+ -+ -+ - {?current_make!?:} - {?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 @@ - - - -+ -+ -+ -+ - {?current_make!?:} - {?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 @@ - - - -+ -+ -+ -+ - - - -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 @@ - - - -+ -+ -+ -+ - {?current_make!?:} - {?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 @@ - - - -+ -+ -+ -+ - - -
-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 @@ - - - -+ -+ -+ -+ - {?current_make!?:} - {?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 @@ - - - -+ -+ -+ -+ - - -
-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 @@ - - - -+ -+ -+ -+ - {?current_make!?:} - {?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 @@ - - - -+ -+ -+ -+ - - -
-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 @@ - - - -+ -+ -+ -+ - - -
-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 @@ - - - -+ -+ -+ -+ - {?current_make!?:} - {?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 @@ - - - -+ -+ -+ -+ - - -
-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 @@ - - - -+ -+ -+ -+ - {?current_make!?:} - {?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 @@ - - - -+ -+ -+ -+ - - -
diff --git a/cups-str3399.patch b/cups-str3399.patch index 05552e4..e5b2000 100644 --- a/cups-str3399.patch +++ b/cups-str3399.patch @@ -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) diff --git a/cups-str3403.patch b/cups-str3403.patch deleted file mode 100644 index d66d163..0000000 --- a/cups-str3403.patch +++ /dev/null @@ -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 @@ -

Jobs

- -

-- -+
-

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

Druckaufträge

- -

--

-+
-

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

Trabajos

- -

--

-+
-

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

Lanak

- -

--

-+
-

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

ジョブ

- -

--

-+
-

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

Zadania

- -

--

-+
-

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

Задания

- -

--

-+
-

- -
          diff --git a/cups-str3407.patch b/cups-str3407.patch deleted file mode 100644 index 4d8c6dc..0000000 --- a/cups-str3407.patch +++ /dev/null @@ -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... - */ diff --git a/cups-str3413.patch b/cups-str3413.patch deleted file mode 100644 index a74e7ec..0000000 --- a/cups-str3413.patch +++ /dev/null @@ -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 diff --git a/cups-str3418.patch b/cups-str3418.patch deleted file mode 100644 index 3bb4e3e..0000000 --- a/cups-str3418.patch +++ /dev/null @@ -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 diff --git a/cups-str3422.patch b/cups-str3422.patch deleted file mode 100644 index a0ac1bf..0000000 --- a/cups-str3422.patch +++ /dev/null @@ -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?:
} - {?which_jobs=all?:
} - --

{total=0?Brak zadań:Wyświetlanie {#job_id} z {total} {?which_jobs=?aktywnych:{which_jobs=wszystkich?:zakończonych}} zadań{total=1?:s}}.

-+

{total=0?Brak zadań:Wyświetlanie {#job_id} z {total} {?which_jobs=?aktywnych:{which_jobs=all?:zakończonych}} zadań{total=1?:s}}.

-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 @@ -
{?which_jobs=?:
} --{?which_jobs=completed?:
} --{?which_jobs=all?:
}
-+{?which_jobs=completed?:
} -+{?which_jobs=all?:
} -+ -+

{total=0?Нет заданий:Задание {#job_id} из {total} {?which_jobs=?активных:{which_jobs=all?:завершенных}}.

- --

{total=0?Нет заданий:Задание {#job_id} из {total} {?which_jobs=?активных:{which_jobs=всех?:завершенных}}.

diff --git a/cups-str3425.patch b/cups-str3425.patch deleted file mode 100644 index 98d2e44..0000000 --- a/cups-str3425.patch +++ /dev/null @@ -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)))))) - { diff --git a/cups-str3428.patch b/cups-str3428.patch deleted file mode 100644 index 1ed50d9..0000000 --- a/cups-str3428.patch +++ /dev/null @@ -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 */ diff --git a/cups-str3431.patch b/cups-str3431.patch deleted file mode 100644 index 636960d..0000000 --- a/cups-str3431.patch +++ /dev/null @@ -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; diff --git a/cups-str3435.patch b/cups-str3435.patch deleted file mode 100644 index 1870abb..0000000 --- a/cups-str3435.patch +++ /dev/null @@ -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); - diff --git a/cups-str3436.patch b/cups-str3436.patch deleted file mode 100644 index 910d15a..0000000 --- a/cups-str3436.patch +++ /dev/null @@ -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)); - diff --git a/cups-str3439.patch b/cups-str3439.patch deleted file mode 100644 index e5b2e2e..0000000 --- a/cups-str3439.patch +++ /dev/null @@ -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); - } - } - diff --git a/cups-str3440.patch b/cups-str3440.patch deleted file mode 100644 index 9dfd56b..0000000 --- a/cups-str3440.patch +++ /dev/null @@ -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 @@ -

Error: The following options are conflicting:

- - - -

Bitte ändern sie eine oder mehrere Einstellungen um die Konflikte zu lösen.

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

Error: Las siguientes opciones están en conflicto:

- - - -

Cambie una o más de las opciones para resolver el problema.

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

Errorea: honako aukerak gatazkan daude:

- - - -

Aldatu aukera bat edo gehiago gatazkak ebazteko.

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

エラー: 以下のオプションは競合します:

- - - -

競合を解決するために、1 つ以上のオプションを変更してください。

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

Error: The following options are conflicting:

- - - -

Please change one or more of the options to resolve the conflicts.

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

Błąd: następujące opcje są w konflikcie ze sobą:

- - - -

Proszę zmienić jedną lub więcej opcji, aby rozwiązać konflikt.

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

Ошибка: следующие параметры конфликтуют:

- - - -

Измените один или несколько параметров для того, чтобы избежать конфликта.

diff --git a/cups-str3442.patch b/cups-str3442.patch deleted file mode 100644 index af57fd4..0000000 --- a/cups-str3442.patch +++ /dev/null @@ -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 diff --git a/cups-str3448.patch b/cups-str3448.patch deleted file mode 100644 index 4233e7e..0000000 --- a/cups-str3448.patch +++ /dev/null @@ -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) - { - /* diff --git a/cups-str3458.patch b/cups-str3458.patch deleted file mode 100644 index da43b76..0000000 --- a/cups-str3458.patch +++ /dev/null @@ -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, diff --git a/cups-str3460.patch b/cups-str3460.patch deleted file mode 100644 index 20b1b70..0000000 --- a/cups-str3460.patch +++ /dev/null @@ -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); -+ } - } - - diff --git a/cups-str3503.patch b/cups-str3503.patch new file mode 100644 index 0000000..334f483 --- /dev/null +++ b/cups-str3503.patch @@ -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); + + /* diff --git a/cups.spec b/cups.spec index 1cd9b11..58705f7 100644 --- a/cups.spec +++ b/cups.spec @@ -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 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 1:1.4.2-36 - Fixed lpstat to adhere to -o option (bug #577901, STR #3541). diff --git a/sources b/sources index 73d408c..4448a10 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -d95e2d588e3d36e563027a963b117b1b cups-1.4.2-source.tar.bz2 +e70b1c3f60143d7310c1d74c111a21ab cups-1.4.3-source.tar.bz2