From b9aca5c93653548e3c9c687ed3a4c96fe158d232 Mon Sep 17 00:00:00 2001 From: mobinmob Date: Fri, 29 Dec 2023 17:48:14 +0200 Subject: [PATCH 1/2] New package: tiff5-4.4.0 --- common/shlibs | 2 + srcpkgs/tiff5-devel | 1 + .../libtiff5-4.4.0-CVE-2022-34526.patch | 28 +++ .../patches/libtiff5-4.4.0-fpe_tiffcrop.patch | 180 ++++++++++++++++++ srcpkgs/tiff5/template | 38 ++++ 5 files changed, 249 insertions(+) create mode 120000 srcpkgs/tiff5-devel create mode 100644 srcpkgs/tiff5/patches/libtiff5-4.4.0-CVE-2022-34526.patch create mode 100644 srcpkgs/tiff5/patches/libtiff5-4.4.0-fpe_tiffcrop.patch create mode 100644 srcpkgs/tiff5/template diff --git a/common/shlibs b/common/shlibs index 6463e020bb473..cbf7e4f4e693b 100644 --- a/common/shlibs +++ b/common/shlibs @@ -316,6 +316,8 @@ libxcb-event.so.1 xcb-util-0.3.4_1 libxcb-util.so.1 xcb-util-0.3.9_1 libtiff.so.6 tiff-4.5.0_1 libtiffxx.so.6 tiff-4.5.0_1 +libtiff.so.5 tiff5-4.4.0_1 +libtiffxx.so.5 tiff5-4.4.0_1 libnotify.so.4 libnotify-0.7_1 libexo-1.so.0 exo-0.7.3_1 libexo-2.so.0 exo-0.12.0_1 diff --git a/srcpkgs/tiff5-devel b/srcpkgs/tiff5-devel new file mode 120000 index 0000000000000..6ebded452c70c --- /dev/null +++ b/srcpkgs/tiff5-devel @@ -0,0 +1 @@ +tiff5 \ No newline at end of file diff --git a/srcpkgs/tiff5/patches/libtiff5-4.4.0-CVE-2022-34526.patch b/srcpkgs/tiff5/patches/libtiff5-4.4.0-CVE-2022-34526.patch new file mode 100644 index 0000000000000..cb3a4d3c77e2c --- /dev/null +++ b/srcpkgs/tiff5/patches/libtiff5-4.4.0-CVE-2022-34526.patch @@ -0,0 +1,28 @@ +From 275735d0354e39c0ac1dc3c0db2120d6f31d1990 Mon Sep 17 00:00:00 2001 +From: Even Rouault +Date: Mon, 27 Jun 2022 16:09:43 +0200 +Subject: [PATCH] _TIFFCheckFieldIsValidForCodec(): return FALSE when passed a + codec-specific tag and the codec is not configured (fixes #433) + +This avoids crashes when querying such tags +--- + libtiff/tif_dirinfo.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/libtiff/tif_dirinfo.c b/libtiff/tif_dirinfo.c +index c30f569b..3371cb5c 100644 +--- a/libtiff/tif_dirinfo.c ++++ b/libtiff/tif_dirinfo.c +@@ -1191,6 +1191,9 @@ _TIFFCheckFieldIsValidForCodec(TIFF *tif, ttag_t tag) + default: + return 1; + } ++ if( !TIFFIsCODECConfigured(tif->tif_dir.td_compression) ) { ++ return 0; ++ } + /* Check if codec specific tags are allowed for the current + * compression scheme (codec) */ + switch (tif->tif_dir.td_compression) { +-- +GitLab + diff --git a/srcpkgs/tiff5/patches/libtiff5-4.4.0-fpe_tiffcrop.patch b/srcpkgs/tiff5/patches/libtiff5-4.4.0-fpe_tiffcrop.patch new file mode 100644 index 0000000000000..f62a41ad7471c --- /dev/null +++ b/srcpkgs/tiff5/patches/libtiff5-4.4.0-fpe_tiffcrop.patch @@ -0,0 +1,180 @@ +From dd1bcc7abb26094e93636e85520f0d8f81ab0fab Mon Sep 17 00:00:00 2001 +From: 4ugustus +Date: Sat, 11 Jun 2022 09:31:43 +0000 +Subject: [PATCH] fix the FPE in tiffcrop (#415, #427, and #428) + +--- + libtiff/tif_aux.c | 9 +++++++ + libtiff/tiffiop.h | 1 + + tools/tiffcrop.c | 62 ++++++++++++++++++++++++++--------------------- + 3 files changed, 44 insertions(+), 28 deletions(-) + +diff --git a/libtiff/tif_aux.c b/libtiff/tif_aux.c +index 140f26c7..5b88c8d0 100644 +--- a/libtiff/tif_aux.c ++++ b/libtiff/tif_aux.c +@@ -402,6 +402,15 @@ float _TIFFClampDoubleToFloat( double val ) + return (float)val; + } + ++uint32_t _TIFFClampDoubleToUInt32(double val) ++{ ++ if( val < 0 ) ++ return 0; ++ if( val > 0xFFFFFFFFU || val != val ) ++ return 0xFFFFFFFFU; ++ return (uint32_t)val; ++} ++ + int _TIFFSeekOK(TIFF* tif, toff_t off) + { + /* Huge offsets, especially -1 / UINT64_MAX, can cause issues */ +diff --git a/libtiff/tiffiop.h b/libtiff/tiffiop.h +index e3af461d..4e8bdac2 100644 +--- a/libtiff/tiffiop.h ++++ b/libtiff/tiffiop.h +@@ -365,6 +365,7 @@ extern double _TIFFUInt64ToDouble(uint64_t); + extern float _TIFFUInt64ToFloat(uint64_t); + + extern float _TIFFClampDoubleToFloat(double); ++extern uint32_t _TIFFClampDoubleToUInt32(double); + + extern tmsize_t + _TIFFReadEncodedStripAndAllocBuffer(TIFF* tif, uint32_t strip, +diff --git a/tools/tiffcrop.c b/tools/tiffcrop.c +index 1f827b2b..90286a5e 100644 +--- a/tools/tiffcrop.c ++++ b/tools/tiffcrop.c +@@ -5268,17 +5268,17 @@ computeInputPixelOffsets(struct crop_mask *crop, struct image_data *image, + { + if ((crop->res_unit == RESUNIT_INCH) || (crop->res_unit == RESUNIT_CENTIMETER)) + { +- x1 = (uint32_t) (crop->corners[i].X1 * scale * xres); +- x2 = (uint32_t) (crop->corners[i].X2 * scale * xres); +- y1 = (uint32_t) (crop->corners[i].Y1 * scale * yres); +- y2 = (uint32_t) (crop->corners[i].Y2 * scale * yres); ++ x1 = _TIFFClampDoubleToUInt32(crop->corners[i].X1 * scale * xres); ++ x2 = _TIFFClampDoubleToUInt32(crop->corners[i].X2 * scale * xres); ++ y1 = _TIFFClampDoubleToUInt32(crop->corners[i].Y1 * scale * yres); ++ y2 = _TIFFClampDoubleToUInt32(crop->corners[i].Y2 * scale * yres); + } + else + { +- x1 = (uint32_t) (crop->corners[i].X1); +- x2 = (uint32_t) (crop->corners[i].X2); +- y1 = (uint32_t) (crop->corners[i].Y1); +- y2 = (uint32_t) (crop->corners[i].Y2); ++ x1 = _TIFFClampDoubleToUInt32(crop->corners[i].X1); ++ x2 = _TIFFClampDoubleToUInt32(crop->corners[i].X2); ++ y1 = _TIFFClampDoubleToUInt32(crop->corners[i].Y1); ++ y2 = _TIFFClampDoubleToUInt32(crop->corners[i].Y2); + } + /* a) Region needs to be within image sizes 0.. width-1; 0..length-1 + * b) Corners are expected to be submitted as top-left to bottom-right. +@@ -5357,17 +5357,17 @@ computeInputPixelOffsets(struct crop_mask *crop, struct image_data *image, + { + if (crop->res_unit != RESUNIT_INCH && crop->res_unit != RESUNIT_CENTIMETER) + { /* User has specified pixels as reference unit */ +- tmargin = (uint32_t)(crop->margins[0]); +- lmargin = (uint32_t)(crop->margins[1]); +- bmargin = (uint32_t)(crop->margins[2]); +- rmargin = (uint32_t)(crop->margins[3]); ++ tmargin = _TIFFClampDoubleToUInt32(crop->margins[0]); ++ lmargin = _TIFFClampDoubleToUInt32(crop->margins[1]); ++ bmargin = _TIFFClampDoubleToUInt32(crop->margins[2]); ++ rmargin = _TIFFClampDoubleToUInt32(crop->margins[3]); + } + else + { /* inches or centimeters specified */ +- tmargin = (uint32_t)(crop->margins[0] * scale * yres); +- lmargin = (uint32_t)(crop->margins[1] * scale * xres); +- bmargin = (uint32_t)(crop->margins[2] * scale * yres); +- rmargin = (uint32_t)(crop->margins[3] * scale * xres); ++ tmargin = _TIFFClampDoubleToUInt32(crop->margins[0] * scale * yres); ++ lmargin = _TIFFClampDoubleToUInt32(crop->margins[1] * scale * xres); ++ bmargin = _TIFFClampDoubleToUInt32(crop->margins[2] * scale * yres); ++ rmargin = _TIFFClampDoubleToUInt32(crop->margins[3] * scale * xres); + } + + if ((lmargin + rmargin) > image->width) +@@ -5397,24 +5397,24 @@ computeInputPixelOffsets(struct crop_mask *crop, struct image_data *image, + if (crop->res_unit != RESUNIT_INCH && crop->res_unit != RESUNIT_CENTIMETER) + { + if (crop->crop_mode & CROP_WIDTH) +- width = (uint32_t)crop->width; ++ width = _TIFFClampDoubleToUInt32(crop->width); + else + width = image->width - lmargin - rmargin; + + if (crop->crop_mode & CROP_LENGTH) +- length = (uint32_t)crop->length; ++ length = _TIFFClampDoubleToUInt32(crop->length); + else + length = image->length - tmargin - bmargin; + } + else + { + if (crop->crop_mode & CROP_WIDTH) +- width = (uint32_t)(crop->width * scale * image->xres); ++ width = _TIFFClampDoubleToUInt32(crop->width * scale * image->xres); + else + width = image->width - lmargin - rmargin; + + if (crop->crop_mode & CROP_LENGTH) +- length = (uint32_t)(crop->length * scale * image->yres); ++ length = _TIFFClampDoubleToUInt32(crop->length * scale * image->yres); + else + length = image->length - tmargin - bmargin; + } +@@ -5868,13 +5868,13 @@ computeOutputPixelOffsets (struct crop_mask *crop, struct image_data *image, + { + if (page->res_unit == RESUNIT_INCH || page->res_unit == RESUNIT_CENTIMETER) + { /* inches or centimeters specified */ +- hmargin = (uint32_t)(page->hmargin * scale * page->hres * ((image->bps + 7) / 8)); +- vmargin = (uint32_t)(page->vmargin * scale * page->vres * ((image->bps + 7) / 8)); ++ hmargin = _TIFFClampDoubleToUInt32(page->hmargin * scale * page->hres * ((image->bps + 7) / 8)); ++ vmargin = _TIFFClampDoubleToUInt32(page->vmargin * scale * page->vres * ((image->bps + 7) / 8)); + } + else + { /* Otherwise user has specified pixels as reference unit */ +- hmargin = (uint32_t)(page->hmargin * scale * ((image->bps + 7) / 8)); +- vmargin = (uint32_t)(page->vmargin * scale * ((image->bps + 7) / 8)); ++ hmargin = _TIFFClampDoubleToUInt32(page->hmargin * scale * ((image->bps + 7) / 8)); ++ vmargin = _TIFFClampDoubleToUInt32(page->vmargin * scale * ((image->bps + 7) / 8)); + } + + if ((hmargin * 2.0) > (pwidth * page->hres)) +@@ -5912,13 +5912,13 @@ computeOutputPixelOffsets (struct crop_mask *crop, struct image_data *image, + { + if (page->mode & PAGE_MODE_PAPERSIZE ) + { +- owidth = (uint32_t)((pwidth * page->hres) - (hmargin * 2)); +- olength = (uint32_t)((plength * page->vres) - (vmargin * 2)); ++ owidth = _TIFFClampDoubleToUInt32((pwidth * page->hres) - (hmargin * 2)); ++ olength = _TIFFClampDoubleToUInt32((plength * page->vres) - (vmargin * 2)); + } + else + { +- owidth = (uint32_t)(iwidth - (hmargin * 2 * page->hres)); +- olength = (uint32_t)(ilength - (vmargin * 2 * page->vres)); ++ owidth = _TIFFClampDoubleToUInt32(iwidth - (hmargin * 2 * page->hres)); ++ olength = _TIFFClampDoubleToUInt32(ilength - (vmargin * 2 * page->vres)); + } + } + +@@ -5927,6 +5927,12 @@ computeOutputPixelOffsets (struct crop_mask *crop, struct image_data *image, + if (olength > ilength) + olength = ilength; + ++ if (owidth == 0 || olength == 0) ++ { ++ TIFFError("computeOutputPixelOffsets", "Integer overflow when calculating the number of pages"); ++ exit(EXIT_FAILURE); ++ } ++ + /* Compute the number of pages required for Portrait or Landscape */ + switch (page->orient) + { +-- +GitLab + diff --git a/srcpkgs/tiff5/template b/srcpkgs/tiff5/template new file mode 100644 index 0000000000000..aad4bdc098613 --- /dev/null +++ b/srcpkgs/tiff5/template @@ -0,0 +1,38 @@ +# Template file for 'tiff5' +pkgname=tiff5 +version=4.4.0 +revision=1 +build_style=gnu-configure +configure_args="--enable-cxx --without-x" +makedepends="jbigkit-devel libjpeg-turbo-devel + liblzma-devel libzstd-devel zlib-devel" +short_desc="Library and tools for reading and writing TIFF data files" +maintainer="mobinmob " +license="custom:libtiff" +homepage="http://www.simplesystems.org/libtiff/" +distfiles="https://download.osgeo.org/libtiff/tiff-${version}.tar.gz" +checksum=917223b37538959aca3b790d2d73aa6e626b688e02dcda272aec24c2f498abed + +post_install() { + for f in ${DESTDIR}/usr/share/man/man3/*.3tiff; do + mv ${f} ${f%tiff} + done + vlicense COPYRIGHT + # Remove binaries and their man pages. + rm "${DESTDIR}"/usr/bin/* + rm "${DESTDIR}"/usr/share/man/man1/* +} + +tiff5-devel_package() { + depends="${makedepends} ${sourcepkg}>=${version}_${revision}" + conflicts="tiff-devel" + short_desc+=" - development files" + pkg_install() { + vmove usr/include + vmove usr/lib/pkgconfig + vmove "usr/lib/*.a" + vmove "usr/lib/*.so" + vmove usr/share/man/man3 + vmove usr/share/doc + } +} From 969490f97ae604f35d773eaa4d6de34aaa458167 Mon Sep 17 00:00:00 2001 From: mobinmob Date: Fri, 29 Dec 2023 17:48:22 +0200 Subject: [PATCH 2/2] wps-office: update to 11.1.0.11711. --- srcpkgs/wps-office/template | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/srcpkgs/wps-office/template b/srcpkgs/wps-office/template index 0f0d223fa812b..43c0f3d458e29 100644 --- a/srcpkgs/wps-office/template +++ b/srcpkgs/wps-office/template @@ -1,7 +1,7 @@ # Template file for 'wps-office' pkgname=wps-office -version=11.1.0.10920 -revision=2 +version=11.1.0.11711 +revision=1 archs="x86_64" short_desc="Linux office suite with similar appearance to MS Office" maintainer="mobinmob " @@ -12,8 +12,8 @@ maintainer="mobinmob " license="custom:EULA" homepage="http://wps-community.org" changelog="https://www.wps.com/whatsnew/linux/" -checksum=e252ac96473291df1e9dbeff2d1aedd1299f5ef411fa012ad617cfcd47dc3462 -# allow_unknown_shlibs=yes +checksum=119a643c42d4b2fdc8e377f1a7625c31820ff11488c20b67a94c8ac662541d1a +allow_unknown_shlibs=yes nodebug=yes nostrip=yes restricted=yes @@ -24,7 +24,7 @@ repository=nonfree # The programs themselves are PIE, but the error reporter isn't :/ nopie=yes -_disturl=http://wdl1.pcfg.cache.wpscdn.com/wpsdl/wpsoffice/download/linux/10920 +_disturl=http://wdl1.pcfg.cache.wpscdn.com/wpsdl/wpsoffice/download/linux/${version##*.} _distTar="${pkgname}-${version}.XA-1.x86_64.rpm" distfiles="${_disturl}/${_distTar}" @@ -57,4 +57,8 @@ post_install() { rm -f ${DESTDIR}/opt/kingsoft/wps-office/office6/librpc{et,wps,wpp}api.so # systemd rm -f ${DESTDIR}/opt/kingsoft/wps-office/office6/libdbus-1.so* + + # stdlibc++ + rm -f ${DESTDIR}/opt/kingsoft/wps-office/office6/libstdc++.so.6 + rm -f ${DESTDIR}/opt/kingsoft/wps-office/office6/libstdc++.so.6.0.28 }