CHANGES.txt - 2008-07-21 ------------------------ CHANGES IN CUPS V1.3.8 - Documentation updates (STR #2785, STR #2861, STR #2862) - The scheduler did not add the ending job sheet when the job was released. - The IPP backend did not relay marker-* attributes. - The CUPS GNOME/KDE menu item was not localized for Chinese (STR #2880) - The CUPS GNOME/KDE menu item was not localized for Japanese (STR #2876) - The cupstestppd utility reported mixed line endings for Mac OS and Windows PPD files (STR #2874) - The pdftops filter did not print landscape orientation PDF pages correctly on all printers (STR #2850) - The scheduler did not handle expiring of implicit classes or their members properly, leading to a configuration where one of the members would have a short name (STR #2766) - The scheduler and cupstestppd utilities did not support cupsFilter and cupsPreFilter programs with spaces in their names (STR #2866) - Removed unused variables and assignments found by the LLVM "clang" tool. - Added NULL checks recommended by the LLVM "clang" tool. - The scheduler would crash if you started a printer that pointed to a backend that did not exist (STR #2865) - The ppdLocalize functions incorrectly mapped all generic locales to country-specific locales. - The cups-driverd program did not support Simplified Chinese or Traditional Chinese language version strings (STR #2851) - Added an Indonesian translation (STR #2792) - Fixed a timing issue in the backends that could cause data corruption with the CUPS_SC_CMD_DRAIN_OUTPUT side-channel command (STR #2858) - The scheduler did not support "HostNameLookups" with all of the boolean names (STR #2861) - Fixed a compile problem with glibc 2.8 (STR #2860) - The PostScript filter did not support %%IncludeFeature lines in the page setup section of each page (STR #2831) - The scheduler did not generate printer-state events when the default printer was changed (STR #2764) - cupstestppd incorrectly reported a warning about the PPD format version in some locales (STR #2854) - cupsGetPPD() and friends incorrectly returned a PPD file for a class with no printers. - The member-uris values for local printers in a class returned by the scheduler did not reflect the connected hostname or port. - The CUPS PHP extension was not thread-safe (STR #2828) - The scheduler incorrectly added the document-format-default attribute to the list of "common" printer attributes, which over time would slow down the printing system (STR #2755, STR #2836) - The cups-deviced and cups-driverd helper programs did not set the CFProcessPath environment variable on Mac OS X (STR #2837) - "lpstat -p" could report the wrong job as printing (STR #2845) - The scheduler would crash when some cupsd.conf directives were missing values (STR #2849) - The web interface "move jobs" operation redirected users to the wrong URL (STR #2815) - The Polish web interface translation contained errors (STR #2815) - The scheduler did not report PostScript printer PPDs with filters as PostScript devices. - The scheduler did not set the job document-format attribute for jobs submitted using Create-Job and Send-Document. - cupsFileTell() did not work for log files opened in append mode (STR #2810) - The scheduler did not set QUERY_STRING all of the time for CGI scripts (STR #2781, STR #2816) - The scheduler now returns an error for bad job-sheets values (STR #2775) - Authenticated remote printing did not work over domain sockets (STR #2750) - The scheduler incorrectly logged errors for print filters when a job was canceled (STR #2806, #2808) - The scheduler no longer allows multiple RSS subscriptions with the same URI (STR #2789) - The scheduler now supports Kerberized printing with multiple server names (STR #2783) - "Satisfy any" did not work in IPP policies (STR #2782) - The CUPS imaging library would crash with very large images - more than 16Mx16M pixels (STR #2805) - The PNG image loading code would crash with large images (STR #2790) - The scheduler did not limit the total number of filters. - The scheduler now ensures that the RSS directory has the correct permissions. - The RSS notifier did not quote the feed URL in the RSS file it created (STR #2801) - The web interface allowed the creation and cancellation of RSS subscriptions without a username (STR #2774) - Increased the default MaxCopies value on Mac OS X to 9999 to match the limit imposed by the print dialog. - The scheduler did not reject requests with an empty Content-Length field (STR #2787) - The scheduler did not log the current date and time and did not escape special characters in request URIs when logging bad requests to the access_log file (STR #2788) CHANGES IN CUPS V1.3.7 - CVE-2008-0047: cgiCompileSearch buffer overflow (STR #2729) - CVE-2008-1373: CUPS GIF image filter overflow (STR #2765) - Updated the "make check" tests to do a more thorough automated test. - cups-driverd complained about missing directories (STR #2777) - cupsaddsmb would leave the Samba username and password on disk if no Windows drivers were installed (STR #2779) - The Linux USB backend used 100% CPU when a printer was disconnected (STR #2769) - The sample raster drivers did not properly handle SIGTERM (STR #2770) - The scheduler sent notify_post() messages too often on Mac OS X. - Kerberos access to the web interface did not work (STR #2748) - The scheduler did not support "AuthType Default" in IPP policies (STR #2749) - The scheduler did not support the "HideImplicitMembers" directive as documented (STR #2760) - "make check" didn't return a non-zero exit code on error (STR #2758) - The scheduler incorrectly logged AUTH_foo environment variables in debug mode (STR #2751) - The image filters inverted PBM files (STR #2746) - cupsctl would crash if the scheduler was not running (STR #2741) - The scheduler could crash when printing using a port monitor (STR #2742) - The scheduler would crash if PAM was broken (STR #2734) - The image filters did not work with some CMYK JPEG files produced by Adobe applications (STR #2727) - The Mac OS X USB backend did not work with printers that did not report a make or model. - The job-sheets option was not encoded properly (STR #2715) - The scheduler incorrectly complained about missing LSB PPD directories. CHANGES IN CUPS V1.3.6 - Documentation updates (STR #2646, STR #2647, STR #2649) - Fixed a problem with the web interface "Use Kerberos Authentication" check box (STR #2703) - The scheduler unconditionally overwrote the printer-state- message with "process-name failed" when a filter or backend failed, preventing a useful error message from being shown to the user. - Policies on CUPS-Move-Job didn't work as expected (STR #2699) - The configure script only supported D-BUS on Linux (STR #2702) - The scheduler did not support </LimitExcept> (STR #2701) - The scheduler did not reset the job-hold-until attribute after a job's hold time was reached. - The scheduler did not support printer supply attributes (STR #1307) - The Kerberos credentials provided by some Windows KDCs were still too large - now use a dynamic buffer to support credentials up to 64k in size (STR #2695) - Printing a test page from the web interface incorrectly defaulted to the "guest" user (STR #2688) - The cupsEncodeOptions2() function did not parse multiple- value attribute values properly (STR #2690) - The scheduler incorrectly sent printer-stopped events for status updates from the print filters (STR #2680) - The IPP backend could crash when handling printer errors (STR #2667) - Multi-file jobs did not print to remote CUPS servers (STR #2673) - The scheduler did not provide the Apple language ID to job filters. - Kerberos authentication did not work with the web interface (STR #2606, STR #2669) - The requesing-user-name-allowed and -denied functionality did not work for Kerberos-authenticated usernames (STR #2670) - CUPS didn't compile on HP-UX 11i (STR #2679) - cupsEncodeOptions2() did not handle option values like "What's up, doc?" properly. - Added lots of memory allocation checks (Fortify) - The scheduler would crash if it was unable to add a job file (Fortify) - ppdOpen*() did not check all memory allocations (Coverity) - ippReadIO() did not check all memory allocations (Coverity) - The PostScript filter did not detect read errors (Coverity) - The scheduler did not check for a missing job-sheets-completed attribute when sending an event notification (Coverity) - "Set Printer Options" might not work with raw queues (Coverity) - cupsRasterInterpretPPD() could crash on certain PostScript errors (Coverity) - The USB backend did not check for back-channel support properly on all systems (Coverity) - Fixed memory leaks in the GIF and PNM image loading code (Coverity) - Removed some dead code in the CUPS API and scheduler (Coverity) - Fixed two overflow bugs in the HP-GL/2 filter (Coverity) - Fixed another ASN1 string parsing bug (STR #2665) - The RSS notifier directory was not installed with the correct permissions. - The standard CUPS backends could use 100% CPU while waiting for print data (STR #2664) - Filename-based MIME rules did not work (STR #2659) - The cups-polld program did not exit if the scheduler crashed (STR #2640) - The scheduler would crash if you tried to set the port-monitor on a raw queue (STR #2639) - The scheduler could crash if a polled remote printer was converted to a class (STR #2656) - The web interface and cupsctl did not correctly reflect the "allow printing from the Internet" state (STR #2650) - The scheduler incorrectly treated MIME types as case- sensitive (STR #2657) - The Java support classes did not send UTF-8 strings to the scheduler (STR #2651) - The CGI code did not handle interrupted POST requests properly (STR #2652) - The PostScript filter incorrectly handled number-up when the number of pages was evenly divisible by the number-up value. - The PDF filter incorrectly filtered pages when page-ranges and number-up were both specified (STR #2643) - The IPP backend did not handle printing of pictwps files to a non-Mac CUPS server properly. - The scheduler did not detect network interface changes on operating systems other than Mac OS X (STR #2631) - The scheduler now logs the UNIX error message when it is unable to create a request file such as a print job. - Added support for --enable-pie on Mac OS X. CHANGES IN CUPS V1.3.5 - The SNMP backend did not check for negative string lengths (STR #2589) - The scheduler incorrectly removed auth-info attributes, potentially leading to a loss of all options for a job. - The scheduler stopped sending CUPS browse packets on a restart when using fixed addresses (STR #2618) - Fixed PDF filter security issues (CVE-2007-4352 CVE-2007-5392 CVE-2007-5393) - Changing settings would always change the DefaultAuthType and Allow lines (STR #2580) - The scheduler would crash when submitting an undefined format file from Samba with LogLevel debug2 (STR #2600) - The scheduler did not use poll() when epoll() was not supported by the running kernel (STR #2582) - Fixed a compile problem with Heimdal Kerberos (STR #2592) - The USB backend now retries connections to a printer indefinitely rather than stopping the queue. - Printers with untranslated JCL options were not exported to Samba correctly (STR #2570) - The USB backend did not work with some Minolta USB printers (STR #2604) - The strcasecmp() emulation code did not compile (STR #2612) - The scheduler would crash if a job was sent to an empty class (STR #2605) - The lpc command did not work in non-UTF-8 locales (STR #2595) - Subscriptions for printer-stopped events also received other state changes (STR #2572) - cupstestppd incorrectly reported translation errors for the "en" locale. - ppdOpen() did not handle custom options properly when the Custom attribute appeared before the OpenUI for that option. - The scheduler could crash when deleting a printer or listing old jobs. - The Mac OS X USB backend did not allow for requeuing of jobs submitted to a class. - lpmove didn't accept a job ID by itself. - The scheduler incorrectly removed job history information for remote print jobs. - The scheduler incorrectly sent the "com.apple.printerListChanged" message for printer state changes. - The PostScript filter drew the page borders (when enabled) outside the imageable area. - The LPD and IPP backends did not default to the correct port numbers when using alternate scheme names. - The scheduler incorrectly deleted hardwired remote printers on system sleep. - The scheduler would abort if a bad browse protocol name was listed in the cupsd.conf file. - The online cupsd.conf help file incorrectly showed "dns-sd" instead of "dnssd" for Bonjour sharing. - The scheduler could crash changing the port-monitor value. - The scheduler generated CoreFoundation errors when run as a background process. - When printing with number-up > 1, it was possible to get an extra blank page. CHANGES IN CUPS V1.3.4 - Documentation updates (STR #2560, STR #2563, STR #2569) - CUPS now maps the "nb" locale to "no" on all platforms (STR #2575) - CUPS did not work with a Windows 2003 R2 KDC (STR #2568) - ippReadIO() could read past the end of a buffer (STR #2561) - The scheduler would crash on shutdown if it was unable to create a Kerberos context. - Multiple AuthTypes in cupsd.conf did not work (STR #2545) - The snmp.conf file referenced the wrong man page (STR #2564) - The cupsaddsmb program didn't handle domain sockets properly (STR #2556) - The scheduler now validates device URIs when adding printers. - Updated httpSeparateURI() to support hostnames with the backslash character. - Updated the Japanese localization (STR #2546) - The parallel backend now gets the current IEEE-1284 device ID string on Linux (STR #2553) - The IPP backend now checks the job status at variable intervals (from 1 to 10 seconds) instead of every 10 seconds for faster remote printing (STR #2548) - "lpr -p" and "lpr -l" did not work (STR #2544) - Compilation failed when a previous version of CUPS was installed and was included in the SSL include path (STR #2538) - The scheduler did not reject requests with charsets other than US-ASCII or UTF-8, and the CUPS API incorrectly passed the locale charset to the scheduler instead of UTF-8 (STR #2537) - cups-deviced did not filter out duplicate devices. - The AppleTalk backend incorrectly added a scheme listing when AppleTalk was disabled or no printers were found. - The PostScript filter generated N^2 copies when the printer supported collated copies and user requested reverse-order output. - The scheduler did not reprint all of the files in a job that was held. - The scheduler did not update the printcap file after removing stale remote queues. - The cupsd.conf man page incorrectly referenced "AuthType Kerberos" instead of "AuthType Negotiate". CHANGES IN CUPS V1.3.3 - The scheduler did not use the attributes-natural-language attribute when passing the LANG environment variable to cups-deviced or cups-driverd. - The scheduler did not use the printer-op-policy when modifying classes or printers (STR #2525) - The auth-info-required attribute was not always updated for remote queues that required authentication. - The German web interface localization contained errors (STR #2523) - The Swedish localization contained errors (STR #2522) CHANGES IN CUPS V1.3.2 - The 1.3.1 release was incorrectly created from the 1.4.x source tree (STR #2519) - Added support for 32/64-bit libraries on HP-UX (STR #2520) - The scheduler incorrectly used portrait as the default orientation (STR #2513) - The scheduler no longer writes the printcap file for every remote printer update (STR #2512) - Remote raw printing with multiple copies did not work (STR #2518) - Updated the configure script to require at least autoconf 2.60 (STR #2515) - Some gzip'd PPD files were not read in their entirety (STR #2510) CHANGES IN CUPS V1.3.1 - Documentation updates. - The USB backend on Mac OS X could hang if the driver and printer did not match. - Delegated Kerberos credentials were not working. - "make distclean" incorrectly removed the edit-config.tmpl files (STR #2508) - Fix compile problem on HP-UX (STR #2501) - The cupstestppd utility now tests for resolutions greater than 99999 DPI to detect a missing "x" between the X and Y resolutions. - Fixed many problems in the various translations and added a new "checkpo" utility to validate them. - The cupstestppd utility now tests the custom page size code for CUPS raster drivers. - cupsLangDefault() did not attempt to return a language that was supported by the calling application. - If a remote printer stopped while a job was being sent, the local queue would also get stopped and the job re-queued, resulting in duplicate prints in some cases. - A few Apple-specific job options needed to be omitted when printing a banner page. - The new peer credential support did not compile on FreeBSD (STR #2495) - Direct links to help files did not set the current section so the table-of-contents was not shown. - The configure script did not support --localedir=foo (STR #2488) - The backends were not displaying their localized messages. - CUPS-Authenticate-Job did not require Kerberos authentication on queues protected by Kerberos. - The Zebra ZPL driver did not work with Brady label printers (STR #2487) - Norwegian wasn't localized on Mac OS X. - getnameinfo() returns an error on some systems when DNS is not available, leading to numerous problems (STR #2486) - The cupsfilter command did not work properly on Mac OS X. - The scheduler makefile contained a typo (STR #2483) - The TBCP and BCP port monitors did not handle the trailing CTRL-D in some PostScript output properly. - Fixed the localization instructions and German template for the "Find New Printers" button (STR #2478) - The web interface did not work with the Chinese localization (STR #2477) - The web interface home page did not work for languages that were only partially localized (STR #2472) - Updated the Spanish web interface localization (STR #2473) - ppdLocalize() did not work for country-specific localizations. CHANGES IN CUPS V1.3.0 - The scheduler did not handle out-of-file conditions gracefully when accepting new connections, leading to heavy CPU usage. - The scheduler did not detect ServerBin misconfigurations (STR #2470) - "AuthType Default" did not work as expected when the "DefaultAuthType foo" line appeared after it in the cupsd.conf file. - The on-line help did not describe many common printing options (STR #1846) - The IPP backend did not return the "auth required" status when printing to a Kerberos-protected queue. - The scheduler was not looking in the correct directories for LSB PPD files (STR #2464) - Changed references to ESP Ghostscript to GPL Ghostscript (STR #2463) - The PostScript filter did not cleanly terminate when the job was canceled or stopped. - Fixed generation of Kerberos credentials for remote printing. Note that this requires a recent version of MIT Kerberos with a working krb5_cc_new_unique() function or Heimdal Kerberos. - Added Portuguese and updated Italian message catalogs. CHANGES IN CUPS V1.3rc2 - Added more range checking to the pdftops filter. - The scheduler would crash if a remote IPP queue was stopped (STR #2460) - The scheduler did not allow "DefaultAuthType None". CHANGES IN CUPS V1.3rc1 - Updated the German localization (STR #2443) - cupsAdminGetServerSettings() did not handle </Foo> properly. - When lprm and cancel are run with no job ID, they now will cancel the first stopped job if no pending or processing jobs are left in the queue. - The scheduler now logs successful print jobs, filter failures, and the job file types at the default log level (STR #2458) - The scheduler now logs the usernames it is using for authorization at LogLevel debug instead of debug2 (STR #2448) - Added Intellitech Intellibar and Zebra CPCL PPDs to the list of installed PPDs. - Added 6" and 8" wide label sizes for the Zebra ZPL Label Printer driver (STR #2442) - The cupsaddsmb program and web interface now support exporting of 64-bit Windows drivers, when available (STR #2439) - Moving a job that was printing did not stop the job on the original printer (STR #2262) - The cups-lpd mini-daemon did not work on Mac OS X server. - Added httpGetAuthString() and httpSetAuthString() APIs to get and set the current (cached) authorization string to use for HTTP requests. - Updated the default cupsd.conf policy to list the "administrative" operations separately from the "printer control" operations so that it is easier to define a group of users that are "printer operators". - The web interface now pulls the default cupsd.conf file from cupsd.conf.default in the CUPS config directory. - Added a help file for using Kerberos with CUPS. - The scheduler now strips the "@KDC" portion of Kerberos usernames since those usernames typically do not appear in the group membership lists used by CUPS. - cupsMarkOptions() could (incorrectly) leave multiple option choices marked. - Backends could (incorrectly) run as root during discovery (STR #2454) - Avahi is now supported for DNS-SD (Bonjour) printer sharing (STR #2455) - The default cupsd.conf file had typos and old operation names (STR #2450) - The scheduler now erases authentication cache files using the 7-pass US DoD algorithm. - Delegated Kerberos credentials (proxy authentication) did not work. - The filter makefile did not optimize the libcupsimage.2.dylib with a sectorder file. - The IPP backend incorrectly wrote an empty printer message when processing the "none" state reason. - The USB backend could deadlock on Mac OS X while performing a side-channel command. - The scheduler did not prevent remote queues from being shared/published. - The scheduler did not remove the temporary request file on authentication errors. - ppdLocalizeIPPReason() did not handle "scheme:" schemes or "file" URLs. - ppdLocalizeIPPReason() was not exported on Mac OS X. CHANGES IN CUPS V1.3b1 - Copyright updates - CUPS is now owned by Apple Inc. - Documentation updates (STR #1775, STR #2027, STR #2130, STR #2131, STR #2263, STR #2356, STR #2397) - Added new cupsfilter utility (STR #1734) - Added new job-printer-state-message and job-printer-state-reasons attributes to jobs (STR #2418) - Added LDAP+SSL support (STR #1967) - CUPS now supports authentication via peer credentials over domain sockets (STR #2242, STR #2277) - The CUPS sample driver PPDs are now generated by the PPD compiler and include all of the localized languages by default (STR #2164) - You can now specify "AuthType Default" in the cupsd.conf file to use the default authentication defined by the DefaultAuthType directive. - The SNMP backend no longer adds a default Address line when none is specified in the snmp.conf file; this allows the backend to be easily disabled as needed (STR #2434) - Added a new cupsctl command for doing basic changes to the cupsd.conf file (STR #1777) - Added a new ppdLocalizeIPPReason() function to get the localized text/URI for a given IPP reason keyword for a driver. - Removed the deskjet2.ppd driver, as it only worked with a very small subset of HP DeskJet printers and was confusing to users. The rastertohp driver still supports the deskjet2.ppd options for existing queues. - The scheduler did not add a trailing banner page if a client did not specify the last document in a job (STR #1711) - The scheduler did not report Bonjour shared printers as remote printers (STR #2384) - Added new -R and -W options to the cupstestppd program for greater control over the testing of PPDs. - Added a new cupsGetServerPPD() function for getting an available PPD from the server (STR #2334) - Added a new cupsDoIORequest() function for reading and writing files via IPP requests (STR #2334) - Added a new CUPS_GET_PPD operation for getting an available PPD file on the server (STR #2334) - CUPS_GET_PPDS now reports multiple ppd-product values based on the PPD ModelName and Product strings (STR #2334, STR #2383) - CUPS_GET_PPDS now reports the PSVersion attributes from a PPD file in the ppd-psversion attribute (STR #2334) - CUPS_GET_PPDS now reports the cupsModelNumber attribute from a PPD file in the ppd-model-number attribute (STR #2383) - CUPS_GET_PPDS now reports a driver type string in the ppd-type attribute based on the cupsFax and cupsFilter attributes in a PPD file (STR #2383) - Added a new printer attribute called "cups-version" which reports the version of CUPS that is running (STR #2240) - backendRunLoop() now aborts immediately on SIGTERM if no data has been written yet (STR #2103) - Due to poor IPP support from the vendors, the SNMP backend no longer tries IPP connections; instead, it now uses a lookup file with fallback to port 9100 (socket://address) and 515 (lpd://address) printing (STR #2035, STR #2354) - The scheduler now recreates the CUPS log directory as needed (STR #2353) - cupsLangDefault() now maps new-style Apple locale names to the traditional ll_CC form (STR #2357) - Add new cupsArrayNew2() API to support hashed lookups of array elements (STR #2358) - ppdConflicts() optimizations (STR #2358) - The cupstestppd program now tests for existing filters, icons, profiles, and dialog extensions (STR #2326) - The web interface no longer lists new printers on the main administration page. Instead, a new "List Available Printers" button is provided that shows a separate page with the list of printers. - The web interface now supports setting the banner and policy options on raw printers and classes (STR #2238) - The socket backend now reads any pending back-channel data before shutting down the socket (STR #2325) - Added a new ErrorPolicy directive in the cupsd.conf file (STR #1871) - Printers that use JCL options are now exported to Samba correctly (STR #1985) - The IPP backend now relays printer-state-message values from the server to the client (STR #2109) - Added support for the PWG printer-alert and printer-alert-description attributes (STR #2088) - Added support for LPD "stream" mode (STR #2036) - The scheduler now reports the PostScript product string from PPD files in CUPS-Get-PPDs responses (STR #1900) - Raw printing with queues pointing to the file pseudo- device and multiple files and/or banners now works (STR #1933) - Added new public cupsAdminGetServerSettings() and cupsAdminSetServerSettings() APIs. - Added new "makebuttons" script in the "tools" directory for creating web interface buttons (STR #2231) - Added support for DNS-SD (aka "Bonjour") printer sharing (STR #1171) - Job operations (cancel, hold, release, etc.) from the web interface now return back to the original page (STR #2239) - The classes or printers list is now shown after a successful deletion from the web interface (STR #1999) - The default configuration now allows browse packets from any address (STR #2008) - The web interface now provides an "allow printing from the Internet" check box (STR #1897) - The notify-events-default and notify-lease-duration-default attributes can now be set (STR #1671) - Server-side default options are now sent to clients when the "printer-defaults" attribute group is requested (STR #1923) - Added support for Linux "relro" linker option (STR #1614) - CUPS now validates the number-up option value (STR #1329) - The on-line help now provides better search capabilities (STR #1701) - The web interface "Add This Printer" button now allows you to change the printer name, description, and location (STR #1646) - Added support for Mac OS X authorization services (STR #2206) - Added support for driver-specific pre-filters (STR #2108) - Added a new side-channel API for drivers and backends for basic device control and information queries (STR #1898) - The scheduler now uses poll(), epoll(), or /dev/kqueue instead of select() when possible (STR #1261) - Added new cupsArrayGetIndex() and cupsArrayGetInsert() functions to get the current index and insertion positions of an array. - Added a new --with-max-copies configure option (STR #2090) - Added new cupsRemoveDest() and cupsSetDefaultDest() functions. - Added support for cupsPJLCharset attribute in PPD files which specifies the character set that is used in PJL strings (STR #1969) - Moved the definition of the (private) _http_s structure to http-private.h; code that directly accesses the http_t members will no longer compile! - Added support for setting the document-format-default attribute on a per-printer basis. - Added support for IntelliBar label printers.