-CHANGES.txt - 1.7.3 - 2014-05-27
+CHANGES.txt - 1.7.4 - 2014-07-08
--------------------------------
+CHANGES IN CUPS V1.7.4
+
+ - Security: The web interface incorrectly served symlinked files and
+ files that were not world-readable, potentially leading to a
+ disclosure of information (STR #4450)
+ - The CUPS headers incorrectly needed libdispatch for blocks support
+ (STR #4397)
+ - CUPS did not compile when Avahi or mDNSResponder was not present
+ (STR #4402, STR #4424)
+ - The "snmp" option did not work with the network backends (STR #4422)
+ - The User directive in client.conf did not override the USER
+ environment variable (STR #4426)
+ - The web interface now properly shows a "Go" button for all text-based
+ browsers (STR #4425)
+ - The MaxJobTime directive now properly supports time values (STR #4434)
+ - The RPM spec file did not work due to the new Brazilian Portuguese
+ localization (STR #4436)
+ - Fixed an "IPP read error" issue (STR #4440)
+ - Fixed the --disable-libusb configure option (STR #4439)
+ - Fixed the debug output from the DNS-SD backend when using Avahi
+ (STR #4444)
+ - Fixed a bug in the CUPS_SC_GET_DEVICE_ID handling by the network
+ backends (STR #4447)
+ - Added USB quirk rule for Lexmark E230 (STR #4448)
+ - The LPD backend did not work with some versions of glibc (STR #4452)
+
+
CHANGES IN CUPS V1.7.3
- Added Brazilian Portuguese translation (STR #4409)
- Fixed an authentication race condition in cupsSendRequest (STR #4403)
- The scheduler did not add the "job-hold-until-specified" reason when
holding a job using the lp command (STR #4405)
- - The CUPS headers incorrectly needed libdispatch for blocks support
- (STR #4397)
- The configure script incorrectly added libgcrypt as a GNU TLS
dependency (STR #4399)
- - CUPS did not compile when Avahi or mDNSResponder was not present
- (STR #4402)
- cupsGetDestMediaCount did not work for CUPS_MEDIA_FLAGS DEFAULT
(STR #4414)
- Auto-typing of PWG Raster files did not work (STR #4417)
-INSTALL - CUPS v1.7.3 - 2014-05-27
+INSTALL - CUPS v1.7.4 - 2014-06-10
----------------------------------
This file describes how to compile and install CUPS from source code. For more
-README - CUPS v1.7.3 - 2014-05-27
+README - CUPS v1.7.4 - 2014-06-10
---------------------------------
Looking for compile instructions? Read the file "INSTALL.txt" instead...
/*
- * "$Id: dnssd.c 11623 2014-02-19 20:18:10Z msweet $"
+ * "$Id: dnssd.c 11971 2014-07-01 14:38:29Z msweet $"
*
- * DNS-SD discovery backend for CUPS.
+ * DNS-SD discovery backend for CUPS.
*
- * Copyright 2008-2012 by Apple Inc.
+ * Copyright 2008-2014 by Apple Inc.
*
- * These coded instructions, statements, and computer programs are the
- * property of Apple Inc. and are protected by Federal copyright
- * law. Distribution and use rights are outlined in the file "LICENSE.txt"
- * "LICENSE" which should have been included with this file. If this
- * file is missing or damaged, see the license at "http://www.cups.org/".
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law. Distribution and use rights are outlined in the file "LICENSE.txt"
+ * "LICENSE" which should have been included with this file. If this
+ * file is missing or damaged, see the license at "http://www.cups.org/".
*
- * This file is subject to the Apple OS-Developed Software exception.
- *
- * Contents:
- *
- * main() - Browse for printers.
- * browse_callback() - Browse devices.
- * browse_local_callback() - Browse local devices.
- * client_callback() - Avahi client callback function.
- * compare_devices() - Compare two devices.
- * exec_backend() - Execute the backend that corresponds to the
- * resolved service name.
- * device_type() - Get DNS-SD type enumeration from string.
- * get_device() - Create or update a device.
- * query_callback() - Process query data.
- * find_device() - Find a device from its name and domain.
- * sigterm_handler() - Handle termination signals.
- * unquote() - Unquote a name string.
+ * This file is subject to the Apple OS-Developed Software exception.
*/
/*
* Yes, add the device...
*/
- fprintf(stderr, "DEBUG: Found \"%s.%s%s\"...\n", serviceName, regtype,
- replyDomain);
+#ifdef HAVE_DNSSD
+ fprintf(stderr, "DEBUG: Found \"%s.%s%s\"...\n", serviceName, regtype, replyDomain);
+#else /* HAVE_AVAHI */
+ fprintf(stderr, "DEBUG: Found \"%s.%s.%s\"...\n", serviceName, regtype, replyDomain);
+#endif /* HAVE_DNSSD */
device = calloc(sizeof(cups_device_t), 1);
device->name = strdup(serviceName);
/*
- * End of "$Id: dnssd.c 11623 2014-02-19 20:18:10Z msweet $".
+ * End of "$Id: dnssd.c 11971 2014-07-01 14:38:29Z msweet $".
*/
/*
- * "$Id: ipp.c 11890 2014-05-22 13:59:21Z msweet $"
+ * "$Id: ipp.c 11909 2014-06-09 18:58:16Z msweet $"
*
* IPP backend for CUPS.
*
*/
snmp_enabled = !value[0] || !_cups_strcasecmp(value, "on") ||
- _cups_strcasecmp(value, "yes") ||
- _cups_strcasecmp(value, "true");
+ !_cups_strcasecmp(value, "yes") ||
+ !_cups_strcasecmp(value, "true");
}
else if (!_cups_strcasecmp(name, "version"))
{
}
/*
- * End of "$Id: ipp.c 11890 2014-05-22 13:59:21Z msweet $".
+ * End of "$Id: ipp.c 11909 2014-06-09 18:58:16Z msweet $".
*/
/*
- * "$Id: lpd.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: lpd.c 12005 2014-07-08 15:46:59Z msweet $"
*
* Line Printer Daemon backend for CUPS.
*
*/
snmp_enabled = !value[0] || !_cups_strcasecmp(value, "on") ||
- _cups_strcasecmp(value, "yes") ||
- _cups_strcasecmp(value, "true");
+ !_cups_strcasecmp(value, "yes") ||
+ !_cups_strcasecmp(value, "true");
}
else if (!_cups_strcasecmp(name, "timeout"))
{
* Try binding the port to the socket; return if all is OK...
*/
- if (!bind(fd, (struct sockaddr *)&addr, sizeof(addr)))
+ if (!bind(fd, (struct sockaddr *)&addr, httpAddrSize(&addr)))
return (fd);
/*
/*
- * End of "$Id: lpd.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: lpd.c 12005 2014-07-08 15:46:59Z msweet $".
*/
/*
- * "$Id: network.c 3755 2012-03-30 05:59:14Z msweet $"
+ * "$Id: network.c 11971 2014-07-01 14:38:29Z msweet $"
*
* Common backend network APIs for CUPS.
*
datalen = 0;
break;
+ case CUPS_SC_CMD_GET_CONNECTED :
+ status = CUPS_SC_STATUS_OK;
+ data[0] = device_fd != -1;
+ datalen = 1;
+ break;
+
case CUPS_SC_CMD_GET_DEVICE_ID :
if (snmp_fd >= 0)
{
break;
}
- case CUPS_SC_CMD_GET_CONNECTED :
- status = CUPS_SC_STATUS_OK;
- data[0] = device_fd != -1;
- datalen = 1;
- break;
-
default :
status = CUPS_SC_STATUS_NOT_IMPLEMENTED;
datalen = 0;
/*
- * End of "$Id: network.c 3755 2012-03-30 05:59:14Z msweet $".
+ * End of "$Id: network.c 11971 2014-07-01 14:38:29Z msweet $".
*/
# Lexmark E238 (<rdar://problem/14493054>)
0x043d 0x00d7 no-reattach
+
+# Lexmark E238 (STR #4448)
+0x043d 0x009a no-reattach
/*
- * "$Id: socket.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: socket.c 11909 2014-06-09 18:58:16Z msweet $"
*
* AppSocket backend for CUPS.
*
*/
snmp_enabled = !value[0] || !_cups_strcasecmp(value, "on") ||
- _cups_strcasecmp(value, "yes") ||
- _cups_strcasecmp(value, "true");
+ !_cups_strcasecmp(value, "yes") ||
+ !_cups_strcasecmp(value, "true");
}
else if (!_cups_strcasecmp(name, "contimeout"))
{
/*
- * End of "$Id: socket.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: socket.c 11909 2014-06-09 18:58:16Z msweet $".
*/
AC_CONFIG_HEADER(config.h)
dnl Version number information...
-CUPS_VERSION=1.7.3
+CUPS_VERSION=1.7.4
CUPS_REVISION=
#if test -z "$CUPS_REVISION" -a -d .svn; then
# CUPS_REVISION="-r`svnversion . | awk -F: '{print $NF}' | sed -e '1,$s/[[a-zA-Z]]*//g'`"
AC_SUBST(USBQUIRKS)
if test "x$PKGCONFIG" != x; then
- if test x$enable_libusb = xyes -o $uname != Darwin; then
+ if test x$enable_libusb != xno -a $uname != Darwin; then
AC_MSG_CHECKING(for libusb-1.0)
if $PKGCONFIG --exists libusb-1.0; then
AC_MSG_RESULT(yes)
USBQUIRKS="\$(DATADIR)/usb"
else
AC_MSG_RESULT(no)
+ if test x$enable_libusb = xyes; then
+ AC_MSG_ERROR(libusb required for --enable-libusb.)
+ fi
fi
fi
elif test x$enable_libusb = xyes; then
ac_config_headers="$ac_config_headers config.h"
-CUPS_VERSION=1.7.3
+CUPS_VERSION=1.7.4
CUPS_REVISION=
#if test -z "$CUPS_REVISION" -a -d .svn; then
# CUPS_REVISION="-r`svnversion . | awk -F: '{print $NF}' | sed -e '1,$s/[[a-zA-Z]]*//g'`"
if test "x$PKGCONFIG" != x; then
- if test x$enable_libusb = xyes -o $uname != Darwin; then
+ if test x$enable_libusb != xno -a $uname != Darwin; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libusb-1.0" >&5
$as_echo_n "checking for libusb-1.0... " >&6; }
if $PKGCONFIG --exists libusb-1.0; then
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
+ if test x$enable_libusb = xyes; then
+ as_fn_error $? "libusb required for --enable-libusb." "$LINENO" 5
+ fi
fi
fi
elif test x$enable_libusb = xyes; then
/*
- * "$Id: cups.h 11812 2014-04-10 15:47:53Z msweet $"
+ * "$Id: cups.h 11978 2014-07-02 10:35:09Z msweet $"
*
* API definitions for CUPS.
*
typedef off_t ssize_t; /* @private@ */
# endif /* WIN32 && !__CUPS_SSIZE_T_DEFINED */
-# ifdef __BLOCKS__
-# include <dispatch/dispatch.h>
-# endif /* __BLOCKS__ */
-
# include "file.h"
# include "ipp.h"
# include "language.h"
* Constants...
*/
-# define CUPS_VERSION 1.0703
+# define CUPS_VERSION 1.0704
# define CUPS_VERSION_MAJOR 1
# define CUPS_VERSION_MINOR 7
-# define CUPS_VERSION_PATCH 3
+# define CUPS_VERSION_PATCH 4
# define CUPS_BC_FD 3
/* Back-channel file descriptor for
#endif /* !_CUPS_CUPS_H_ */
/*
- * End of "$Id: cups.h 11812 2014-04-10 15:47:53Z msweet $".
+ * End of "$Id: cups.h 11978 2014-07-02 10:35:09Z msweet $".
*/
/*
- * "$Id: usersys.c 11689 2014-03-05 21:22:12Z msweet $"
+ * "$Id: usersys.c 11909 2014-06-09 18:58:16Z msweet $"
*
* User, system, and password routines for CUPS.
*
- * Copyright 2007-2013 by Apple Inc.
+ * Copyright 2007-2014 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
cups_anyroot = getenv("CUPS_ANYROOT");
cups_expiredroot = getenv("CUPS_EXPIREDROOT");
cups_expiredcerts = getenv("CUPS_EXPIREDCERTS");
-
- if ((cups_user = getenv("CUPS_USER")) == NULL)
- {
-#ifndef WIN32
- /*
- * Try the USER environment variable...
- */
-
- if ((cups_user = getenv("USER")) != NULL)
- {
- /*
- * Validate USER matches the current UID, otherwise don't allow it to
- * override things... This makes sure that printing after doing su or
- * sudo records the correct username.
- */
-
- struct passwd *pw; /* Account information */
-
- if ((pw = getpwnam(cups_user)) == NULL || pw->pw_uid != getuid())
- cups_user = NULL;
- }
-#endif /* !WIN32 */
- }
+ cups_user = getenv("CUPS_USER");
/*
* Then, if needed, read the ~/.cups/client.conf or /etc/cups/client.conf
if (!GetUserName(cg->user, &size))
#else
/*
- * Get the user name corresponding to the current UID...
+ * Try the USER environment variable as the default username...
*/
- struct passwd *pwd; /* User/password entry */
+ const char *envuser = getenv("USER");
+ /* Default username */
+ struct passwd *pw = NULL; /* Account information */
- setpwent();
- if ((pwd = getpwuid(getuid())) != NULL)
+ if (envuser)
{
/*
- * Found a match!
+ * Validate USER matches the current UID, otherwise don't allow it to
+ * override things... This makes sure that printing after doing su or
+ * sudo records the correct username.
*/
- strlcpy(cg->user, pwd->pw_name, sizeof(cg->user));
+ if ((pw = getpwnam(envuser)) != NULL && pw->pw_uid != getuid())
+ pw = NULL;
}
+
+ if (!pw)
+ pw = getpwuid(getuid());
+
+ if (pw)
+ strlcpy(cg->user, pw->pw_name, sizeof(cg->user));
else
#endif /* WIN32 */
{
/*
- * End of "$Id: usersys.c 11689 2014-03-05 21:22:12Z msweet $".
+ * End of "$Id: usersys.c 11909 2014-06-09 18:58:16Z msweet $".
*/
<P><A HREF="help/whatsnew.html">Novetats del CUPS 1.4</A></P>
-<P><A HREF="http://www.cups.org/newsgroups.php?gcups.general">Fòrum d'usuaris</A></P>
+<P><A HREF="http://www.cups.org/lists.php?LIST=cups">Fòrum d'usuaris</A></P>
</TD><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-left: 20px; padding-right: 20px;">
<P><A HREF="help/ref-cupsd-conf.html">Referència del cupsd.conf</A></P>
-<P><A HREF="http://www.cups.org/ppd.php">Cerca de controladors d'impressora</A></P>
-
</TD><TD VALIGN="top" STYLE="padding-left: 20px;">
<H2>CUPS per desenvolupadors</H2>
<P><A HREF="help/ref-ppdcfile.html">Referència del fitxer d'inf. del compilador del controlador per PPD</A></P>
-<P><A HREF="http://www.cups.org/newsgroups.php?gcups.development">Fòrum de desenvolupadors</A></P>
+<P><A HREF="http://www.cups.org/lists.php?LIST=cups-devel">Fòrum de desenvolupadors</A></P>
</TD></TR>
</TABLE>
<P><A HREF="help/whatsnew.html">Co je nového v CUPS 1.6</A></P>
-<P><A HREF="http://www.cups.org/newsgroups.php?gcups.general">Uživatelské fórum</A></P>
+<P><A HREF="http://www.cups.org/lists.php?LIST=cups">Uživatelské fórum</A></P>
</TD><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-left: 20px; padding-right: 20px;">
<P><A HREF="help/ref-cupsd-conf.html">Konfigurační soubor cupsd.conf</A></P>
-<P><A HREF="http://www.cups.org/ppd.php">Hedat ovladače tiskárny</A></P>
-
</TD><TD VALIGN="top" STYLE="padding-left: 20px;">
<H2>CUPS pro vývojáře</H2>
<P><A HREF="help/ref-ppdcfile.html">PPD kompilátor Driver Information File Reference</A></P>
-<P><A HREF="http://www.cups.org/newsgroups.php?gcups.development">Vývojářské fórum</A></P>
+<P><A HREF="http://www.cups.org/lists.php?LIST=cups-devel">Vývojářské fórum</A></P>
</TD></TR>
</TABLE>
<P><A HREF="help/whatsnew.html">Neues in CUPS 1.7</A></P>
-<P><A HREF="http://www.cups.org/newsgroups.php?gcups.general">Benutzerforum</A></P>
+<P><A HREF="http://www.cups.org/lists.php?LIST=cups">Benutzerforum</A></P>
</TD><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-left: 20px; padding-right: 20px;">
<P><A HREF="help/ref-cupsd-conf.html">cupsd.conf Referenz</A></P>
-<P><A HREF="http://www.cups.org/ppd.php">Druckertreiber finden</A></P>
-
</TD><TD VALIGN="top" STYLE="padding-left: 20px;">
<H2>CUPS für Entwickler</H2>
<P><A HREF="help/ref-ppdcfile.html">PPD Compiler Treiber Dateireferenz</A></P>
-<P><A HREF="http://www.cups.org/newsgroups.php?gcups.development">Entwicklerforum</A></P>
+<P><A HREF="http://www.cups.org/lists.php?LIST=cups-devel">Entwicklerforum</A></P>
</TD></TR>
</TABLE>
<P><A HREF="help/whatsnew.html">Qué hay de nuevo en CUPS 1.6</A></P>
-<P><A HREF="http://www.cups.org/newsgroups.php?gcups.general">Foro de usuarios</A></P>
+<P><A HREF="http://www.cups.org/lists.php?LIST=cups">Foro de usuarios</A></P>
</TD><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-left: 20px; padding-right: 20px;">
<P><A HREF="help/ref-cupsd-conf.html">Referencia de cupsd.conf</A></P>
-<P><A HREF="http://www.cups.org/ppd.php">Encontrar controladores de impresora</A></P>
-
</TD><TD VALIGN="top" STYLE="padding-left: 20px;">
<H2>CUPS para desarrolladores</H2>
<P><A HREF="help/ref-ppdcfile.html">Referencia del archivo de información del compilador de controladores PPD</A></P>
-<P><A HREF="http://www.cups.org/newsgroups.php?gcups.development">Foro de desarrollo</A></P>
+<P><A HREF="http://www.cups.org/lists.php?LIST=cups-devel">Foro de desarrollo</A></P>
</TD></TR>
</TABLE>
<P><A HREF="help/whatsnew.html">Quoi de neuf dans CUPS 1.6</A></P>
-<P><A HREF="http://www.cups.org/newsgroups.php?gcups.general">Forum utilisateur</A></P>
+<P><A HREF="http://www.cups.org/lists.php?LIST=cups">Forum utilisateur</A></P>
</TD><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-left: 20px; padding-right: 20px;">
<P><A HREF="help/ref-cupsd-conf.html">Références sur cupsd.conf</A></P>
-<P><A HREF="http://www.cups.org/ppd.php">Trouver des pilotes d'imprimantes</A></P>
-
</TD><TD VALIGN="top" STYLE="padding-left: 20px;">
<H2>CUPS pour les développeurs</H2>
<P><A HREF="help/ref-ppdcfile.html">PPD Compiler Driver Information File Reference</A></P>
-<P><A HREF="http://www.cups.org/newsgroups.php?gcups.development">Forum développeurs</A></P>
+<P><A HREF="http://www.cups.org/lists.php?LIST=cups-devel">Forum développeurs</A></P>
</TD></TR>
</TABLE>
<P><A HREF="help/whatsnew.html">What's New in CUPS 1.7</A></P>
-<P><A HREF="http://www.cups.org/newsgroups.php?gcups.general">User Forum</A></P>
+<P><A HREF="http://www.cups.org/lists.php?LIST=cups">User Forum</A></P>
</TD><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-left: 20px; padding-right: 20px;">
<P><A HREF="help/ref-cupsd-conf.html">cupsd.conf Reference</A></P>
-<P><A HREF="http://www.cups.org/ppd.php">Find Printer Drivers</A></P>
-
</TD><TD VALIGN="top" STYLE="padding-left: 20px;">
<H2>CUPS for Developers</H2>
<P><A HREF="help/ref-ppdcfile.html">PPD Compiler Driver Information File Reference</A></P>
-<P><A HREF="http://www.cups.org/newsgroups.php?gcups.development">Developer Forum</A></P>
+<P><A HREF="http://www.cups.org/lists.php?LIST=cups-devel">Developer Forum</A></P>
</TD></TR>
</TABLE>
<P><A HREF="help/whatsnew.html">Le novità introdotte da CUPS 1.7</A></P>
-<P><A HREF="http://www.cups.org/newsgroups.php?gcups.general">Forum dell'utente</A></P>
+<P><A HREF="http://www.cups.org/lists.php?LIST=cups">Forum dell'utente</A></P>
</TD><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-left: 20px; padding-right: 20px;">
<P><A HREF="help/ref-cupsd-conf.html">Riferimenti a cupsd.conf</A></P>
-<P><A HREF="http://www.cups.org/ppd.php">Trovare i driver delle stampanti</A></P>
-
</TD><TD VALIGN="top" STYLE="padding-left: 20px;">
<H2>CUPS per gli sviluppatori</H2>
<P><A HREF="help/ref-ppdcfile.html">File di riferimento del compilatore di driver PPD</A></P>
-<P><A HREF="http://www.cups.org/newsgroups.php?gcups.development">Forum dello sviluppatore</A></P>
+<P><A HREF="http://www.cups.org/lists.php?LIST=cups-devel">Forum dello sviluppatore</A></P>
</TD></TR>
</TABLE>
<P><A HREF="help/whatsnew.html">CUPS 1.6 の新機能</A></P>
-<P><A HREF="http://www.cups.org/newsgroups.php?gcups.general">ユーザーフォーラム</A></P>
+<P><A HREF="http://www.cups.org/lists.php?LIST=cups">ユーザーフォーラム</A></P>
</TD><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-left: 20px; padding-right: 20px;">
<P><A HREF="help/ref-cupsd-conf.html">cupsd.conf リファレンス</A></P>
-<P><A HREF="http://www.cups.org/ppd.php">プリンタードライバーの検索</A></P>
-
</TD><TD VALIGN="top" STYLE="padding-left: 20px;">
<H2>開発者向け</H2>
<P><A HREF="help/ref-ppdcfile.html">PPD コンパイラー用ドライバー情報ファイル リファレンス</A></P>
-<P><A HREF="http://www.cups.org/newsgroups.php?gcups.development">開発者フォーラム</A></P>
+<P><A HREF="http://www.cups.org/lists.php?LIST=cups-devel">開発者フォーラム</A></P>
</TD></TR>
</TABLE>
<P><A HREF="help/whatsnew.html">Что нового в CUPS 1.6</A></P>
-<P><A HREF="http://www.cups.org/newsgroups.php?gcups.general">Форум пользователей</A></P>
+<P><A HREF="http://www.cups.org/lists.php?LIST=cups">Форум пользователей</A></P>
</TD><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-left: 20px; padding-right: 20px;">
<P><A HREF="help/ref-cupsd-conf.html">Справочник по cupsd.conf</A></P>
-<P><A HREF="http://www.cups.org/ppd.php">Поиск драйверов принтера</A></P>
-
</TD><TD VALIGN="top" STYLE="padding-left: 20px;">
<H2>CUPS для разработчиков</H2>
<P><A HREF="help/ref-ppdcfile.html">Справочник по компилятору PPD</A></P>
-<P><A HREF="http://www.cups.org/newsgroups.php?gcups.development">Форум разработчиков</A></P>
+<P><A HREF="http://www.cups.org/lists.php?LIST=cups-devel">Форум разработчиков</A></P>
</TD></TR>
</TABLE>
#
-# "$Id: cups.spec.in 11897 2014-05-27 15:02:42Z msweet $"
+# "$Id: cups.spec.in 11946 2014-06-24 18:01:58Z msweet $"
#
# RPM "spec" file for CUPS.
#
# dnssd - Enable/disable DNS-SD support (default = enable)
# libusb1 - Enable/disable LIBUSB 1.0 support (default = enable)
# static - Enable/disable static libraries (default = enable)
+#
+# Note: Older Linux distributions use the name "libusbx-devel" or just
+# "libusb-devel" for LIBUSB 1.0. There is absolutely nothing we can
+# do to make this spec file build as-is on those distributions, you'll
+# need to change the "BuildRequires" line accordingly...
%{!?_with_dbus: %{!?_without_dbus: %define _with_dbus --with-dbus}}
%{?_with_dbus: %define _dbus --enable-dbus}
Summary: CUPS
Name: cups
-Version: 1.7.3
+Version: 1.7.4
Release: 1
Epoch: 1
License: GPL
Group: System Environment/Daemons
-Source: http://www.cups.org/software/1.7.3/cups-1.7.3-source.tar.bz2
+Source: http://www.cups.org/software/1.7.4/cups-1.7.4-source.tar.bz2
Url: http://www.cups.org
Packager: Anonymous <anonymous@foo.com>
Vendor: Apple Inc.
/usr/share/doc/cups/it/*
%dir /usr/share/doc/cups/ja
/usr/share/doc/cups/ja/*
+%dir /usr/share/doc/cups/pt_BR
+/usr/share/doc/cups/pt_BR/*
%dir /usr/share/doc/cups/ru
/usr/share/doc/cups/ru/*
/usr/share/locale/it/cups_it.po
%dir /usr/share/locale/ja
/usr/share/locale/ja/cups_ja.po
+%dir /usr/share/locale/pt_BR
+/usr/share/locale/pt_BR/cups_pt_BR.po
%dir /usr/share/locale/ru
/usr/share/locale/ru/cups_ru.po
#
-# End of "$Id: cups.spec.in 11897 2014-05-27 15:02:42Z msweet $".
+# End of "$Id: cups.spec.in 11946 2014-06-24 18:01:58Z msweet $".
#
#
-# "$Id: cups.spec.in 11897 2014-05-27 15:02:42Z msweet $"
+# "$Id: cups.spec.in 11946 2014-06-24 18:01:58Z msweet $"
#
# RPM "spec" file for CUPS.
#
# dnssd - Enable/disable DNS-SD support (default = enable)
# libusb1 - Enable/disable LIBUSB 1.0 support (default = enable)
# static - Enable/disable static libraries (default = enable)
+#
+# Note: Older Linux distributions use the name "libusbx-devel" or just
+# "libusb-devel" for LIBUSB 1.0. There is absolutely nothing we can
+# do to make this spec file build as-is on those distributions, you'll
+# need to change the "BuildRequires" line accordingly...
%{!?_with_dbus: %{!?_without_dbus: %define _with_dbus --with-dbus}}
%{?_with_dbus: %define _dbus --enable-dbus}
/usr/share/doc/cups/it/*
%dir /usr/share/doc/cups/ja
/usr/share/doc/cups/ja/*
+%dir /usr/share/doc/cups/pt_BR
+/usr/share/doc/cups/pt_BR/*
%dir /usr/share/doc/cups/ru
/usr/share/doc/cups/ru/*
/usr/share/locale/it/cups_it.po
%dir /usr/share/locale/ja
/usr/share/locale/ja/cups_ja.po
+%dir /usr/share/locale/pt_BR
+/usr/share/locale/pt_BR/cups_pt_BR.po
%dir /usr/share/locale/ru
/usr/share/locale/ru/cups_ru.po
#
-# End of "$Id: cups.spec.in 11897 2014-05-27 15:02:42Z msweet $".
+# End of "$Id: cups.spec.in 11946 2014-06-24 18:01:58Z msweet $".
#
/*
- * "$Id: client.c 11642 2014-02-27 15:57:59Z msweet $"
+ * "$Id: client.c 12009 2014-07-09 17:02:38Z msweet $"
*
* Client routines for the CUPS scheduler.
*
* Grab any request data from the connection...
*/
+ if (!httpWait(HTTP(con), 0))
+ return;
+
if ((ipp_state = ippRead(&(con->http), con->request)) == IPP_ERROR)
{
cupsdLogMessage(CUPSD_LOG_ERROR,
{
if (!httpWait(HTTP(con), 0))
return;
- else if ((bytes = httpRead2(HTTP(con), line, sizeof(line))) < 0)
+
+ if ((bytes = httpRead2(HTTP(con), line, sizeof(line))) < 0)
{
if (con->http.error && con->http.error != EPIPE)
cupsdLogMessage(CUPSD_LOG_DEBUG,
if ((ptr = strchr(filename, '?')) != NULL)
*ptr = '\0';
- if ((status = stat(filename, filestats)) != 0)
+ if ((status = lstat(filename, filestats)) != 0)
{
/*
* Drop the language prefix and try the root directory...
if ((ptr = strchr(filename, '?')) != NULL)
*ptr = '\0';
- status = stat(filename, filestats);
+ status = lstat(filename, filestats);
}
}
/*
- * If we're found a directory, get the index.html file instead...
+ * If we've found a symlink, 404 the sucker to avoid disclosing information.
+ */
+
+ if (!status && S_ISLNK(filestats->st_mode))
+ {
+ cupsdLogMessage(CUPSD_LOG_INFO, "[Client %d] Symlinks such as \"%s\" are not allowed.", con->http.fd, filename);
+ return (NULL);
+ }
+
+ /*
+ * Similarly, if the file/directory does not have world read permissions, do
+ * not allow access...
+ */
+
+ if (!status && !(filestats->st_mode & S_IROTH))
+ {
+ cupsdLogMessage(CUPSD_LOG_INFO, "[Client %d] Files/directories such as \"%s\" must be world-readable.", con->http.fd, filename);
+ return (NULL);
+ }
+
+ /*
+ * If we've found a directory, get the index.html file instead...
*/
if (!status && S_ISDIR(filestats->st_mode))
/*
- * End of "$Id: client.c 11642 2014-02-27 15:57:59Z msweet $".
+ * End of "$Id: client.c 12009 2014-07-09 17:02:38Z msweet $".
*/
/*
- * "$Id: conf.c 11488 2013-12-22 05:04:41Z msweet $"
+ * "$Id: conf.c 11932 2014-06-16 16:13:06Z msweet $"
*
* Configuration routines for the CUPS scheduler.
*
{ "MaxJobs", &MaxJobs, CUPSD_VARTYPE_INTEGER },
{ "MaxJobsPerPrinter", &MaxJobsPerPrinter, CUPSD_VARTYPE_INTEGER },
{ "MaxJobsPerUser", &MaxJobsPerUser, CUPSD_VARTYPE_INTEGER },
- { "MaxJobTime", &MaxJobTime, CUPSD_VARTYPE_INTEGER },
+ { "MaxJobTime", &MaxJobTime, CUPSD_VARTYPE_TIME },
{ "MaxLeaseDuration", &MaxLeaseDuration, CUPSD_VARTYPE_TIME },
{ "MaxLogSize", &MaxLogSize, CUPSD_VARTYPE_INTEGER },
{ "MaxRequestSize", &MaxRequestSize, CUPSD_VARTYPE_INTEGER },
/*
- * End of "$Id: conf.c 11488 2013-12-22 05:04:41Z msweet $".
+ * End of "$Id: conf.c 11932 2014-06-16 16:13:06Z msweet $".
*/
/*
- * "$Id: dirsvc.c 11688 2014-03-05 21:11:32Z msweet $"
+ * "$Id: dirsvc.c 11906 2014-06-09 18:33:24Z msweet $"
*
* Directory services routines for the CUPS scheduler.
*
if (BrowseLocalProtocols & BROWSE_SMB)
update_smb(1);
+#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
/*
* Register the individual printers
*/
dnssdRegisterAllPrinters(0);
+#endif /* HAVE_DNSSD || HAVE_AVAHI */
}
if (!Browsing || !BrowseLocalProtocols)
return;
+#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
/*
* De-register the individual printers
*/
* Shut down browsing sockets...
*/
-#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
if ((BrowseLocalProtocols & BROWSE_DNSSD) && DNSSDMaster)
dnssdStop();
#endif /* HAVE_DNSSD || HAVE_AVAHI */
if (i)
*bufptr++ = ',';
- strlcpy(bufptr, p->auth_info_required[i], bufsize - (bufptr - buffer));
+ strlcpy(bufptr, p->auth_info_required[i], bufsize - (size_t)(bufptr - buffer));
bufptr += strlen(bufptr);
}
/*
- * End of "$Id: dirsvc.c 11688 2014-03-05 21:11:32Z msweet $".
+ * End of "$Id: dirsvc.c 11906 2014-06-09 18:33:24Z msweet $".
*/
<OPTION VALUE="move-jobs">Mou totes les tasques</OPTION>
<OPTION VALUE="purge-jobs">Cancel·la totes les tasques</OPTION>
</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
+<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
</FORM>
<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
<OPTION VALUE="set-as-default">Configura com a servidor per defecte</OPTION>
<OPTION VALUE="set-allowed-users">Configura els permisos dels usuaris</OPTION>
</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
+<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
</FORM>
<TABLE SUMMARY="{printer_name}">
<OPTION VALUE="move-jobs">Přesun všech úloh</OPTION>
<OPTION VALUE="purge-jobs">Výmaz všech úloh</OPTION>
</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
+<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
</FORM>
<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
<OPTION VALUE="set-as-default">Nastavení jako výchozí na serveru</OPTION>
<OPTION VALUE="set-allowed-users">Nastavení přístupu uživatelů</OPTION>
</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
+<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
</FORM>
<TABLE SUMMARY="{printer_name}">
<OPTION VALUE="move-jobs">Alle Aufträge verschieben</OPTION>
<OPTION VALUE="purge-jobs">Alle Aufträge abbrechen</OPTION>
</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
+<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
</FORM>
<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
<OPTION VALUE="set-as-default">Als Standard festlegen</OPTION>
<OPTION VALUE="set-allowed-users">Erlaubte Benutzer festlegen</OPTION>
</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
+<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
</FORM>
<TABLE SUMMARY="{printer_name}">
<OPTION VALUE="move-jobs">Mover todos los trabajos</OPTION>
<OPTION VALUE="purge-jobs">Cancelar todos los trabajos</OPTION>
</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
+<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
</FORM>
<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
<OPTION VALUE="set-as-default">Poner como predeterminada del servidor</OPTION>
<OPTION VALUE="set-allowed-users">Establecer usuarios permitidos</OPTION>
</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
+<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
</FORM>
<TABLE SUMMARY="{printer_name}">
<OPTION VALUE="move-jobs">Transférer toutes les tâches</OPTION>
<OPTION VALUE="purge-jobs">Purger toutes les tâches</OPTION>
</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
+<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
</FORM>
<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
<OPTION VALUE="set-as-default">Définir par défaut</OPTION>
<OPTION VALUE="set-allowed-users">Définir les autorisations</OPTION>
</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
+<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
</FORM>
<TABLE SUMMARY="{printer_name}">
<OPTION VALUE="move-jobs">Sposta tutte le stampe</OPTION>
<OPTION VALUE="purge-jobs">Elimina tutte le stampe</OPTION>
</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
+<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
</FORM>
<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
<OPTION VALUE="set-as-default">Imposta come predefinita</OPTION>
<OPTION VALUE="set-allowed-users">Imposta gli utenti autorizzati</OPTION>
</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
+<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
</FORM>
<TABLE SUMMARY="{printer_name}">
<OPTION VALUE="move-jobs">すべてのジョブの移動</OPTION>
<OPTION VALUE="purge-jobs">すべてのジョブをキャンセル</OPTION>
</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
+<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="進む"></NOSCRIPT>
</FORM>
<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
<OPTION VALUE="set-as-default">サーバーのデフォルトの設定</OPTION>
<OPTION VALUE="set-allowed-users">許可するユーザーの設定</OPTION>
</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="進む" STYLE="display: none;">
+<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="進む"></NOSCRIPT>
</FORM>
<TABLE SUMMARY="{printer_name}">
<OPTION VALUE="move-jobs">Move All Jobs</OPTION>
<OPTION VALUE="purge-jobs">Cancel All Jobs</OPTION>
</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
+<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
</FORM>
<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
<OPTION VALUE="set-as-default">Set As Server Default</OPTION>
<OPTION VALUE="set-allowed-users">Set Allowed Users</OPTION>
</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
+<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
</FORM>
<TABLE SUMMARY="{printer_name}">
<OPTION VALUE="move-jobs">Mover todos trabalhos</OPTION>
<OPTION VALUE="purge-jobs">Cancelar todos trabalhos</OPTION>
</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Ir" STYLE="display: none;">
+<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Ir"></NOSCRIPT>
</FORM>
<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
<OPTION VALUE="set-as-default">Definir com padrão do servidor</OPTION>
<OPTION VALUE="set-allowed-users">Definir usuários permitidos</OPTION>
</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Ir" STYLE="display: none;">
+<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Ir"></NOSCRIPT>
</FORM>
<TABLE SUMMARY="{printer_name}">
<OPTION VALUE="move-jobs">Переместить все задания</OPTION>
<OPTION VALUE="purge-jobs">Закрыть все задания</OPTION>
</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
+<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
</FORM>
<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
<OPTION VALUE="set-as-default">Установить как принтер по умолчанию</OPTION>
<OPTION VALUE="set-allowed-users">Список разрешенных пользователей</OPTION>
</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
+<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
</FORM>
<TABLE SUMMARY="{printer_name}">