diff options
| author | Markus Volk <f_l_k@t-online.de> | 2023-11-12 01:59:41 +0100 |
|---|---|---|
| committer | Khem Raj <raj.khem@gmail.com> | 2023-11-11 23:25:17 -0800 |
| commit | 71e6fa9b086cdd8c0c30afbda48c2f40add8cded (patch) | |
| tree | 2d288402bf299fde3d46b8a87fabddb8d2341c92 | |
| parent | 3d7d59893bd73b41eb58c4aaa1b629f88b97a94a (diff) | |
| download | meta-openembedded-71e6fa9b086cdd8c0c30afbda48c2f40add8cded.tar.gz | |
cups-filters: Upgrade 1.28.17 -> 2.0.0
- `universal`: Enable `application/vnd.cups-postscript` as input
There are filters which produce this MIME type (such as `hpps` of
HPLIP), and if someone uses such driver on a client and the server
has an IPP Everywhere/driverless printer, the job fails (Pull
request #534).
- beh backend: Use `execv()` instead of `system()` - CVE-2023-24805
With `execv()` command line arguments are passed as separate strings
and not the full command line in a single string. This prevents
arbitrary command execution by escaping the quoting of the arguments
in a job with forged job title.
- beh backend: Extra checks against odd/forged input - CVE-2023-24805
* Do not allow `/` in the scheme of the URI (= backend executable
name), to assure that only backends inside
`/usr/lib/cups/backend/` are used.
* Pre-define scheme buffer to empty string, to be defined for case
of URI being NULL.
* URI must have `:`, to split off scheme, otherwise error.
* Check return value of `snprintf()` to create call path for
backend, to error out on truncation of a too long scheme or on
complete failure due to a completely odd scheme.
- beh backend: Further improvements - CVE-2023-24805
* Use `strncat()` instead of `strncpy()` for getting scheme from
URI, the latter does not require setting terminating zero byte in
case of truncation.
* Also exclude `.` or `..` as scheme, as directories are not valid
CUPS backends.
* Do not use `fprintf()` in `sigterm_handler()`, to not interfere
with a `fprintf()` which could be running in the main process when
`sigterm_handler()` is triggered.
* Use `static volatile int` for global variable job_canceled.
- `parallel` backend: Added missing `#include` lines
- foomatic-rip: Fix a SIGPIPE error when calling gs (Pull request #517)
[Ubuntu's autopkgtest for
foo2zjs](https://autopkgtest.ubuntu.com/packages/f/foo2zjs/lunar/ppc64el)
shows foo2zjs's testsuite failing with cups-filters 2.0beta3 on
ppc64el. This is cause by a timing issue in foomatic-rip which is
fixed now.
- Coverity check done by Zdenek Dohnal for the inclusion of
cups-filters in Fedora and Red Hat. Zdenek has fixed all the issues:
Missing `free()`, files not closed, potential string overflows,
... Thanks a lot! (Pull request #510).
- Dropped all C++ references and obsolete C standards (Pull requests
#504 and #513)
With no C++ compiler needed, there is no need for any checks or
setting for C++ in configure.ac.
- configure.ac: Change deprecated AC_PROG_LIBTOOL for LT_INIT (Pull
request #508)
- texttopdf: Do not include fontconfig.h in the CUPS filter wrapper
- Build system: Do not explicitly check for libpoppler-cpp
The cups-filters package does not contain any code using
libpoppler-cpp, therefore we let ./configure not check for it.
- COPYING, NOTICE: Simplification for autotools-generated files
autotools-generated files can be included under the license of the
upstream code, and FSF copyright added to upstream copyright
list. Simplified COPYING appropriately.
- Makefile.am: Include LICENSE in distribution tarball
- Add templates for issue reports on GitHub. This makes a selection
screen appear when clicking "New Issue" in the web UI, to selct
whether the issue is a regular bug, a feature request, or a security
vulnerability.
- Corrected installation path for *.h files of *.drv files. The ppdc
(and underlying functions) of libppd searches for include files in
/usr/share/ppdc and not in /usr/share/cups/ppdc any more.
- configure.ac: Remove unnecessary "AVAHI_GLIB_..." definitions.
- Makefile.am: Include NOTICE in distribution tarball
- configure.ac: Added "foreign" to to AM_INIT_AUTOMAKE() call. Makes
automake not require a file named README.
- Cleaned up .gitignore
- Tons of fixes in the source code documentation: README.md, INSTALL,
DEVELOPING.md, CONTRIBUTING.md, COPYING, NOTICE, ... Adapted to the
cups-filters component, added links.
- Converted nearly all filters to filter functions, only exceptions
are `rastertoescpx`, `rastertopclx`, `commandtoescpx`,
`commandtopclx`, and `foomatic-rip`. The latter is deeply involved
with Foomatic PPDs and the others are legacy printer drivers. The
filter functions are mainly in libcupsfilters, the ones which
generate PostScript are in libppd.
- Replaced all the filters converted to filter functions by simple
wrapper executables using `ppdFilterCUPSWrapper()` of libppd for
backward compatibility with CUPS 2.x.
- Added new streaming mode triggered by the boolean
"filter-streaming-mode" option. In this mode a filter (function) is
supposed to avoid everything which prevents the job data from
streaming, as loading the whole job (or good part of it) into a
temporary file or into memory, interpreting PDF, pre-checking input
file type or zero-page jobs, ... This is mainly to be used by
Printer Applications when they do raster printing in streaming mode,
to run with lowest resources possible. Currently `foomatic-rip`,
`ghostscript`, and `pdftopdf` got a streaming mode. For the former
two PostScript (not PDF) is assumed as input and no zero-page-job
check is done, in the latter all QPDF processing (page management,
page size adjustment, ...) is skipped and only JCL according to the
PPD added.
- The CUPS filter `imagetops` uses the `ppdFilterImageToPS()` filter
function of libppd now.
- `driverless`, `driverless-fax`: Added IPP Fax Out support. Now
printer setup tools list an additional fax "driver". A fax queue is
created by selecting this driver. Jobs have to be sent with "-o
phone=12345" to supply the destination phone number (Pull request
#280, #293, #296, #302, #304, #305, #306, #309, Issue #298, #308).
- `sys5ippprinter`: Removed `sys5ippprinter`, as CUPS does not support
System V interface scripts any more. This first approach of PPD-less
printing was also not actually made use of.
- `urftopdf`: Removed as we require CUPS 2.2.2+ now which supports
Apple Raster by itself.
- Build system, `README.md`: Require CUPS 2.2.2+. Removed now unneeded
`./configure` switches for use of the `urftopdf` filter for old CUPS
versions.
- Sample PPDs: Renamed source directory from `ppd/` to `ppdfiles/`.
- Build system: Remove '-D_PPD_DEPRECATED=""' from the compiling
command lines of the source files which use libcups. The flag is not
supported any more for longer times already and all the PPD-related
functions deprecated by CUPS have moved into libppd now.
- Build system: Add files in `.gitignore` that are generated by
"autogen.sh", "configure", and "make" (Pull request #336).
Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
| -rw-r--r-- | meta-oe/recipes-printing/cups/cups-filters_1.28.17.bb | 84 | ||||
| -rw-r--r-- | meta-oe/recipes-printing/cups/cups-filters_2.0.0.bb | 27 | ||||
| -rw-r--r-- | meta-oe/recipes-printing/cups/libcupsfilters/0001-use-noexcept-false-instead-of-throw-from-c-17-onward.patch (renamed from meta-oe/recipes-printing/cups/cups-filters/0001-use-noexcept-false-instead-of-throw-from-c-17-onward.patch) | 14 | ||||
| -rw-r--r-- | meta-oe/recipes-printing/cups/libcupsfilters_2.0.0.bb | 17 | ||||
| -rw-r--r-- | meta-oe/recipes-printing/cups/libppd_2.0.0.bb | 18 |
5 files changed, 69 insertions, 91 deletions
diff --git a/meta-oe/recipes-printing/cups/cups-filters_1.28.17.bb b/meta-oe/recipes-printing/cups/cups-filters_1.28.17.bb deleted file mode 100644 index dc527bf721..0000000000 --- a/meta-oe/recipes-printing/cups/cups-filters_1.28.17.bb +++ /dev/null | |||
| @@ -1,84 +0,0 @@ | |||
| 1 | DESCRIPTION = "CUPS backends, filters, and other software" | ||
| 2 | HOMEPAGE = "http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups-filters" | ||
| 3 | |||
| 4 | LICENSE = "GPL-2.0-only & LGPL-2.0-only & MIT & GPL-2.0-or-later & GPL-3.0-only" | ||
| 5 | LIC_FILES_CHKSUM = "file://COPYING;md5=2d77679ce6a2cc4d873d4ebbf2a401e6" | ||
| 6 | |||
| 7 | SECTION = "console/utils" | ||
| 8 | |||
| 9 | DEPENDS = "cups glib-2.0 glib-2.0-native dbus dbus-glib lcms poppler qpdf libpng libexif" | ||
| 10 | DEPENDS:class-native = "poppler-native glib-2.0-native dbus-native pkgconfig-native gettext-native libpng-native" | ||
| 11 | |||
| 12 | SRC_URI = "https://github.com/OpenPrinting/${BPN}/releases/download/${PV}/${BP}.tar.xz \ | ||
| 13 | file://0001-use-noexcept-false-instead-of-throw-from-c-17-onward.patch" | ||
| 14 | SRC_URI[sha256sum] = "270a3752a960368aa99d431fb5d34f4039b2ac943c576d840612d1d8185c9bb9" | ||
| 15 | |||
| 16 | inherit autotools-brokensep gettext pkgconfig github-releases | ||
| 17 | |||
| 18 | EXTRA_OECONF += " --disable-ldap \ | ||
| 19 | --with-pdftops=hybrid --enable-imagefilters \ | ||
| 20 | --enable-ghostscript --with-gs-path=${bindir}/gs \ | ||
| 21 | --with-pdftops-path=${bindir}/gs \ | ||
| 22 | --with-fontdir=${datadir}/fonts --with-rcdir=no \ | ||
| 23 | --with-cups-rundir=${localstatedir}/run/cups \ | ||
| 24 | --localstatedir=${localstatedir}/var \ | ||
| 25 | --with-rcdir=no \ | ||
| 26 | --without-php" | ||
| 27 | |||
| 28 | EXTRA_OECONF:class-native += " --with-pdftops=pdftops \ | ||
| 29 | --disable-avahi --disable-ghostscript \ | ||
| 30 | --disable-ldap \ | ||
| 31 | --with-png --without-jpeg --without-tiff" | ||
| 32 | |||
| 33 | CXXFLAGS += "-std=c++17" | ||
| 34 | |||
| 35 | PACKAGECONFIG[jpeg] = "--with-jpeg,--without-jpeg,jpeg" | ||
| 36 | PACKAGECONFIG[png] = "--with-png,--without-png,libpng" | ||
| 37 | PACKAGECONFIG[tiff] = "--with-tiff,--without-tiff,tiff" | ||
| 38 | |||
| 39 | PACKAGECONFIG ??= "dbus ${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', 'avahi', '', d)}" | ||
| 40 | |||
| 41 | PACKAGECONFIG[avahi] = "--enable-avahi,--disable-avahi,avahi" | ||
| 42 | PACKAGECONFIG[dbus] = "--enable-dbus,--disable-dbus,,dbus" | ||
| 43 | |||
| 44 | DIRFILES = "1" | ||
| 45 | |||
| 46 | PACKAGES =+ "\ | ||
| 47 | ${PN}-gst \ | ||
| 48 | ${PN}-data \ | ||
| 49 | " | ||
| 50 | |||
| 51 | FILES:${PN}-gst = "\ | ||
| 52 | ${libexecdir}/cups/filter/gsto* \ | ||
| 53 | " | ||
| 54 | RDEPENDS:${PN}-gst += "ghostscript" | ||
| 55 | |||
| 56 | FILES:${PN}-data = "\ | ||
| 57 | ${datadir}/cups/data \ | ||
| 58 | " | ||
| 59 | |||
| 60 | FILES:${PN}-dbg += "\ | ||
| 61 | ${libexecdir}/cups/backend/.debug \ | ||
| 62 | ${libexecdir}/cups/driver/.debug \ | ||
| 63 | ${libexecdir}/cups/filter/.debug \ | ||
| 64 | " | ||
| 65 | |||
| 66 | FILES:${PN} += "\ | ||
| 67 | ${libexecdir}/cups \ | ||
| 68 | ${datadir}/ppd/ \ | ||
| 69 | ${datadir}/cups/charsets \ | ||
| 70 | ${datadir}/cups/drv \ | ||
| 71 | ${datadir}/cups/mime \ | ||
| 72 | ${datadir}/cups/ppdc \ | ||
| 73 | ${datadir}/cups/banners \ | ||
| 74 | " | ||
| 75 | RDEPENDS:${PN} += "bash" | ||
| 76 | RDEPENDS:${PN} += "ghostscript" | ||
| 77 | |||
| 78 | do_install:append() { | ||
| 79 | # remove braille dir | ||
| 80 | rm -rf ${D}${datadir}/cups/braille | ||
| 81 | |||
| 82 | # remove sysroot path contamination from pkgconfig file | ||
| 83 | sed -i -e 's:${STAGING_DIR_TARGET}::' ${D}/${libdir}/pkgconfig/libcupsfilters.pc | ||
| 84 | } | ||
diff --git a/meta-oe/recipes-printing/cups/cups-filters_2.0.0.bb b/meta-oe/recipes-printing/cups/cups-filters_2.0.0.bb new file mode 100644 index 0000000000..0370ae79d2 --- /dev/null +++ b/meta-oe/recipes-printing/cups/cups-filters_2.0.0.bb | |||
| @@ -0,0 +1,27 @@ | |||
| 1 | DESCRIPTION = "CUPS backends, filters, and other software" | ||
| 2 | HOMEPAGE = "http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups-filters" | ||
| 3 | LICENSE = "Apache-2.0" | ||
| 4 | LIC_FILES_CHKSUM = "file://COPYING;md5=6d5b952b53dbe7752199903d082e5f07" | ||
| 5 | |||
| 6 | DEPENDS = "libcupsfilters libppd glib-2.0 poppler" | ||
| 7 | |||
| 8 | SRC_URI = "https://github.com/OpenPrinting/${BPN}/releases/download/${PV}/${BP}.tar.xz" | ||
| 9 | SRC_URI[sha256sum] = "b5152e3dd148ed73835827ac2f219df7cf5808dbf9dbaec2aa0127b44de800d8" | ||
| 10 | |||
| 11 | inherit autotools gettext pkgconfig github-releases | ||
| 12 | |||
| 13 | EXTRA_OECONF += " \ | ||
| 14 | --enable-imagefilters \ | ||
| 15 | --enable-ghostscript --with-gs-path=${bindir}/gs \ | ||
| 16 | --with-fontdir=${datadir}/fonts \ | ||
| 17 | --localstatedir=${localstatedir} \ | ||
| 18 | " | ||
| 19 | |||
| 20 | PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', 'avahi', '', d)}" | ||
| 21 | PACKAGECONFIG[avahi] = "--enable-avahi,--disable-avahi,avahi" | ||
| 22 | |||
| 23 | FILES:${PN} += "${datadir}" | ||
| 24 | FILES:${PN}-dev += "${datadir}/ppdc" | ||
| 25 | |||
| 26 | RDEPENDS:${PN} += "bash" | ||
| 27 | RDEPENDS:${PN} += "ghostscript" | ||
diff --git a/meta-oe/recipes-printing/cups/cups-filters/0001-use-noexcept-false-instead-of-throw-from-c-17-onward.patch b/meta-oe/recipes-printing/cups/libcupsfilters/0001-use-noexcept-false-instead-of-throw-from-c-17-onward.patch index 5de8dae006..72bbf10a14 100644 --- a/meta-oe/recipes-printing/cups/cups-filters/0001-use-noexcept-false-instead-of-throw-from-c-17-onward.patch +++ b/meta-oe/recipes-printing/cups/libcupsfilters/0001-use-noexcept-false-instead-of-throw-from-c-17-onward.patch | |||
| @@ -15,22 +15,22 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com> | |||
| 15 | filter/pdftoraster.cxx | 4 ++++ | 15 | filter/pdftoraster.cxx | 4 ++++ |
| 16 | 1 file changed, 4 insertions(+) | 16 | 1 file changed, 4 insertions(+) |
| 17 | 17 | ||
| 18 | diff --git a/filter/pdftoraster.cxx b/filter/pdftoraster.cxx | 18 | diff --git a/cupsfilters/pdftoraster.cxx b/cupsfilters/pdftoraster.cxx |
| 19 | index e8af184fb..e91e22459 100755 | 19 | index e8af184fb..e91e22459 100755 |
| 20 | --- a/filter/pdftoraster.cxx | 20 | @@ -2198,7 +2198,11 @@ |
| 21 | +++ b/filter/pdftoraster.cxx | 21 | // For compatibility with g++ >= 4.7 compilers _GLIBCXX_THROW |
| 22 | @@ -2148,7 +2148,11 @@ int main(int argc, char *argv[]) { | 22 | // should be used as a guard, otherwise use traditional definition |
| 23 | /* For compatibility with g++ >= 4.7 compilers _GLIBCXX_THROW | ||
| 24 | * should be used as a guard, otherwise use traditional definition */ | ||
| 25 | #ifndef _GLIBCXX_THROW | 23 | #ifndef _GLIBCXX_THROW |
| 24 | -#define _GLIBCXX_THROW throw | ||
| 26 | +#if __cplusplus < 201703L | 25 | +#if __cplusplus < 201703L |
| 27 | #define _GLIBCXX_THROW throw | 26 | +#define _GLIBCXX_THROW throw |
| 28 | +#else | 27 | +#else |
| 29 | +#define _GLIBCXX_THROW(x) noexcept(false) | 28 | +#define _GLIBCXX_THROW(x) noexcept(false) |
| 30 | +#endif | 29 | +#endif |
| 31 | #endif | 30 | #endif |
| 32 | 31 | ||
| 33 | void * operator new(size_t size) _GLIBCXX_THROW (std::bad_alloc) | 32 | void * operator new(size_t size) _GLIBCXX_THROW (std::bad_alloc) |
| 33 | |||
| 34 | -- | 34 | -- |
| 35 | 2.39.1 | 35 | 2.39.1 |
| 36 | 36 | ||
diff --git a/meta-oe/recipes-printing/cups/libcupsfilters_2.0.0.bb b/meta-oe/recipes-printing/cups/libcupsfilters_2.0.0.bb new file mode 100644 index 0000000000..7f7174d940 --- /dev/null +++ b/meta-oe/recipes-printing/cups/libcupsfilters_2.0.0.bb | |||
| @@ -0,0 +1,17 @@ | |||
| 1 | DESCRIPTION = "OpenPrinting libcupsfilters" | ||
| 2 | HOMEPAGE = "https://github.com/OpenPrinting" | ||
| 3 | LICENSE = "Apache-2.0" | ||
| 4 | LIC_FILES_CHKSUM = "file://COPYING;md5=aab2024bd2a475438a154cd1640c9684" | ||
| 5 | |||
| 6 | DEPENDS = "cups fontconfig libexif dbus lcms qpdf poppler libpng jpeg tiff" | ||
| 7 | |||
| 8 | SRC_URI = " \ | ||
| 9 | https://github.com/OpenPrinting/${BPN}/releases/download/${PV}/${BP}.tar.xz \ | ||
| 10 | file://0001-use-noexcept-false-instead-of-throw-from-c-17-onward.patch \ | ||
| 11 | " | ||
| 12 | SRC_URI[sha256sum] = "542f2bfbc58136a4743c11dc8c86cee03c9aca705612654e36ac34aa0d9aa601" | ||
| 13 | |||
| 14 | inherit autotools gettext pkgconfig github-releases | ||
| 15 | |||
| 16 | FILES:${PN} += "${datadir}" | ||
| 17 | RDEPENDS:${PN} += "ghostscript" | ||
diff --git a/meta-oe/recipes-printing/cups/libppd_2.0.0.bb b/meta-oe/recipes-printing/cups/libppd_2.0.0.bb new file mode 100644 index 0000000000..99b1f6e730 --- /dev/null +++ b/meta-oe/recipes-printing/cups/libppd_2.0.0.bb | |||
| @@ -0,0 +1,18 @@ | |||
| 1 | DESCRIPTION = "OpenPrinting libppd" | ||
| 2 | HOMEPAGE = "https://github.com/OpenPrinting" | ||
| 3 | LICENSE = "Apache-2.0" | ||
| 4 | LIC_FILES_CHKSUM = "file://COPYING;md5=c1fca671047153ce6825c4ab06f2ab49" | ||
| 5 | |||
| 6 | DEPENDS = "libcupsfilters" | ||
| 7 | |||
| 8 | SRC_URI = "https://github.com/OpenPrinting/${BPN}/releases/download/${PV}/${BP}.tar.xz" | ||
| 9 | SRC_URI[sha256sum] = "882d3c659a336e91559de8f3c76fc26197fe6e5539d9b484a596e29a5a4e0bc8" | ||
| 10 | |||
| 11 | inherit autotools gettext pkgconfig github-releases | ||
| 12 | |||
| 13 | do_install:append() { | ||
| 14 | rm -r ${D}${bindir} | ||
| 15 | } | ||
| 16 | |||
| 17 | FILES:${PN} += "${datadir}" | ||
| 18 | |||
