diff options
Diffstat (limited to 'external/libtiff')
-rw-r--r-- | external/libtiff/0001-ofz-54685-Timeout.patch | 59 | ||||
-rw-r--r-- | external/libtiff/ExternalProject_libtiff.mk | 74 | ||||
-rw-r--r-- | external/libtiff/Makefile | 7 | ||||
-rw-r--r-- | external/libtiff/Module_libtiff.mk | 17 | ||||
-rw-r--r-- | external/libtiff/README | 3 | ||||
-rw-r--r-- | external/libtiff/UnpackedTarball_libtiff.mk | 21 | ||||
-rw-r--r-- | external/libtiff/libtiff.linknolibs.patch | 11 |
7 files changed, 192 insertions, 0 deletions
diff --git a/external/libtiff/0001-ofz-54685-Timeout.patch b/external/libtiff/0001-ofz-54685-Timeout.patch new file mode 100644 index 0000000000..e09b9679f0 --- /dev/null +++ b/external/libtiff/0001-ofz-54685-Timeout.patch @@ -0,0 +1,59 @@ +From caab95ab518aafbc985974098ad806f769c462ea Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com> +Date: Fri, 20 Jan 2023 10:41:34 +0000 +Subject: [PATCH] ofz#54685 Timeout + +--- + libtiff/tif_ojpeg.c | 29 +++++++++++++++++++++++++++++ + 1 file changed, 29 insertions(+) + +diff --git a/libtiff/tif_ojpeg.c b/libtiff/tif_ojpeg.c +index 0c915de2..27b84611 100644 +--- a/libtiff/tif_ojpeg.c ++++ b/libtiff/tif_ojpeg.c +@@ -1312,6 +1312,34 @@ static int OJPEGReadSecondarySos(TIFF *tif, uint16_t s) + return (1); + } + ++// see also vcl/source/filter/jpeg/jpegc.cxx ++static void emitMessage(j_common_ptr cinfo, int msg_level) ++{ ++ if (msg_level < 0) ++ { ++ // https://libjpeg-turbo.org/pmwiki/uploads/About/TwoIssueswiththeJPEGStandard.pdf ++ // try to retain some degree of recoverability up to some reasonable ++ // limit (initially using ImageMagick's current limit of 1000), then ++ // bail. ++ const int WarningLimit = 1000; ++#if defined(FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION) ++ // ofz#50452 due to Timeouts, just abandon fuzzing on any ++ // JWRN_NOT_SEQUENTIAL ++ if (cinfo->err->msg_code == JWRN_NOT_SEQUENTIAL) ++ { ++ cinfo->err->error_exit(cinfo); ++ return; ++ } ++#endif ++ if (++cinfo->err->num_warnings > WarningLimit) ++ cinfo->err->error_exit(cinfo); ++ else ++ cinfo->err->output_message(cinfo); ++ } ++ else if (cinfo->err->trace_level >= msg_level) ++ cinfo->err->output_message(cinfo); ++} ++ + static int OJPEGWriteHeaderInfo(TIFF *tif) + { + static const char module[] = "OJPEGWriteHeaderInfo"; +@@ -1327,6 +1355,7 @@ static int OJPEGWriteHeaderInfo(TIFF *tif) + sp->libjpeg_jpeg_error_mgr.output_message = + OJPEGLibjpegJpegErrorMgrOutputMessage; + sp->libjpeg_jpeg_error_mgr.error_exit = OJPEGLibjpegJpegErrorMgrErrorExit; ++ sp->libjpeg_jpeg_error_mgr.emit_message = emitMessage; + sp->libjpeg_jpeg_decompress_struct.err = &(sp->libjpeg_jpeg_error_mgr); + sp->libjpeg_jpeg_decompress_struct.client_data = (void *)tif; + if (jpeg_create_decompress_encap( +-- +2.39.0 + diff --git a/external/libtiff/ExternalProject_libtiff.mk b/external/libtiff/ExternalProject_libtiff.mk new file mode 100644 index 0000000000..f6bcba1066 --- /dev/null +++ b/external/libtiff/ExternalProject_libtiff.mk @@ -0,0 +1,74 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +$(eval $(call gb_ExternalProject_ExternalProject,libtiff)) + +$(eval $(call gb_ExternalProject_register_targets,libtiff,\ + build \ +)) + +$(eval $(call gb_ExternalProject_use_externals,libtiff,\ + libjpeg \ + libwebp \ + zlib \ +)) + +$(eval $(call gb_ExternalProject_use_autoconf,libtiff,build)) + +# using ac_cv_lib_z_inflateEnd=yes to skip test for our +# static windows lib where the name is zlib not z +# using ac_cv_lib_jpeg_jpeg_read_scanlines and +# ac_cv_lib_jpeg_jpeg12_read_scanlines to skip tests +# for our static jpeg lib where the name is libjpeg-turbo.lib +# or liblibjpeg-turbo.a not libjpeg.lib/libjpeg.a +# we're building this statically anyway so the lib isn't +# used during the link done here + +$(call gb_ExternalProject_get_state_target,libtiff,build) : + $(call gb_Trace_StartRange,libtiff,EXTERNAL) + $(call gb_ExternalProject_run,build,\ + export PKG_CONFIG="" \ + && MAKE=$(MAKE) $(gb_RUN_CONFIGURE) ./configure \ + --enable-static \ + --enable-jpeg \ + --enable-zlib \ + --enable-webp \ + --disable-shared \ + --disable-cxx \ + --disable-libdeflate \ + --disable-jbig \ + --disable-lerc \ + --disable-lzma \ + --disable-mdi \ + --disable-win32-io \ + --disable-zstd \ + --with-pic \ + --without-x \ + $(if $(verbose),--disable-silent-rules,--enable-silent-rules) \ + CFLAGS="$(CFLAGS) $(call gb_ExternalProject_get_build_flags,libtiff) $(gb_EMSCRIPTEN_CFLAGS)" \ + $(if $(SYSTEM_ZLIB),,--with-zlib-include-dir="$(call gb_UnpackedTarball_get_dir,zlib)") \ + $(if $(SYSTEM_ZLIB),,--with-zlib-lib-dir="$(gb_StaticLibrary_WORKDIR)") \ + $(if $(SYSTEM_LIBJPEG),,--with-jpeg-include-dir="$(call gb_UnpackedTarball_get_dir,libjpeg-turbo)") \ + $(if $(SYSTEM_LIBJPEG),,--with-jpeg-lib-dir="$(gb_StaticLibrary_WORKDIR)") \ + $(if $(SYSTEM_LIBWEBP),,--with-webp-include-dir="$(call gb_UnpackedTarball_get_dir,libwebp/src)") \ + $(if $(SYSTEM_LIBWEBP),,$(if $(filter WNT,$(OS_FOR_BUILD)),\ + --with-webp-lib-dir="$(call gb_UnpackedTarball_get_dir,libwebp)/output/lib/libwebp$(if $(MSVC_USE_DEBUG_RUNTIME),_debug)$(gb_StaticLibrary_PLAINEXT)", \ + --with-webp-lib-dir="$(call gb_UnpackedTarball_get_dir,libwebp)/src/.libs")) \ + CPPFLAGS="$(CPPFLAGS) $(BOOST_CPPFLAGS) $(gb_EMSCRIPTEN_CPPFLAGS)" \ + LDFLAGS="$(call gb_ExternalProject_get_link_flags,libtiff) $(gb_EMSCRIPTEN_LDFLAGS)" \ + ac_cv_lib_z_inflateEnd=yes \ + ac_cv_lib_jpeg_jpeg_read_scanlines=yes \ + ac_cv_lib_jpeg_jpeg12_read_scanlines=no \ + ac_cv_lib_webp_WebPDecode=yes \ + $(gb_CONFIGURE_PLATFORMS) \ + && cd libtiff && $(MAKE) libtiff.la \ + ) + $(call gb_Trace_EndRange,libtiff,EXTERNAL) + +# vim: set noet sw=4 ts=4: diff --git a/external/libtiff/Makefile b/external/libtiff/Makefile new file mode 100644 index 0000000000..e4968cf85f --- /dev/null +++ b/external/libtiff/Makefile @@ -0,0 +1,7 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- + +module_directory:=$(dir $(realpath $(firstword $(MAKEFILE_LIST)))) + +include $(module_directory)/../../solenv/gbuild/partial_build.mk + +# vim: set noet sw=4 ts=4: diff --git a/external/libtiff/Module_libtiff.mk b/external/libtiff/Module_libtiff.mk new file mode 100644 index 0000000000..adf8114e6e --- /dev/null +++ b/external/libtiff/Module_libtiff.mk @@ -0,0 +1,17 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +$(eval $(call gb_Module_Module,libtiff)) + +$(eval $(call gb_Module_add_targets,libtiff,\ + ExternalProject_libtiff \ + UnpackedTarball_libtiff \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/external/libtiff/README b/external/libtiff/README new file mode 100644 index 0000000000..a650ea584a --- /dev/null +++ b/external/libtiff/README @@ -0,0 +1,3 @@ +libtiff is a library to encode and decode images in TIFF format, from [http://download.osgeo.org/libtiff/] + +For the moment we use it only for decoding part. diff --git a/external/libtiff/UnpackedTarball_libtiff.mk b/external/libtiff/UnpackedTarball_libtiff.mk new file mode 100644 index 0000000000..f7eeb6ace8 --- /dev/null +++ b/external/libtiff/UnpackedTarball_libtiff.mk @@ -0,0 +1,21 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +$(eval $(call gb_UnpackedTarball_UnpackedTarball,libtiff)) + +$(eval $(call gb_UnpackedTarball_set_tarball,libtiff,$(LIBTIFF_TARBALL))) + +$(eval $(call gb_UnpackedTarball_set_patchlevel,libtiff,1)) + +$(eval $(call gb_UnpackedTarball_add_patches,libtiff,\ + external/libtiff/libtiff.linknolibs.patch \ + external/libtiff/0001-ofz-54685-Timeout.patch \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/external/libtiff/libtiff.linknolibs.patch b/external/libtiff/libtiff.linknolibs.patch new file mode 100644 index 0000000000..bd03af3a70 --- /dev/null +++ b/external/libtiff/libtiff.linknolibs.patch @@ -0,0 +1,11 @@ +--- a/libtiff/Makefile.in 2022-05-21 15:32:48.069999327 +0100 ++++ b/libtiff/Makefile.in 2022-05-21 15:32:59.051499293 +0100 +@@ -372,7 +372,7 @@ + LDFLAGS = @LDFLAGS@ + LIBDIR = @LIBDIR@ + LIBOBJS = @LIBOBJS@ +-LIBS = @LIBS@ ++#LIBS = @LIBS@ + LIBTIFF_ALPHA_VERSION = @LIBTIFF_ALPHA_VERSION@ + LIBTIFF_DOCDIR = @LIBTIFF_DOCDIR@ + LIBTIFF_MAJOR_VERSION = @LIBTIFF_MAJOR_VERSION@ |