New in version 2.0.2

February 10th, 2015
  • Security: cupsRasterReadPixels buffer overflow with invalid page header and compressed raster data (STR #4551)
  • Command-line programs were not localized on Mac OS X ()
  • The scheduler incorrectly cleared the MakeModel string in the printers.conf file after a restart ()
  • CUPS did not compile with older versions of GNU TLS (STR #4527)
  • CUPS did not compile without Avahi or mDNSResponder (STR #4523)
  • ippLength() did not return the correct length for IPP_TAG_CONST string values.
  • The scheduler incorrectly aborted jobs after a job was restarted ()
  • The cups-files.conf file contained the old ServerCertificate/Key directives instead of ServerKeychain.
  • Fixed builds when no SSL/TLS library is available, or when explicitly disabled (STR #4531)
  • Fixed an OpenBSD charset transcoding issue.
  • Fixed USB printing on OpenBSD (STR #4525)
  • The --without-xinetd configure option did not work (STR #4542)
  • Backends needing to load OS X kernel extensions did not work ()
  • Mapping of PPD keywords to IPP keywords did not work if the PPD keyword was already an IPP keyword ()
  • cupsGetPPD* sent bad requests (STR #4567)
  • ippserver used the wrong temporary directory on Windows (STR #4547)
  • ippserver did not handle Bonjour registrations properly (STR #4548)
  • The scheduler could crash during shutdown if Avahi was shutdown first (STR #4550)
  • Added a USB quirk rule for Intermec printers (STR #4553)
  • The scheduler did not always log which configuration file had the error (STR #4559)
  • The ippfind and ipptool programs now correctly match hostnames with trailing dots (STR #4563)
  • The ipptool timeout option did not work (STR #4515)
  • Fixed several issues with client.conf, CUPS_SERVER, and the "-h" option of most commands (STR #4528)
  • Another change for OpenBSD (STR #4526)
  • Added Japanese localization (STR #4524)
  • Documentation changes (STR #4569)

New in version 2.0.1 (November 15th, 2014)

  • Security: SSLv3 is now disabled by default to protect against the POODLE attack (STR #4476)
  • Printer sharing did not work when systemd was being used (STR #4497)
  • cupsGetPPD* would return a symlink to the PPD in /etc/cups/ppd even if it was not readable by the user (STR #4500)
  • The web interface now protects against frame "click-jacking" attacks (STR #4492)
  • Fixed a crash in ippAttributeString ()
  • Fixed a crash in the scheduler on Linux/*BSD if colord was not running (STR #4496)
  • Fixed a random crash in the scheduler when not using systemd (STR #4484)
  • Added systemd support for cups-lpd (STR #4493)
  • The scheduler did not honor the FatalErrors directive for misconfigured Group and SystemGroup values (STR #4495)
  • The network backends no longer report waste-receptacle conditions when using SNMP (STR #4499)
  • The IPP backend did not work with some configurations of Windows (STR #4503)
  • RPMs did not build (STR #4490)
  • Added a USB quirk rule for the Brother HL-1250 (STR #4519)
  • Fixed compiles on unsupported platforms (STR #4510)
  • "cancel -a" did not cancel all jobs on all destinations (STR #4513)
  • The web interface did not work on OpenBSD (STR #4496)

New in version 2.0.0 (October 2nd, 2014)

  • The scheduler did not preserve listener sockets from launchd or systemd after a restart ()
  • Added some USB quirk rules for the libusb-based USB backend (STR #4482)
  • Spanish localization update (STR #4487)
  • Updated documentation for 2.0.0 release.

New in version 2.0 Beta 1 (July 31st, 2014)

  • The CUPS library now provides a complete set of APIs for implementing HTTP and IPP services, and the scheduler uses those APIs to provide a modest code size reduction and corresponding improvement in performance. The scheduler is now also launched on demand on Linux, so for most users cupsd will only be running if something is being printed.
  • SSL/TLS support has been largely re-written to support certificate validation and policy enforcement, and on the server side we can now use different certificates depending on the hostname used. OpenSSL support has been dropped for a number of technical and security reasons.
  • IPP Everywhere support has been expanded to support long-edge feed printers and automatic retries using PWG Raster as needed. Finally, the ipptool utility has been updated with features needed to support IPP Everywhere printer self-certification.

New in version 1.7.5 (July 31st, 2014)

  • Added a "--list-filters" option to the cupsfilter command (STR #4325)
  • Added systemd support (STR #3917)
  • Added support for re-sending a job as a raster file if a higher-level format such as PDF fails ()
  • Added support for regular expression matching in the MIME type rules ()
  • Added support for TLS certificate validation and policy enforcement (STR #1616)
  • Added support for simultaneous XML and test output from ipptool.
  • Added support for PAUSE directive in ipptool test files.
  • Added support for auto-typing of TIFF files by ipptool (STR #4418)
  • The scheduler now returns completed jobs in the correct newest-to-oldest order (STR #4396)
  • The configure script now supports target-specific tools for pkg-config and others (STR #4423)
  • The ipptool program now supports EXPECT statements for collection member attributes ()
  • The ipptool program now supports collection attributes with multiple values ()
  • The sample drivers now include all of the installed localizations by default ()
  • Adopted Linux man page conventions and updated all man pages (STR #4372, STR #4329)
  • The scheduler now supports the "first-index" operation attribute for the Get-Jobs operation (STR #2913)
  • Changed the default AccessLogLevel and PageLogFormat to disable the access_log and page_log files by default ()
  • cupsRasterInterpretPPD now supports the Orientation header in order to support long-edge feed raster printers ()
  • The scheduler now allows run-as-root backends to have group read and execute permissions (STR #2935)
  • The ippFindAttribute and ippFindNextAttribute functions now support hierarchical searches (STR #4395)
  • Dropped OpenSSL support in favor of GNU TLS.
  • Dropped "dark wake" support on OS X, which was preventing portables from going to sleep when there was a stuck job. We now use a variation of the CUPS 1.4 sleep support to do a cleaner sleep ()
  • Dropped support for AIX, HP-UX, and OSF/1 (aka Digital UNIX)
  • Dropped lppasswd and support for Digest authentication in in the scheduler (STR #4321)
  • The cupsGetClasses, cupsGetPrinters, and cupsTempFile functions are no longer supported.
  • The scheduler now caches more job history data and limits the number of completed jobs returned by Get-Jobs as needed in order to prevent a denial-of-service on busy servers (STR #2913)
  • The filter/backend sandbox on OS X now defaults to a more strict whitelist ()
  • Increased the default idle exit timeout to 60 seconds on OS X ()
  • Printer classes were not accessible on OS X ()
  • The scheduler now uses to close the default printer definition in printers.conf (STR #4153)
  • Canceling all jobs in the web interface now just cancels the jobs (STR #1914)

New in version 1.7.4 (July 15th, 2014)

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

New in version 1.7.3 (May 28th, 2014)

  • Added Brazilian Portuguese translation (STR #4409)
  • Fixed mapping of OutputBin values such as "Tray1" ()
  • Several ippGet* functions incorrectly returned -1 instead of 0 on error.
  • The cupsGetResponse function did not work properly with CUPS_HTTP_DEFAULT ()
  • The IPP backend did not abort a job when the printer did not validate the supplied options ()
  • 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)
  • IPP queues using hardcoded credentials would ask for credentials (STR #4371)
  • Dates in non-UTF-8 locales did not display correctly (STR #4388)
  • The RPM spec file now looks for libusb-devel 1.0 or later.
  • Fixed the "create-printer-subscription.test" file for IPPTOOL (STR #4420)

New in version 1.7.2 (April 11th, 2014)

  • Security: The scheduler now blocks URLs containing embedded HTML (STR #4356)
  • Documentation fixes (STR #3259, STR #4346, STR #4355)
  • Fixed the Japanese localization (STR #4385)
  • Added a German localization (STR #4363)
  • The cupsfilter command incorrectly read the cupsd.conf file; it now reads the cups-files.conf file instead.
  • Fixed OS X builds with Xcode 5.x ()
  • Fixed SSL support on Windows (STR #4358)
  • Fixed documentation and naming of Create-Job/Printer-Subscriptions operations (STR #4389)
  • Phone numbers in fax jobs were not properly filtered for IPP FaxOut ()
  • Fixed a memory leak in the label printer driver (STR #4393)
  • Updated Linux "relro" support (STR #4349)
  • cupsEnumDests did not set the "is_default" field (STR #4332)
  • cupsDoIORequest could miss the server status, causing failed lpadmin and other administrative commands (STR #4386)
  • cupsEnumDests didn't always call the callback function (STR #4380)
  • "lp -i job-id -H hold" did not work (STR #4401)
  • CUPS didn't compile on older platforms (STR #4338)
  • Several libcups files did not have the Apple license exception notice (STR #4361)
  • Fixed a D-BUS threading issue that caused the scheduler to crash (STR #4347)
  • The scheduler now automatically reconnects to Avahi as needed (STR #4370, STR #4373)
  • The scheduler did not handle GET requests for the log files properly (STR #3265)
  • The dnssd backend did not always report all discovered printers using Avahi (STR #4365)
  • The Zebra printer driver did not properly handle negative "label top" values (STR #4354)
  • The scheduler did not always update the MakeModel value in printers.conf after updating the driver (STR #4264)
  • The LPD mini daemon did not support print jobs larger than 2GB (STR #4351)
  • Fixed a bug in the status reading code when sending a compressed data stream to an IPP printer/server ()
  • The IPP backend might not include all job attributes in Validate-Job operations ()
  • Fixed some clang-reported issues ()

New in version 1.7.1 (January 9th, 2014)

  • Security: the lppasswd program incorrectly used settings from ~/.cups/client.conf (STR #4319)
  • Auto debug logging was broken in 1.7.0 ()
  • Some gzip'd PPD files could not be used ()
  • Cleaned up some job logging in the scheduler ()
  • ATTR messages could cause string pool memory corruption in the scheduler ()
  • The RPM spec file did not list the build requirements; this was on purpose, but now we are listing the Red Hat package names (, STR #4322)
  • Printing to a raw queue could result in corrupt output due to opportunistic compression ()
  • The GNU TLS support code triggered many compiler warnings due to the use of old GNU TLS compatibility type names ()
  • The "make check" test suite did not work on Linux without the cups-filters package installed ()
  • Japanese PPDs using with the Shift-JIS encoding did not work ()
  • "tel:" URIs incorrectly had slashes ()
  • The libusb-based USB backend incorrectly used write timeouts ()
  • Shared printers could become inaccessible after a few days on OS X ()
  • The IPP backend did not wait for a busy printer to become available before attempting to print ()
  • CUPS did not support "auto-monochrome" or "process-monochrome" for the "print-color-mode" option ()
  • Using "@IF(name)" in an Allow or Deny rule did not work (STR #4328)
  • lpq and lpstat did not list jobs in the correct order when priorities were specified (STR #4326)
  • The D-BUS notifier did not remove its lockfile (STR #4314)
  • CUPS incorrectly used the USER environment variable when the name did not match the user ID (STR #4327)

New in version 1.7.0 (October 25th, 2013)

  • Updated Japanese localization.
  • The lpadmin command did not send the PPD name from the "-m" option ()
  • Network backends now use the prtMarkerSuppliesClass property to determine the direction of supply level values ()
  • The scheduler did not remove backup PPD files when a printer was deleted ()
  • The scheduler incorrectly responded to HEAD requests when the web interface was disabled ()
  • The scheduler did not respond using the hostname specified by the client ()
  • Fax queues did not work when shared via Bonjour ()
  • Error messages from the scheduler were not localized using the language specified in the client's IPP request ()
  • Added an Italian localization ()
  • Fixed a couple memory leaks in ippfind that were reported by Clang.
  • Fixed a compile issue on 64-bit Linux with Clang - need to use the -pie option instead of -Wl,-pie now ()
  • The ippfind utility reported the wrong port numbers when compiled against Avahi ()
  • httpGetFd, httpGetFile, httpPutFd, and httpPutFile did not automatically reconnect if the server closed the connecion after the previous response.
  • Fixed a compile error in libcups ()
  • The scheduler incorrectly did not pass a FINAL_CONTENT_TYPE environment variable to the filters or backend ()
  • The cups-exec helper program could fail randomly on OS X due to sandbox violations when closing excess file descriptors ()
  • The scheduler incorrectly did not use the kqueue interface on OS X.

New in version 1.7 RC1 (July 12th, 2013)

  • This first release candidate for CUPS 1.7.0 includes the fixes from CUPS 1.6.3, adds a new ippfind utility, fixes some issues in the ipptool utility, and fixes some general printing bugs.

New in version 1.7 Beta 1 (April 19th, 2013)

  • The configure script now supports a --with-rundir option to change the transient run-time state directory from the default to other locations like /run/cups (STR #4306)
  • The scheduler now supports PPD lookups for classes (STR #4296)
  • The cupsfilter program did not set the FINAL_CONTENT_TYPE environment variable for filters.
  • Added a new "-x" option to the cancel command (STR #4103)
  • Made the PWG media handling APIs public (STR #4267)
  • Implemented ready media support for the cupsGetDestMediaXxx APIs (STR #4289)
  • Added new cupsFindDestDefault, cupsFindDestReady, and cupsFindDestSupported APIs (STR #4289)
  • Added new cupsGetDestMediaByIndex, cupsGetDestMediaCount, and cupsGetDestMediaDefault APIs (STR #4289)
  • Added new ippGet/SetOctetString APIs for getting and setting an octetString value (STR #4289)
  • Added new ippCreateRequestedArray API for generating a array of attributes from the requested-attributes attribute.
  • The ipptool utility now supports compression, conditional tests based on the presence of files, and new DEFINE predicates for STATUS.
  • Added new IPP APIs for checking values (STR #4167)
  • Added new IPP APis for adding and setting formatted strings.
  • Added new HTTP APIs to support basic server functionality via libcups.
  • The dnssd backend now generates a 1284 device ID as needed (STR #3702)
  • CUPS now supports compressing and decompressing streamed data (STR #4168)
  • CUPS now supports higher-level PIN printing, external accounting systems, and "print here" printing environments (STR #4169)
  • IRIX is no longer a supported operating system (STR #4092)
  • The PPD compiler now supports JCL options properly (STR #4115)
  • The web interface now checks whether the web browser has cookies enabled and displays a suitable error message (STR #4141)

New in version 1.6.2 (March 20th, 2013)

  • Documentation fixes (STR #4229, STR #4239, STR #4234, STR #4248, STR #4259)
  • Security: All file, directory, user, and group settings are now stored in a separate cups-files.conf configuration file that cannot be set through the CUPS web interface or APIs (STR #4223)
  • Added a Czech localization (STR #4201)
  • Added a French localization (STR #4247)
  • Added a Russian localization (STR #4228, STR #4285)
  • Updated the Catalan localization (STR #4202)
  • Local certificate authentication did not guard against an empty certification file (STR #4293)
  • The scheduler did not reject device URIs with spaces.
  • Added USB quirk rule for Epson Stylus Photo 750 (STR #4286)
  • The IPP backend could crash if the printer disconnects early (STR #4284)
  • cupsGetPPD did not work with statically-configured CUPS shared queues (STR #4178)
  • The scheduler did not support long MIME media types (STR #4270)
  • The cupsfilter command did not set the CHARSET environment variable for the text filters (STR #4273)
  • The lp command did not show errors for unknown "--foo" (STR #4261)
  • Bad IPP responses could crash ipptool (STR #4262)
  • Updated USB quirk rules for Canon and Xerox printers (STR #4217, STR #4263)
  • Added USB blacklisting for printers that require a custom backend (STR #4218)
  • The PPD compiler did not correctly JCL options (STR #4115, STR #4203)
  • The ipptool program now supports DEFINE-MATCH and DEFINE-NO-MATCH predicates for STATUS directives.
  • Fixed a problem with local Kerberos authentication (STR #4140)
  • Coverity scan: fixed some minor issues (STR #4242)
  • The scheduler did not remove color profiles after deleting a printer (STR #4232, STR #4276)
  • The CUPS library did not always detect a timed out connection to the server which could cause temporary loss of printing from applications (STR #4187)
  • The ipptool program now supports variable substitution in OPERATION and DELAY directives (STR #4175)
  • The IPP backend now stops queues when the server configuration prevents successful job submission (STR #4125)
  • The XML output of ipptool contained empty dictionaries (STR #4136)
  • The scheduler did not delete job control backup files (STR #4244)
  • cupsGetPPD3 could return a local PPD instead of the correct remote PPD.
  • The scheduler incorrectly advertised auth-info-required for local queues needing local authentication (STR #4205)
  • CUPS 1.6 clients using the ServerName directive in client.conf did not work with CUPS 1.3.x or older servers (STR #4231, STR #4291)
  • The SNMP backend now tries to work around broken printers that use a newline to separate key/value pairs.
  • The IPP backend did not send a cancel request to printers when a job was canceled and the printer did not support Create-Job.
  • Fixed EPM packaging files (STR #4199)
  • OpenBSD build fix (STR #4195, STR #4196, STR #4197)
  • The scheduler could crash when using Avahi (STR #4183, STR #4192, STR #4200, STR #4213)
  • The IPP backend could get stuck in an endless loop on certain network errors (STR #4194)
  • 32-bit builds failed on Debian (STR #4133)
  • The scheduler no longer accepts or sends job description attributes.
  • The IPP backend now works around some conformance issues for broken printers (STR #4190)
  • cupsBackendReport() now filters out all control characters from the reported 1284 device IDs (STR #4124)
  • The scheduler no longer allows job-name values that are not valid network Unicode strings (STR #4072)
  • The web interface did not preserve the order of classes, jobs, or printers (STR #4170)
  • The network backends now support disabling of SNMP supply level queries via the "snmp" URI option (STR #4106)
  • The IPP backend did not specify the compression used (STR #4181)
  • ipptool did not support octetString values.
  • The scheduler did not recognize dnssd: or ipps: URIs as Bonjour shared queues (STR #4158)
  • Applications could not get the PPD file for statically-configured Bonjour-shared print queues (STR #4159)
  • The cupsd.conf file included obsolete browsing directives (STR #4157)
  • Fixed a USB backend compatibility issue on systems using libusb (STR #4155, STR #4191)
  • Some Bonjour features were not available on systems with Avahi (STR #4156)
  • CUPS now includes the port number in the Host: header for HTTP requests.
  • Fixed REPEAT-MATCH for STATUS and EXPECT - was incorrectly erroring out.

New in version 1.6.0 (July 26th, 2012)

  • Document changes (STR #4131)
  • Added new Catalan (STR #4107) and Spanish (STR #4137) localizations.

New in version 1.5.2 (February 11th, 2012)

  • The new release fixes the tarballs released as CUPS 1.5.1, which through an error in the distribution script and a lack of secondary checks was tagged from trunk (CUPS 1.6.x) instead of the CUPS 1.5.x branch. The script has been updated with additional checks to prevent this from happening again, and the 1.5.2 release has been tagged from the correct branch.

New in version 1.5 Beta 2 (May 27th, 2011)

  • This version fixes a compilation problem on Linux, some localization issues, and some minor bugs.

New in version 1.4.6 (January 7th, 2011)

  • Fixed a "make check" issue on Solaris (STR #3729)
  • Regression: The pstops filter did not support landscape printing of PostScript files (STR #3722)
  • The scheduler killed retried (fax) jobs after restarting them (STR #3697)
  • The cupsAdminSetServerSettings() function disabled sharing when debug logging was enabled (STR #3712)

New in version 1.4.4 (June 18th, 2010)

  • CUPS 1.4.4 fixes several security, scheduler, printing, and conformance issues.

New in version 1.4.0 (August 29th, 2009)

  • Localization updates (STR #3223, STR #3246, STR #3248, STR #3250)
  • Documentation updates (STR #3225, STR #3230, STR #3242, STR #3260)
  • The --with-pdftops configure option did not accept a full path to the filter (STR #3278)
  • The banner filter did not position the back side image correctly (STR #3277)
  • The dnssd backend could crash (STR #3272)
  • The 1284 device ID sometimes contained trailing garbage (STR #3266)
  • The USB backend returned different URIs for some printers than in CUPS 1.3 (STR #3259)
  • The scheduler did not do local job-hold-until processing for remote queues (STR #3258)
  • The scheduler did not try all possible SSL certificates on Mac OS X.
  • The scheduler did not always remove a file descriptor when using the kqueue interface (STR #3256)
  • The scheduler did not protect against bad job control files in all cases (STR #3253)
  • The scheduler did not encode "+" in model names (STR #3254)
  • The web interface didn't show the default options (STR #3244)
  • The IPP and LPD backends needed print data before they would do an SNMP query.
  • Fixed a GNU TLS compatibility issue (STR #3231)
  • Fixed a HTML error in the add and modify printer web interface templates (STR #3229)
  • The scheduler did not minimize the number of printer state events that were generated by filter STATE: messages, which could lead to poor performance.
  • The USB backend on Mac OS X did not cleanly cancel a job.
  • The network backends now set the connecting-to-device printer-state- reasons value when looking up the address and copying the print data for consistency.
  • The scheduler now supports the com.apple.print.recoverable-warning reason on all platforms.

New in version 1.4 RC1 (June 9th, 2009)

  • The PPD compiler documentation was missing information on localization (STR #3212)
  • The IPP backend now reconnects after every request when talking to printers that claim IPP support but only use HTTP/1.0.
  • The PPD compiler crashed when both "Resolution" and "Group foo Option Resolution" were specified in the .drv file.
  • The PPD compiler's #if/#elif/#else/#endif did not work for undefined variables (STR #3210)
  • Static libraries could not be installed by a non-root user on systems needing a ranlib program (STR #3209)
  • The scheduler incorrectly always tried to copy Kerberos credentials for print jobs.
  • Updated the Spanish localization (STR #3204)
  • The scheduler crashed when getting the default paper size from libpaper (STR #3205, STR #3206)
  • The PPD compiler now defines six variables: CUPS_VERSION, CUPS_VERSION_MAJOR, CUPS_VERSION_MINOR, CUPS_VERSION_PATCH, PLATFORM_NAME, and PLATFORM_ARCH (STR #3203)
  • Fixed a whitespace skipping bug in cupsRasterInterpretPPD.
  • The scheduler did not return HTTP 403 (Forbidden) for authenticated users that were not authorized to do IPP operations (STR #3193)
  • The scheduler did not report more than 8 Product strings from a PPD file. Some PPD files have as many as 24.
  • ppdOpen*() could crash if a keyword had no value string (something that cupstestppd looks for...)
  • cupsLangDefault() did not return the correct language on Mac OS X.
  • The Mac OS X USB backend did not handle aborted or stalled pipe conditions properly, which prevented drivers from ejecting partial pages when a job was canceled or held.

New in version 1.4 Beta 2 (December 16th, 2008)

  • This release fixes several localization, scheduler, and utility issues, improves the performance of several key CUPS APIs, and adds a Spanish localization.

New in version 1.4 Beta 1 (October 28th, 2008)

  • This release has over 65 changes and new features compared to CUPS 1.3.x.