libcupsfilters 2.2.0 #199
tillkamppeter
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
First actual feature release after libcupsfilters 2.0.0 3 years ago: Done away with C++ using PDFio instead of QPDF and Poppler's
pdftoppminstead of libpoppler, non-Latin plain text support, JPEG XL input support, print quality enhancement with Ghostscript, full-fledged CI testing for x86_64, ARM 32 and 64, RISC-V, and CUPS 2.x, 2.5.x, 3.x, bugs from security audit fixed, 4 CVEs fixed, and more ...Eliminated the use of C++ in libcupsfilters, to get all regular C
Modified the filter functions
cfFilterPDFToPDF(),cfFilterPCLmToRaster(),cfFilterPWGToPDF(),cfFilterBannerToPDF(). Also turned the code from C++ into C.cfFilterPDFToRaster()replaced use of libpoppler by using PDFio and also the external executablepdftoppmof poppler-utils, Also here turned C++ code into C.cupsfilters/test-filter-cases.txt.Older versions have bugs.
Non-Latin language input support for
cfFilterTextToPDF()FC_MONOconstraint to allow proportional fontsSome languages have non-monospaced scripts and now they can correctly load their intended fonts.
cfFilterTextToPDF()expects UTF-8 input by default now.Added JPEG‑XL Support to libcupsfilters
Now jobs in the high-quality JPEG-XL image format can be sent directly to CUPS and cfFilterImageTo...() filter functions read and convert these files.
Winter of Code 4.0 project by Titiksha Bansal. Thanks a lot.
(Pull request Add JPEG‑XL Support to libcupsfilters (WoC 4.0 Contribution) #82)
Print quality improvements
cfFilterGhostscript()introducedcupsHalftoneTypedithering algorithmsControlled with
halftone-typejob option orcupsHalftoneTypePPD option. Added stochastic halftoning, bi-level threshold, an algorithm from foo2zjs, 8x8, genordered, and spot from PDF (Pull request Ghostscript (gstoraster): Introduce cupsHalftoneType dithering algorithms #92, Ghostscript (gstoraster): new halftone/dithering algorithms #160)Prevents white holes in the text
CI: Implemented complete GitHub Actions pipeline (Build, Unit tests, CodeQL, Cppcheck)
and RISC-V 64-bit) and for different CUPS versions (2.4.x, 2.5.x, 3.x). Tests on 12 combos
make checkand also Debian's autopkgtests as unit testsCI: Improvements of unit tests
pdftopdfvalidation (Pull request tests: Add malformed PDF testcase for pdftopdf validation #131)testfiltersjust go through all lines of test cases instead of using line count as a parameter (Pull request tests: Fix testfilters to run loop till EOF instead of using line count logic #128)FilterChain()support totestfiltersManually providing a filter chain is optional, if not supplied, it is set
automatically as before (Pull request tests: Add optional manual FilterChain support to testfilters #122)
Fixed (crasher) bugs found in security audit by 7ASecurity
*-supported/*-defaultattributes in thecfIPPAttrEnumValForPrinter()functionCheck IPP tags (data types) to avoid NULL derefences (OCU-01-001, Issue OCU-01-001 WP2: Crash via Wrong-Tag *-Supported Attributes (Medium) #149, pull request Fix crash from wrong-tag *-supported/*-default attributes (OCU-01-001) #162)
cfGetBackSideOrientation()andcfGetPrintRenderIntent()look up several IPP attributes. Also here check tags/data types to avoid NULL derefences (OCU-01-003, Issue OCU-01-003 WP2: Crash via Wrong-Tag Driverless IPP Attributes (Medium) #163, pull request Fix crash from wrong-tag driverless IPP attributes (OCU-01-003) #164)SECURITY: Out-of-bounds write in
cfFilterPDFToRaster()if PDF has toolarge page dimensions.
Crop dimensions to maximum allowed by standard, 14400x14400pt, 200x200in, 5x5m, if needed.
(CVE-2025-64503)
SECURITY: Vulnerabilities by image input with wrong color space/depth/bits-per-pixel combo.
cfImageLutcolor space
(CVE-2025-57812)
SECURITY:
cfFilterImageTo...(): Added error handling for libpng and libjpeg function calls to avoid the process being aborted.(Pull request image-png.c: Handle libpng errors via longjmp()/setjmp() #168, image-jpeg.c: Handle jpeg errors as well #169)
(CVE-2026-64612)
SECURITY: Fix possible infinite loop when parsing device IDs, also avoid empty device IDs
(Pull request ieee.c: Fix possible infinite loop and avoid empty device_ids #170)
(CVE-2026-64611)
Fixed heap buffer overflow in bilinear zoom of images
(Issue Heap buffer overflow(read) in zoom_bilinear() #142, pull request image-zoom.c: Replace z_depth with z_inincr in zoom_bilinear() #143)
Out-of-bounds read in
NormalizeMakeModelwhen manufacturer name too long(Issue stack-buffer-overflow in cfIEEE1284NormalizeMakeModel() #136, pull request cupsfilters: ieee1284: fix out-of-bounds read in NormalizeMakeModel #139)
Use ColorModel or output-mode if there's no print-color-mode
(Issue ghostscript sigsegv (sig 11) with
implicitclass:://...but works withsocketordnssd#126, pull request Use ColorModel or output-mode if there's no print-color-mode. Fixes #126 #127)Fix cache thrashing for large images when cropping them
(Pull request Fix cache thrashing for large images #106)
Fix for potential heap-buffer-overflow when reading TIFF images with more than one sample per pixel
(Issue heap-buffer-overflow in _cfImageReadTIFF #107, pull request Potential heap-buffer-overflow fix #108)
Unified return value of TIFF related functions to -1
When zooming images check whether X and Y size dimensions are not zero
(Pull request image-zoom.c: add the xsize and ysize check to zero in _cfImageZoomNew #86)
pdftoraster,gsto...,mupdftopwg: Fix NULL-pointer dereference when parsing%%PDFTOPDF...comments(Pull request Fix NULL-pointer dereference when parsing %PDFTOPDF comments #94)
pdftoraster: Check result ofrender_page()as it may return NULL if the page is not properly constructed(Pull request pdftoraster: Check result of render_page #95)
imagetopdf: convert custom media sizemin_widthandmin_heightto points(Issue Incorrect custom media dimensions #87, pull request imagetopdf: convert custom media size min_width and min_height to points. Fixes #87 #93)
cfFilterChain(): Initialize return value to 0In some cases the function exits with non-zero status when all filters exit with no errors (zero status).
Fixed Deadlock in filter chain When one filter fails
(Issue Critical Issue: Deadlock in Filter Chain When One Filter Fails #32, pull request Fixed Issue #32: Deadlock in Filter Chain When One Filter Fails #85)
cfFilterTextToPDF(): Let all Arabic characters be rendered right-to-left
(Issue Arabic text generated by texttopdf is not RTL as it shoud be #84)
Fix build with libcups3
cupsParseOptions()cups_media_sif running a version older then CUPS 2.5.xtestfilters.cto use CUPS 3.0 API with compatibility shim for CUPS 2.x and older. Given that this is an end-user program, we don't want to includelibcups2-private.h. Also tweaked Makefile to link against proper CUPS library.cups/backend.h.Allow building without fontconfig.
Controllable by
./configureoption. When building without fontconfig,cfFilterTextToPDF()gets no-op (to keep API)(Pull request Allow building without fontconfig #83)
Build-time option for alternative CJK font name.
./configureoption-with-cjk-fontssets alternative name(Pull request configure.ac: Make CJK fonts name configurable #96)
Fix missing
sys/stat.hinclude for Solaris(Issue Missing sys/stat.h header on Solaris #97, pull request Fix missing sys/stat.h include for Solaris #130)
Use
/bin/shfortestfilters.shto avoid dependency on bash(Pull request Use /bin/sh for testfilters.sh to avoid dependency on bash #67)
cfFilterImageToPDF(): Added extra debug log messages concerning page orientation(Pull request Fix landscape orientation issue #102)
This discussion was created from the release libcupsfilters 2.2.0.
All reactions