libcupsfilters and libppd Second Generation - Forth Beta Release!
Continuing the packaging for Debian, Ubuntu, and Red Hat distributions more bugs got found and fixed.
First, Zdenek Dohnal from Red Hat has run all the components of the new generation of cups-filters through Coverity and found several bugs: Memory leaks, files not closed, possible string overflows, … He fixed all these bugs in the upstream code. This assures reliability and security of all the new components, especially if being part of permanently running daemons. Thanks a lot, Zdenek!
During the selection process for contributors for the Google Summer of Code 2023 we give some assignments to the candidates, usually reported bugs, but also other code-related work items which occur at OpenPrinting. This way we got some bugs fixed, from users reporting that their printer does not work in driverless mode or something wrong or nothing comes out as the printout.
Especially with one candidate, having gotten assigned a bug report about the PostScript Printer Application not preventing the use of malformed, user-supplied PPD files, we realized that we did not transfer CUPS’ valuable command line tool
cupstestppd into libppd. This the candidate has done yet, as the library function
ppdTest(), easily callable from a PPD-retrofitting Printer Application.
libcupsfilters got updated to work with the latest version of QPDF (11) as building it showed a lot of warnings about the use of deprecated functions in QPDF. Now it should be ready for the upcoming QPDF 12.
- Do not free
cf_image_tdata structure in
_cfImageZoomDelete()(cups-filters issue #507) The library-internal
_cfImageZoom...()API does not create the
cf_image_tdata structure, so it should not free it, to avoid double-free crashes. This made the
cfFilterImageToRaster()filter function (
imagetorasterCUPS filter) crash.
cfImageOpenFP(): Removed leftover
HAVE_LIBZconditionals In the 3rd beta we have removed the dependency on libz from the build system as there is no explicit dependency on it in libcupsfilters. Having forgotten to remove
HAVE_LIBZfrom the conditionals in
cfImageOpenFP()PNG images were rendered as blank pages. See cups-filters issue #465.
- Compatibility with QPDF 11 and later
- Replaced deprecated
cfFilterPDFToPDF(): Replaced deprecated QPDF function name
CXXFLAGS="-DPOINTERHOLDER_TRANSITION=0"to silence QPDF warnings.
- Replaced deprecated
INSTALL: Explain dependencies (PR #10)
- Transfer CUPS’
ppdTest()library function The valuable tool got forgotten in the first place, now it is available as
ppdTest()library function and
testppdfilecommand line utility. The command line utility only gets installed with
- In auto-generated PPDs do not set RGB default on mono printers (CUPS Issue #614)
When a PPD for a driverless printer is generated by the
ppdCreatePPDFromIPP()function and the get-printer-attributes IPP response gives “print-color-mode-default=auto” the PPD’s default setting for “ColorModel” is always “RGB”, even on monochrome printers, which makes printing fail on most devices. Now we ignore the “print-color-mode-default” if set to “auto”.
- ppdLoadAttributes(): Added NULL check for missing PPD PageSize default Some PPDs, even “everywhere” PPDs generated by CUPS for a driverless IPP printer do not have a valid default value for the default page size, like “Unknown”. Added a NULL check to avoid a crash by such PPD files.
testppd: String got freed too early In this test program run by
make checka string was used after already gotten freed. Discovered via a compiler warning, but program could have actually crashed.
- Coverity check done by Zdenek Dohnal for the inclusion of libppd in Fedora and Red Hat. Zdenek has fixed all the issues: Missing
free(), files not closed, potential string overflows, … Thanks a lot!
configure.ac: Change deprecated
- libcupsfilters: More Details and Download, Discussion
- libppd: More Details and Download, Discussion