- Fixed certificate strings comparison for Local authorization (CVE-2022-26691)
- The
cupsFileOpen
function no longer opens files for append in read-write mode (Issue #291) - The cupsd daemon removed processing temporary queue (Issue #364)
- Fixed delay in IPP backend if GNUTLS is used and endpoint doesn't confirm closing the connection (Issue #365)
- Fixed conditional jump based on uninitialized value in cups/ppd.c (Issue #329)
- Fixed CSS related issues in CUPS Web UI (Issue #344)
- Fixed copyright in CUPS Web UI trailer template (Issue #346)
- mDNS hostname in device uri is not resolved when installaling a permanent IPP Everywhere queue (Issues #340, #343)
- The
lpstat
command now reports when the scheduler is not running (Issue #352) - Updated the man pages concerning the
-h
option (Issue #357) - Re-added LibreSSL/OpenSSL support (Issue #362)
- Updated the Solaris smf service file (Issue #368)
- Fixed a regression in lpoptions option support (Issue #370)
- The scheduler now regenerates the PPD cache information after changing the "cupsd.conf" file (Issue #371)
- Updated the scheduler to set "auth-info-required" to "username,password" if a backend reports it needs authentication info but doesn't set a method for authentication (Issue #373)
- Updated the configure script to look for the OpenSSL library the old way if pkg-config is not available (Issue #375)
- Fixed the prototype for the
httpWriteResponse
function (Issue #380) - Brought back minimal AIX support (Issue #389)
cupsGetResponse
did not always set the last error.- Fixed a number of old references to the Apple CUPS web page.
- Restored the default/generic printer icon file for the web interface.
- Removed old stylesheet classes that are no longer used by the web interface.
- The default color mode now is now configurable and defaults to the printer's reported default mode (Issue #277)
- Configuration script now checks linking for -Wl,-pie flags (Issue #303)
- Fixed memory leaks - in testi18n (Issue #313), in
cups_enum_dests()
(Issue #317), in_cupsEncodeOption()
andhttp_tls_upgrade()
(Issue #322) - Fixed missing bracket in de/index.html (Issue #299)
- Fixed typos in configuration scripts (Issues #304, #316)
- Removed remaining legacy code for
RIP_MAX_CACHE
environment variable (Issue #323) - Removed deprecated directives from cupsctl and cups-files.conf (Issue #300)
- Removed
purge-jobs
legacy code from CGI scripts and templates (Issue #325)
- Added configure option --with-idle-exit-timeout (Issue #294)
- Added --with-systemd-timeoutstartsec configure option (Issue #298)
- DigestOptions now are applied for MD5 Digest authentication defined by RFC 2069 as well (Issue #287)
- Fixed compilation on Solaris (Issue #293)
- Fixed and improved German translations (Issue #296, Issue #297)
- Added warning and debug messages when loading printers if the queue is raw or with driver (Issue #286)
- Compilation now uses -fstack-protector-strong if available (Issue #285)
- Added support for CUPS running in a Snapcraft snap.
- Added basic OAuth 2.0 client support (Issue #100)
- Added support for AirPrint and Mopria clients (Issue #105)
- Added configure support for specifying systemd dependencies in the CUPS service file (Issue #144)
- Added several features and improvements to
ipptool
(Issue #153) - Added a JSON output mode for
ipptool
. - The
ipptool
command now correctly reports an error when a test file cannot be found. - CUPS library now uses thread safe
getpwnam_r
andgetpwuid_r
functions (Issue #274) - Fixed Kerberos authentication for the web interface (Issue #19)
- The ZPL sample driver now supports more "standard" label sizes (Issue #70)
- Fixed reporting of printer instances when enumerating and when no options are set for the main instance (Issue #71)
- Reverted USB read limit enforcement change from CUPS 2.2.12 (Issue #72)
- The IPP backend did not return the correct status code when a job was canceled at the printer/server (Issue #74)
- The
testlang
unit test program now loops over all of the available locales by default (Issue #85) - The
cupsfilter
command now shows error messages when options are used incorrectly (Issue #88) - The PPD functions now treat boolean values as case-insensitive (Issue #106)
- Temporary queue names no longer end with an underscore (Issue #110)
- The USB backend now runs as root (Issue #121)
- Added pkg-config file for libcups (Issue #122)
- Fixed a PPD memory leak caused by emulator definitions (Issue #124)
- Fixed a
DISPLAY
bug inipptool
(Issue #139) - The scheduler now includes the
[Job N]
prefix for job log messages, even when using syslog logging (Issue #154) - Added support for locales using the GB18030 character set (Issue #159)
httpReconnect2
did not reset the socket file descriptor when the TLS negotiation failed (Apple #5907)httpUpdate
did not reset the socket file descriptor when the TLS negotiation failed (Apple #5915)- The IPP backend now retries Validate-Job requests (Issue #132)
- Now show better error messages when a driver interface program fails to provide a PPD file (Issue #148)
- Added dark mode support to the CUPS web interface (Issue #152)
- Added a workaround for Solaris in
httpAddrConnect2
(Issue #156) - Fixed an interaction between
--remote-admin
and--remote-any
for thecupsctl
command (Issue #158) - Now use a 60 second timeout for reading USB backchannel data (Issue #160)
- The USB backend now tries harder to find a serial number (Issue #170)
- Fixed
@IF(name)
handling incupsd.conf
(Apple #5918) - Fixed documentation and added examples for CUPS' limited CGI support (Apple #5940)
- Fixed the
lpc
command prompt (Apple #5946) - Now always pass "localhost" in the
Host:
header when talking over a domain socket or the loopback interface (Issue #185) - Fixed a job history update issue in the scheduler (Issue #187)
- Fixed
job-pages-per-set
value for duplex print jobs. - Fixed an edge case in
ippReadIO
to make sure that only complete attributes and values are retained on an error (Issue #195) - Hardened
ippReadIO
to prevent invalid IPP messages from being propagated (Issue #195, Issue #196) - The scheduler now supports the "everywhere" model directly (Issue #201)
- Fixed some IPP Everywhere option mapping problems (Issue #238)
- Fixed support for "job-hold-until" with the Restart-Job operation (Issue #250)
- Fixed the default color/grayscale presets for IPP Everywhere PPDs (Issue #262)
- Fixed support for the 'offline-report' state for all USB backends (Issue #264)
- Documentation fixes (Issue #92, Issue #163, Issue #177, Issue #184)
- Localization updates (Issue #123, Issue #129, Issue #134, Issue #146, Issue #164)
- USB quirk updates (Issue #192, Issue #270, Apple #5766, Apple #5838, Apple #5843, Apple #5867)
- Web interface updates (Issue #142, Issue #218)
- The
ippeveprinter
tool now automatically uses an available port. - Fixed several Windows TLS and hashing issues.
- Deprecated cups-config (Issue #97)
- Deprecated Kerberos (
AuthType Negotiate
) authentication (Issue #98) - Removed support for the (long deprecated and unused)
FontPath
,ListenBackLog
,LPDConfigFile
,KeepAliveTimeout
,RIPCache
, andSMBConfigFile
directives incupsd.conf
andcups-files.conf
. - Stubbed out deprecated
httpMD5
functions. - Add test for undefined page ranges during printing.
- Security: Fixed a buffer (read) overflow in the
ippReadIO
function (CVE-2020-10001) - Clarified the documentation for the "Listen" directive (Issue #53)
- Fixed duplicate ColorModel entries for AirPrint printers (Issue 59)
- Fixed directory/permission defaults for Debian kfreebsd-based systems (Issue #60, Issue #61)
- Fixed crash bug in
ppdOpen
(Issue #64, Issue #78) - Fixed regression in
snprintf
emulation function (Issue #67) - The scheduler's systemd service file now waits for the nslcd service to start (Issue #69)
- The libusb-based USB backend now uses a simpler read timer implementation to avoid a regression in a previous change (Issue #72)
- The PPD caching code now only tracks the
APPrinterIconPath
value on macOS (Issue #73) - Fixed segfault in help.cgi when searching in man pages (Issue #81)
- Root certificates were incorrectly stored in "~/.cups/ssl".
- The automated test suite can now be activated using
make test
for consistency with other projects and CI environments - the oldmake check
continues to work as well, and the previous test server behavior can be accessed by runningmake testserver
. - ippeveprinter now supports multiple icons and strings files.
- ippeveprinter now uses the system's FQDN with Avahi.
- ippeveprinter now supports Get-Printer-Attributes on "/".
- ippeveprinter now uses a deterministic "printer-uuid" value.
- ippeveprinter now uses system sounds on macOS for Identify-Printer.
- Updated ippfind to look for files in "~/Desktop" on Windows.
- Updated ippfind to honor
SKIP-XXX
directives withPAUSE
. - Updated IPP Everywhere support to work around printers that only advertise color raster support but really also support grayscale (Issue #1)
- ipptool now supports DNS-SD URIs like
ipps://My%20Printer._ipps._tcp.local
(Issue #5) - The scheduler now allows root backends to have world read permissions but not world execute permissions (Issue #21)
- Failures to bind IPv6 listener sockets no longer cause errors if IPv6 is disabled on the host (Issue #25)
- The SNMP backend now supports the HP and Ricoh vendor MIBs (Issue #28)
- The scheduler no longer includes a timestamp in files it writes (Issue #29)
- The systemd service names are now "cups.service" and "cups-lpd.service" (Issue #30, Issue #31)
- The scheduler no longer adds the local hostname to the ServerAlias list (Issue #32)
- Added
LogFileGroup
directive in "cups-files.conf" to control the group owner of log files (Issue #34) - Added
--with-max-log-size
configure option (Issue #35) - Added
--enable-sync-on-close
configure option (Issue #37) - Added
--with-error-policy
configure option (Issue #38) - IPP Everywhere PPDs could have an "unknown" default InputSlot (Issue #44)
- The
httpAddrListen
function now uses a listen backlog of 128. - Added USB quirks (Apple issue #5789, #5823, #5831)
- Fixed IPP Everywhere v1.1 conformance issues in ippeveprinter.
- Fixed DNS-SD name collision support in ippeveprinter.
- Fixed compiler and code analyzer warnings.
- Fixed TLS support on Windows.
- Fixed ippfind sub-type searches with Avahi.
- Fixed the default hostname used by ippeveprinter on macOS.
- Fixed resolution of local IPP-USB printers with Avahi.
- Fixed coverity issues (Issue #2)
- Fixed
httpAddrConnect
issues (Issue #3) - Fixed web interface device URI issue (Issue #4)
- Fixed lp/lpr "printer/class not found" error reporting (Issue #6)
- Fixed xinetd support for LPD clients (Issue #7)
- Fixed libtool build issue (Issue #11)
- Fixed a memory leak in the scheduler (Issue #12)
- Fixed a potential integer overflow in the PPD hashing code (Issue #13)
- Fixed output-bin and print-quality handling issues (Issue #18)
- Fixed PPD options getting mapped to odd IPP values like "tray---4" (Issue #23)
- Fixed remote access to the cupsd.conf and log files (Issue #24)
- Fixed the automated test suite when running in certain build/CI environments (Issue #25)
- Fixed a logging regression caused by a previous change for Apple issue #5604 (Issue #25)
- Fixed fax phone number handling with GNOME (Issue #40)
- Fixed potential rounding error in rastertopwg filter (Issue #41)
- Fixed the "uri-security-supported" value from the scheduler (Issue #42)
- Fixed IPP backend crash bug with "printer-alert" values (Issue #43)
- Removed old Solaris inetconv(1m) reference in cups-lpd man page (Issue #46)
- Fixed default options that incorrectly use the "custom" prefix (Issue #48)
- Fixed a memory leak when resolving DNS-SD URIs (Issue #49)
- Fixed systemd status reporting by adopting the notify interface (Issue #51)
- Fixed crash in rastertopwg (Apple issue #5773)
- Fixed cupsManualCopies values in IPP Everywhere PPDs (Apple issue #5807)