Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 85ee2f9849 |
@ -1 +0,0 @@
|
||||
d09a68c4443b7a12a0484c073adaef348b44cb92 SOURCES/openexr-2.2.0.tar.gz
|
||||
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
||||
SOURCES/openexr-2.2.0.tar.gz
|
||||
openexr-3.1.10.tar.gz
|
||||
|
||||
@ -1,63 +0,0 @@
|
||||
diff -up openexr-2.1.0/IlmImfTest/testFutureProofing.cpp.bigendian openexr-2.1.0/IlmImfTest/testFutureProofing.cpp
|
||||
--- openexr-2.1.0/IlmImfTest/testFutureProofing.cpp.bigendian 2013-11-11 17:09:51.000000000 -0600
|
||||
+++ openexr-2.1.0/IlmImfTest/testFutureProofing.cpp 2013-11-27 08:43:55.486026741 -0600
|
||||
@@ -40,6 +40,7 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <assert.h>
|
||||
+#include <byteswap.h>
|
||||
|
||||
#include "tmpDir.h"
|
||||
#include "testFutureProofing.h"
|
||||
@@ -64,6 +65,7 @@
|
||||
#include <ImfNamespace.h>
|
||||
#include <ImathNamespace.h>
|
||||
#include <IlmThreadNamespace.h>
|
||||
+#include <ImfSystemSpecific.h>
|
||||
|
||||
namespace IMF = OPENEXR_IMF_NAMESPACE;
|
||||
using namespace IMF;
|
||||
@@ -1234,6 +1236,12 @@ modifyType (bool modify_version)
|
||||
|
||||
//length of attribute
|
||||
fread(&length,4,1,f);
|
||||
+ if (!GLOBAL_SYSTEM_LITTLE_ENDIAN)
|
||||
+ {
|
||||
+ int tmp = bswap_32(length);
|
||||
+ length = tmp;
|
||||
+ }
|
||||
+
|
||||
if(!modify_version && attrib_name=="type")
|
||||
{
|
||||
// modify the type of part 1 to be 'X<whatevever>'
|
||||
diff -up openexr-2.1.0/IlmImfTest/testMultiPartFileMixingBasic.cpp.bigendian openexr-2.1.0/IlmImfTest/testMultiPartFileMixingBasic.cpp
|
||||
--- openexr-2.1.0/IlmImfTest/testMultiPartFileMixingBasic.cpp.bigendian 2013-11-11 17:09:52.000000000 -0600
|
||||
+++ openexr-2.1.0/IlmImfTest/testMultiPartFileMixingBasic.cpp 2013-11-27 08:44:19.370775892 -0600
|
||||
@@ -40,6 +40,7 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <assert.h>
|
||||
+#include <byteswap.h>
|
||||
|
||||
#include "tmpDir.h"
|
||||
#include "testMultiPartFileMixingBasic.h"
|
||||
@@ -59,6 +60,7 @@
|
||||
#include <ImfDeepScanLineInputPart.h>
|
||||
#include <ImfPartType.h>
|
||||
#include <ImfMisc.h>
|
||||
+#include <ImfSystemSpecific.h>
|
||||
|
||||
namespace IMF = OPENEXR_IMF_NAMESPACE;
|
||||
using namespace IMF;
|
||||
@@ -1383,6 +1385,11 @@ killOffsetTables (const std::string & fn
|
||||
|
||||
//length of attribute
|
||||
fread(&length,4,1,f);
|
||||
+ if (!GLOBAL_SYSTEM_LITTLE_ENDIAN)
|
||||
+ {
|
||||
+ int tmp = bswap_32(length);
|
||||
+ length = tmp;
|
||||
+ }
|
||||
|
||||
//value of attribute
|
||||
for(int i=0;i<length;i++)
|
||||
@ -1,274 +0,0 @@
|
||||
Name: OpenEXR
|
||||
Summary: A high dynamic-range (HDR) image file format
|
||||
Version: 2.2.0
|
||||
Release: 12%{?dist}
|
||||
|
||||
License: BSD
|
||||
URL: http://www.openexr.com/
|
||||
Source0: http://download.savannah.nongnu.org/releases/openexr/openexr-%{version}.tar.gz
|
||||
# fix tests for big endian arches
|
||||
# https://github.com/openexr/openexr/issues/81
|
||||
Patch0: openexr-2.1.0-bigendian.patch
|
||||
|
||||
Obsoletes: openexr < %{version}-%{release}
|
||||
Provides: openexr = %{version}-%{release}
|
||||
|
||||
# https://github.com/openexr/openexr/issues/130
|
||||
BuildConflicts: OpenEXR-devel < 2.2.0
|
||||
|
||||
BuildRequires: ilmbase-devel >= %{version}
|
||||
BuildRequires: zlib-devel
|
||||
BuildRequires: pkgconfig
|
||||
|
||||
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
|
||||
|
||||
%description
|
||||
OpenEXR is a high dynamic-range (HDR) image file format developed by Industrial
|
||||
Light & Magic for use in computer imaging applications. This package contains
|
||||
libraries and sample applications for handling the format.
|
||||
|
||||
%package devel
|
||||
Summary: Headers and libraries for building apps that use %{name}
|
||||
Obsoletes: openexr-devel < %{version}-%{release}
|
||||
Provides: openexr-devel = %{version}-%{release}
|
||||
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
|
||||
Requires: ilmbase-devel%{?_isa}
|
||||
%description devel
|
||||
%{summary}.
|
||||
|
||||
%package libs
|
||||
Summary: %{name} runtime libraries
|
||||
%description libs
|
||||
%{summary}.
|
||||
|
||||
|
||||
%prep
|
||||
%setup -q -n openexr-%{version}
|
||||
%patch0 -p1 -b .bigendian
|
||||
|
||||
|
||||
%build
|
||||
%configure --disable-static
|
||||
|
||||
# hack to omit unused-direct-shlib-dependencies
|
||||
#sed -i -e 's! -shared ! -Wl,--as-needed\0!g' libtool
|
||||
|
||||
make %{?_smp_mflags}
|
||||
|
||||
|
||||
%install
|
||||
make install DESTDIR=%{buildroot}
|
||||
|
||||
#unpackaged files
|
||||
rm -fv %{buildroot}%{_libdir}/lib*.la
|
||||
rm -rf %{buildroot}%{_docdir}/%{name}-%{version}
|
||||
|
||||
|
||||
%check
|
||||
export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:%{buildroot}%{_libdir}/pkgconfig
|
||||
test "$(pkg-config --modversion OpenEXR)" = "%{version}"
|
||||
make %{?_smp_mflags} check ||:
|
||||
|
||||
|
||||
%files
|
||||
%{_bindir}/exr*
|
||||
|
||||
%post libs -p /sbin/ldconfig
|
||||
%postun libs -p /sbin/ldconfig
|
||||
|
||||
%files libs
|
||||
%doc AUTHORS ChangeLog LICENSE NEWS README
|
||||
%{_libdir}/libIlmImf-2_2.so.22*
|
||||
%{_libdir}/libIlmImfUtil-2_2.so.22*
|
||||
|
||||
%files devel
|
||||
#omit for now, they're mostly useless, and include multilib conflicts (#342781)
|
||||
#doc rpmdocs/examples
|
||||
%{_datadir}/aclocal/openexr.m4
|
||||
%{_includedir}/OpenEXR/*
|
||||
%{_libdir}/libIlmImf*.so
|
||||
%{_libdir}/pkgconfig/OpenEXR.pc
|
||||
|
||||
|
||||
%changelog
|
||||
* Tue Dec 15 2020 Owen Taylor <otaylor@redhat.com> - 2.2.0-12
|
||||
- In check, don't override PKG_CONFIG_PATH from the environment (#1907528)
|
||||
|
||||
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.2.0-11
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
||||
|
||||
* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.2.0-10
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
||||
|
||||
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.2.0-9
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
|
||||
|
||||
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.2.0-8
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
|
||||
|
||||
* Wed Oct 12 2016 Björn Esser <fedora@besser82.io> - 2.2.0-7
|
||||
- rebuild (GCC 6.2)
|
||||
- whitespace clean-up
|
||||
|
||||
* Tue Oct 11 2016 Rex Dieter <rdieter@fedoraproject.org> - 2.2.0-6
|
||||
- -devel: make ilmbase-devel dep arch'd
|
||||
|
||||
* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 2.2.0-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
|
||||
|
||||
* Tue Jun 16 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.2.0-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
|
||||
|
||||
* Thu Apr 16 2015 Rex Dieter <rdieter@fedoraproject.org> 2.2.0-3
|
||||
- rebuild (gcc5)
|
||||
|
||||
* Wed Feb 18 2015 Rex Dieter <rdieter@fedoraproject.org> 2.2.0-2
|
||||
- rebuild (gcc5)
|
||||
|
||||
* Thu Nov 20 2014 Rex Dieter <rdieter@fedoraproject.org> 2.2.0-1
|
||||
- 2.2.0
|
||||
|
||||
* Fri Aug 15 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.1.0-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
|
||||
|
||||
* Fri Jun 06 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.1.0-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
|
||||
|
||||
* Fri Jan 31 2014 Rex Dieter <rdieter@fedoraproject.org> 2.1.0-3
|
||||
- respin headers patch (to match upstream fix)
|
||||
|
||||
* Wed Nov 27 2013 Rex Dieter <rdieter@fedoraproject.org> 2.1.0-2
|
||||
- install ImfDeepImageStateAttribute.h header too
|
||||
|
||||
* Wed Nov 27 2013 Rex Dieter <rdieter@fedoraproject.org> 2.1.0-1
|
||||
- 2.1.0
|
||||
|
||||
* Wed Nov 20 2013 Dan Horák <dan[at]danny.cz> 2.0.1-3
|
||||
- remove testing residue from optflags
|
||||
|
||||
* Wed Nov 20 2013 Dan Horák <dan[at]danny.cz> 2.0.1-2
|
||||
- fix tests for big endian arches
|
||||
|
||||
* Wed Aug 28 2013 Rex Dieter <rdieter@fedoraproject.org> 2.0.1-1
|
||||
- openexr-2.0.1
|
||||
|
||||
* Fri Aug 02 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.7.1-6
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
|
||||
|
||||
* Sun Mar 10 2013 Nicolas Chauvet <kwizart@gmail.com> - 1.7.1-5
|
||||
- Back to upstream ABI (f19+, el7+)
|
||||
|
||||
* Wed Feb 13 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.7.1-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
|
||||
|
||||
* Mon Oct 15 2012 Nicolas Chauvet <kwizart@gmail.com> - 1.7.1-3
|
||||
- Bump to hide revertion
|
||||
|
||||
* Fri Aug 31 2012 Rex Dieter <rdieter@fedoraproject.org> 1.7.1-2
|
||||
- rebuild
|
||||
|
||||
* Thu Aug 02 2012 Nicolas Chauvet <kwizart@gmail.com> - 1.7.1-1
|
||||
- Update to 1.7.1
|
||||
|
||||
-* Wed Jul 18 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.7.0-5
|
||||
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
|
||||
|
||||
* Tue Feb 28 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.7.0-4
|
||||
- Rebuilt for c++ ABI breakage
|
||||
|
||||
* Thu Jan 12 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.7.0-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
|
||||
|
||||
* Mon Feb 07 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.7.0-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
|
||||
|
||||
* Wed Aug 11 2010 Rex Dieter <rdieter@fedoraproject.org> 1.7.0-1
|
||||
- openexr-1.7.0
|
||||
|
||||
* Wed Jul 29 2009 Rex Dieter <rdieter@fedoraproject.org> 1.6.1-8
|
||||
- CVE-2009-1720 OpenEXR: Multiple integer overflows (#513995)
|
||||
- CVE-2009-1721 OpenEXR: Invalid pointer free by image decompression (#514003)
|
||||
|
||||
* Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.6.1-7
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
|
||||
|
||||
* Mon Feb 23 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.6.1-6
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
|
||||
|
||||
* Fri Dec 12 2008 Caolán McNamara <caolanm@redhat.com> 1.6.1-5
|
||||
- rebuild to get provides pkgconfig(OpenEXR)
|
||||
|
||||
* Fri May 09 2008 Rex Dieter <rdieter@fedoraproject.org> 1.6.1-4
|
||||
- drop: Obsoletes: OpenEXR-utils (see OpenEXR_Viewers review, bug #428228c3)
|
||||
|
||||
* Fri Feb 01 2008 Rex Dieter <rdieter@fedoraproject.org> 1.6.1-3
|
||||
- gcc43 patch
|
||||
- purge rpaths
|
||||
|
||||
* Wed Jan 09 2008 Rex Dieter <rdieter[AT]fedoraproject.org> 1.6.1-2
|
||||
- hack to omit unused-direct-shlib-dependencies
|
||||
- conditionalize -libs (f8+)
|
||||
|
||||
* Mon Jan 07 2008 Rex Dieter <rdieter[AT]fedoraproject.org> 1.6.1-1
|
||||
- openexr-1.6.1
|
||||
|
||||
* Tue Oct 30 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 1.6.0-5
|
||||
- multiarch conflicts in OpenEXR (#342781)
|
||||
- don't own %%_includedir/OpenEXR (leave that to ilmbase)
|
||||
|
||||
* Mon Oct 15 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 1.6.0-4
|
||||
- -libs: %%post/%%postun -p /sbin/ldconfig
|
||||
|
||||
* Fri Oct 12 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 1.6.0-2
|
||||
- openexr-1.6.0
|
||||
|
||||
* Mon Sep 17 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 1.4.0a-6
|
||||
- libs: -Requires: %%name
|
||||
|
||||
* Wed Aug 22 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 1.4.0a-5
|
||||
- -libs: new subpkg to be multilib friendly
|
||||
- -utils: package exrdisplay separately (separate fltk dep)
|
||||
|
||||
* Sat Oct 28 2006 Rex Dieter <rexdieter[AT]users.sf.net> 1.4.0a-4
|
||||
- Obsoletes/Provides: openexr(-devel) (rpmforge compatibility)
|
||||
|
||||
* Thu Sep 14 2006 Rex Dieter <rexdieter[AT]users.sf.net> 1.4.0a-3
|
||||
- pkgconfig patch to use Libs.private
|
||||
|
||||
* Thu Sep 14 2006 Rex Dieter <rexdieter[AT]users.sf.net> 1.4.0a-2
|
||||
- -devel: +Requires: pkgconfig
|
||||
|
||||
* Tue Aug 29 2006 Rex Dieter <rexdieter[AT]users.sf.net> 1.4.0a-1
|
||||
- openexr-1.4.0a
|
||||
|
||||
* Sat Feb 18 2006 Ignacio Vazquez-Abrams <ivazquez@ivazquez.net> 1.2.2-7
|
||||
- Further zlib fixes (#165729)
|
||||
|
||||
* Mon Feb 13 2006 Ignacio Vazquez-Abrams <ivazquez@ivazquez.net> 1.2.2-6
|
||||
- Rebuild for Fedora Extras 5
|
||||
|
||||
* Wed Aug 17 2005 Ignacio Vazquez-Abrams <ivazquez@ivazquez.net> 1.2.2-5
|
||||
- Remove *.a from %%files devel
|
||||
|
||||
* Tue Aug 16 2005 Ignacio Vazquez-Abrams <ivazquez@ivazquez.net> 1.2.2-4
|
||||
- Removed -devel dep on zlib-devel (#165729)
|
||||
- Added --disable-static to %%configure
|
||||
- Fixed build with GCC 4.0.1
|
||||
- Added .so links to -devel
|
||||
|
||||
* Wed May 18 2005 Ignacio Vazquez-Abrams <ivazquez@ivazquez.net> 1.2.2-3
|
||||
- Add zlib-devel to BR
|
||||
- Delete all .la files (#157652)
|
||||
|
||||
* Mon May 9 2005 Ignacio Vazquez-Abrams <ivazquez@ivazquez.net> 1.2.2-2
|
||||
- Add disttag
|
||||
|
||||
* Sun May 8 2005 Ignacio Vazquez-Abrams <ivazquez@ivazquez.net> 1.2.2-2
|
||||
- Fix BuildRequires
|
||||
- Fix Requires on -devel
|
||||
- Add %%post[un] scriptlets
|
||||
- Fix ownership in -devel
|
||||
- Don't have .deps files in %%doc
|
||||
|
||||
* Wed Mar 30 2005 Ignacio Vazquez-Abrams <ivazquez@ivazquez.net> 1.2.2-1
|
||||
- Initial RPM release
|
||||
34
gcc14.patch
Normal file
34
gcc14.patch
Normal file
@ -0,0 +1,34 @@
|
||||
src/lib/OpenEXRCore/internal_zip.c: In function ‘apply_zip_impl’:
|
||||
src/lib/OpenEXRCore/internal_zip.c:365:21: error: passing argument 2 of ‘compress2’ from incompatible pointer type [-Wincompatible-pointer-types]
|
||||
/usr/include/zlib.h:1229:69: note: expected ‘long unsigned int *’ but argument is of type ‘size_t *’ {aka ‘unsigned int *’}
|
||||
|
||||
src/lib/OpenEXRCore/internal_dwa_compressor.h: In function ‘exr_compress_buffer’:
|
||||
src/lib/OpenEXRCore/internal_dwa_compressor.h:57:21: error: passing argument 2 of ‘compress2’ from incompatible pointer type [-Wincompatible-pointer-types]
|
||||
/usr/include/zlib.h:1229:69: note: expected ‘long unsigned int *’ but argument is of type ‘size_t *’ {aka ‘unsigned int *’}
|
||||
|
||||
diff --git a/src/lib/OpenEXRCore/internal_dwa_compressor.h b/src/lib/OpenEXRCore/internal_dwa_compressor.h
|
||||
index e1d55336..0ee98d63 100644
|
||||
--- a/src/lib/OpenEXRCore/internal_dwa_compressor.h
|
||||
+++ b/src/lib/OpenEXRCore/internal_dwa_compressor.h
|
||||
@@ -54,7 +54,7 @@ static exr_result_t exr_compress_buffer (
|
||||
compbufsz = out_bytes_avail;
|
||||
if (Z_OK != compress2 (
|
||||
(Bytef*) out,
|
||||
- &compbufsz,
|
||||
+ (uLongf *) &compbufsz,
|
||||
(const Bytef*) in,
|
||||
(uLong) in_bytes,
|
||||
level))
|
||||
diff --git a/src/lib/OpenEXRCore/internal_zip.c b/src/lib/OpenEXRCore/internal_zip.c
|
||||
index f3980aee..820fd673 100644
|
||||
--- a/src/lib/OpenEXRCore/internal_zip.c
|
||||
+++ b/src/lib/OpenEXRCore/internal_zip.c
|
||||
@@ -362,7 +362,7 @@ apply_zip_impl (exr_encode_pipeline_t* encode)
|
||||
compbufsz = encode->compressed_alloc_size;
|
||||
if (Z_OK != compress2 (
|
||||
(Bytef*) encode->compressed_buffer,
|
||||
- &compbufsz,
|
||||
+ (uLongf *) &compbufsz,
|
||||
(const Bytef*) encode->scratch_buffer_1,
|
||||
(uLong) encode->packed_bytes,
|
||||
level))
|
||||
26
march-x86-64-v3.patch
Normal file
26
march-x86-64-v3.patch
Normal file
@ -0,0 +1,26 @@
|
||||
Backport of https://github.com/AcademySoftwareFoundation/openexr/pull/1507
|
||||
|
||||
diff --git a/src/lib/OpenEXRCore/internal_cpuid.h b/src/lib/OpenEXRCore/internal_cpuid.h
|
||||
index edfee0b8..8a2573b8 100644
|
||||
--- a/src/lib/OpenEXRCore/internal_cpuid.h
|
||||
+++ b/src/lib/OpenEXRCore/internal_cpuid.h
|
||||
@@ -39,14 +39,15 @@ check_for_x86_simd (int* f16c, int* avx, int* sse2)
|
||||
*f16c = 0;
|
||||
# endif
|
||||
|
||||
-#elif OPENEXR_ENABLE_X86_SIMD_CHECK
|
||||
-
|
||||
+#elif defined(__AVX__) && defined(__F16C__)
|
||||
// shortcut if everything is turned on / compiled in
|
||||
-# if defined(__AVX__) && defined(__F16C__)
|
||||
*f16c = 1;
|
||||
*avx = 1;
|
||||
*sse2 = 1;
|
||||
-# elif defined(_MSC_VER) && defined(_WIN32)
|
||||
+
|
||||
+#elif OPENEXR_ENABLE_X86_SIMD_CHECK
|
||||
+
|
||||
+# if defined(_MSC_VER) && defined(_WIN32)
|
||||
int regs[4], osxsave;
|
||||
|
||||
__cpuid (regs, 0);
|
||||
532
openexr-3.1.10-CVE-2023-5841.patch
Normal file
532
openexr-3.1.10-CVE-2023-5841.patch
Normal file
@ -0,0 +1,532 @@
|
||||
From 2f4e49b95baaecaae86f93c9ab803500db48c4cc Mon Sep 17 00:00:00 2001
|
||||
From: Kimball Thurston <kdt3rd@gmail.com>
|
||||
Date: Sat, 3 Feb 2024 20:00:53 +1300
|
||||
Subject: [PATCH 1/4] enable deep file checks for core
|
||||
|
||||
Signed-off-by: Kimball Thurston <kdt3rd@gmail.com>
|
||||
---
|
||||
src/lib/OpenEXRUtil/ImfCheckFile.cpp | 181 ++++++++++++++++++++++-----
|
||||
1 file changed, 148 insertions(+), 33 deletions(-)
|
||||
|
||||
diff --git a/src/lib/OpenEXRUtil/ImfCheckFile.cpp b/src/lib/OpenEXRUtil/ImfCheckFile.cpp
|
||||
index 8c4fbe84..8946e88d 100644
|
||||
--- a/src/lib/OpenEXRUtil/ImfCheckFile.cpp
|
||||
+++ b/src/lib/OpenEXRUtil/ImfCheckFile.cpp
|
||||
@@ -1172,11 +1172,83 @@ runChecks(T& source,bool reduceMemory,bool reduceTime)
|
||||
return threw;
|
||||
}
|
||||
|
||||
+static exr_result_t
|
||||
+realloc_deepdata(exr_decode_pipeline_t* decode)
|
||||
+{
|
||||
+ int32_t w = decode->chunk.width;
|
||||
+ int32_t h = decode->chunk.height;
|
||||
+ uint64_t totsamps = 0, bytes = 0;
|
||||
+ const int32_t *sampbuffer = decode->sample_count_table;
|
||||
+ std::vector<uint8_t>* ud = static_cast<std::vector<uint8_t>*>(
|
||||
+ decode->decoding_user_data);
|
||||
+
|
||||
+ if ( ! ud )
|
||||
+ {
|
||||
+ for (int c = 0; c < decode->channel_count; c++)
|
||||
+ {
|
||||
+ exr_coding_channel_info_t& outc = decode->channels[c];
|
||||
+ outc.decode_to_ptr = NULL;
|
||||
+ outc.user_pixel_stride = outc.user_bytes_per_element;
|
||||
+ outc.user_line_stride = 0;
|
||||
+ }
|
||||
+ return EXR_ERR_SUCCESS;
|
||||
+ }
|
||||
+
|
||||
+ if ((decode->decode_flags &
|
||||
+ EXR_DECODE_SAMPLE_COUNTS_AS_INDIVIDUAL))
|
||||
+ {
|
||||
+ for (int32_t y = 0; y < h; ++y)
|
||||
+ {
|
||||
+ for (int x = 0; x < w; ++x)
|
||||
+ totsamps += sampbuffer[x];
|
||||
+ sampbuffer += w;
|
||||
+ }
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ for (int32_t y = 0; y < h; ++y)
|
||||
+ totsamps += sampbuffer[y*w + w - 1];
|
||||
+ }
|
||||
+
|
||||
+ for (int c = 0; c < decode->channel_count; c++)
|
||||
+ {
|
||||
+ exr_coding_channel_info_t& outc = decode->channels[c];
|
||||
+ bytes += totsamps * outc.user_bytes_per_element;
|
||||
+ }
|
||||
+
|
||||
+ if (bytes >= gMaxBytesPerDeepScanline * h)
|
||||
+ {
|
||||
+ for (int c = 0; c < decode->channel_count; c++)
|
||||
+ {
|
||||
+ exr_coding_channel_info_t& outc = decode->channels[c];
|
||||
+ outc.decode_to_ptr = NULL;
|
||||
+ outc.user_pixel_stride = outc.user_bytes_per_element;
|
||||
+ outc.user_line_stride = 0;
|
||||
+ }
|
||||
+ return EXR_ERR_SUCCESS;
|
||||
+ }
|
||||
+
|
||||
+ if (ud->size () < bytes)
|
||||
+ ud->resize (bytes);
|
||||
+
|
||||
+ uint8_t* dptr = &((*ud)[0]);
|
||||
+ for (int c = 0; c < decode->channel_count; c++)
|
||||
+ {
|
||||
+ exr_coding_channel_info_t& outc = decode->channels[c];
|
||||
+ outc.decode_to_ptr = dptr;
|
||||
+ outc.user_pixel_stride = outc.user_bytes_per_element;
|
||||
+ outc.user_line_stride = 0;
|
||||
+
|
||||
+ dptr += totsamps * (uint64_t) outc.user_bytes_per_element;
|
||||
+ }
|
||||
+ return EXR_ERR_SUCCESS;
|
||||
+}
|
||||
+
|
||||
////////////////////////////////////////
|
||||
|
||||
bool readCoreScanlinePart(exr_context_t f, int part, bool reduceMemory, bool reduceTime)
|
||||
{
|
||||
- exr_result_t rv;
|
||||
+ exr_result_t rv, frv;
|
||||
exr_attr_box2i_t datawin;
|
||||
rv = exr_get_data_window (f, part, &datawin);
|
||||
if (rv != EXR_ERR_SUCCESS)
|
||||
@@ -1194,6 +1266,8 @@ bool readCoreScanlinePart(exr_context_t f, int part, bool reduceMemory, bool red
|
||||
if (rv != EXR_ERR_SUCCESS)
|
||||
return true;
|
||||
|
||||
+ frv = rv;
|
||||
+
|
||||
for (uint64_t chunk = 0; chunk < height; chunk += lines_per_chunk)
|
||||
{
|
||||
exr_chunk_info_t cinfo = { 0 };
|
||||
@@ -1202,6 +1276,7 @@ bool readCoreScanlinePart(exr_context_t f, int part, bool reduceMemory, bool red
|
||||
rv = exr_read_scanline_chunk_info (f, part, y, &cinfo);
|
||||
if (rv != EXR_ERR_SUCCESS)
|
||||
{
|
||||
+ frv = rv;
|
||||
if (reduceTime)
|
||||
break;
|
||||
continue;
|
||||
@@ -1224,22 +1299,33 @@ bool readCoreScanlinePart(exr_context_t f, int part, bool reduceMemory, bool red
|
||||
bytes += width * (uint64_t)outc.user_bytes_per_element * (uint64_t)lines_per_chunk;
|
||||
}
|
||||
|
||||
- // TODO: check we are supposed to multiple by lines per chunk above
|
||||
doread = true;
|
||||
- if (reduceMemory && bytes >= gMaxBytesPerScanline)
|
||||
- doread = false;
|
||||
+ if (cinfo.type == EXR_STORAGE_DEEP_SCANLINE)
|
||||
+ {
|
||||
+ decoder.decoding_user_data = &imgdata;
|
||||
+ decoder.realloc_nonimage_data_fn = &realloc_deepdata;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ if (reduceMemory && bytes >= gMaxBytesPerScanline)
|
||||
+ doread = false;
|
||||
|
||||
- if (doread)
|
||||
- imgdata.resize( bytes );
|
||||
+ if (doread)
|
||||
+ imgdata.resize (bytes);
|
||||
+ }
|
||||
rv = exr_decoding_choose_default_routines (f, part, &decoder);
|
||||
if (rv != EXR_ERR_SUCCESS)
|
||||
+ {
|
||||
+ frv = rv;
|
||||
break;
|
||||
+ }
|
||||
}
|
||||
else
|
||||
{
|
||||
rv = exr_decoding_update (f, part, &cinfo, &decoder);
|
||||
if (rv != EXR_ERR_SUCCESS)
|
||||
{
|
||||
+ frv = rv;
|
||||
if (reduceTime)
|
||||
break;
|
||||
continue;
|
||||
@@ -1248,19 +1334,25 @@ bool readCoreScanlinePart(exr_context_t f, int part, bool reduceMemory, bool red
|
||||
|
||||
if (doread)
|
||||
{
|
||||
- uint8_t *dptr = &(imgdata[0]);
|
||||
- for (int c = 0; c < decoder.channel_count; c++)
|
||||
+ if (cinfo.type != EXR_STORAGE_DEEP_SCANLINE)
|
||||
{
|
||||
- exr_coding_channel_info_t & outc = decoder.channels[c];
|
||||
- outc.decode_to_ptr = dptr;
|
||||
- outc.user_pixel_stride = outc.user_bytes_per_element;
|
||||
- outc.user_line_stride = outc.user_pixel_stride * width;
|
||||
- dptr += width * (uint64_t)outc.user_bytes_per_element * (uint64_t)lines_per_chunk;
|
||||
+ uint8_t* dptr = &(imgdata[0]);
|
||||
+ for (int c = 0; c < decoder.channel_count; c++)
|
||||
+ {
|
||||
+ exr_coding_channel_info_t& outc = decoder.channels[c];
|
||||
+ outc.decode_to_ptr = dptr;
|
||||
+ outc.user_pixel_stride = outc.user_bytes_per_element;
|
||||
+ outc.user_line_stride = outc.user_pixel_stride * width;
|
||||
+
|
||||
+ dptr += width * (uint64_t) outc.user_bytes_per_element *
|
||||
+ (uint64_t) lines_per_chunk;
|
||||
+ }
|
||||
}
|
||||
|
||||
rv = exr_decoding_run (f, part, &decoder);
|
||||
if (rv != EXR_ERR_SUCCESS)
|
||||
{
|
||||
+ frv = rv;
|
||||
if (reduceTime)
|
||||
break;
|
||||
}
|
||||
@@ -1269,14 +1361,14 @@ bool readCoreScanlinePart(exr_context_t f, int part, bool reduceMemory, bool red
|
||||
|
||||
exr_decoding_destroy (f, &decoder);
|
||||
|
||||
- return (rv != EXR_ERR_SUCCESS);
|
||||
+ return (frv != EXR_ERR_SUCCESS);
|
||||
}
|
||||
|
||||
////////////////////////////////////////
|
||||
|
||||
bool readCoreTiledPart(exr_context_t f, int part, bool reduceMemory, bool reduceTime)
|
||||
{
|
||||
- exr_result_t rv;
|
||||
+ exr_result_t rv, frv;
|
||||
|
||||
exr_attr_box2i_t datawin;
|
||||
rv = exr_get_data_window (f, part, &datawin);
|
||||
@@ -1296,6 +1388,7 @@ bool readCoreTiledPart(exr_context_t f, int part, bool reduceMemory, bool reduce
|
||||
if (rv != EXR_ERR_SUCCESS)
|
||||
return true;
|
||||
|
||||
+ frv = rv;
|
||||
bool keepgoing = true;
|
||||
for (int32_t ylevel = 0; keepgoing && ylevel < levelsy; ++ylevel )
|
||||
{
|
||||
@@ -1305,6 +1398,7 @@ bool readCoreTiledPart(exr_context_t f, int part, bool reduceMemory, bool reduce
|
||||
rv = exr_get_level_sizes (f, part, xlevel, ylevel, &levw, &levh);
|
||||
if (rv != EXR_ERR_SUCCESS)
|
||||
{
|
||||
+ frv = rv;
|
||||
if (reduceTime)
|
||||
{
|
||||
keepgoing = false;
|
||||
@@ -1317,6 +1411,7 @@ bool readCoreTiledPart(exr_context_t f, int part, bool reduceMemory, bool reduce
|
||||
rv = exr_get_tile_sizes (f, part, xlevel, ylevel, &curtw, &curth);
|
||||
if (rv != EXR_ERR_SUCCESS)
|
||||
{
|
||||
+ frv = rv;
|
||||
if (reduceTime)
|
||||
{
|
||||
keepgoing = false;
|
||||
@@ -1343,6 +1438,7 @@ bool readCoreTiledPart(exr_context_t f, int part, bool reduceMemory, bool reduce
|
||||
rv = exr_read_tile_chunk_info (f, part, tx, ty, xlevel, ylevel, &cinfo);
|
||||
if (rv != EXR_ERR_SUCCESS)
|
||||
{
|
||||
+ frv = rv;
|
||||
if (reduceTime)
|
||||
{
|
||||
keepgoing = false;
|
||||
@@ -1356,6 +1452,7 @@ bool readCoreTiledPart(exr_context_t f, int part, bool reduceMemory, bool reduce
|
||||
rv = exr_decoding_initialize (f, part, &cinfo, &decoder);
|
||||
if (rv != EXR_ERR_SUCCESS)
|
||||
{
|
||||
+ frv = rv;
|
||||
keepgoing = false;
|
||||
break;
|
||||
}
|
||||
@@ -1372,14 +1469,24 @@ bool readCoreTiledPart(exr_context_t f, int part, bool reduceMemory, bool reduce
|
||||
}
|
||||
|
||||
doread = true;
|
||||
- if (reduceMemory && bytes >= gMaxTileBytes)
|
||||
- doread = false;
|
||||
+ if (cinfo.type == EXR_STORAGE_DEEP_TILED)
|
||||
+ {
|
||||
+ decoder.decoding_user_data = &tiledata;
|
||||
+ decoder.realloc_nonimage_data_fn = &realloc_deepdata;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ if (reduceMemory && bytes >= gMaxTileBytes)
|
||||
+ doread = false;
|
||||
|
||||
- if (doread)
|
||||
- tiledata.resize( bytes );
|
||||
- rv = exr_decoding_choose_default_routines (f, part, &decoder);
|
||||
+ if (doread)
|
||||
+ tiledata.resize (bytes);
|
||||
+ }
|
||||
+ rv = exr_decoding_choose_default_routines (
|
||||
+ f, part, &decoder);
|
||||
if (rv != EXR_ERR_SUCCESS)
|
||||
{
|
||||
+ frv = rv;
|
||||
keepgoing = false;
|
||||
break;
|
||||
}
|
||||
@@ -1389,6 +1496,7 @@ bool readCoreTiledPart(exr_context_t f, int part, bool reduceMemory, bool reduce
|
||||
rv = exr_decoding_update (f, part, &cinfo, &decoder);
|
||||
if (rv != EXR_ERR_SUCCESS)
|
||||
{
|
||||
+ frv = rv;
|
||||
if (reduceTime)
|
||||
{
|
||||
keepgoing = false;
|
||||
@@ -1400,19 +1508,28 @@ bool readCoreTiledPart(exr_context_t f, int part, bool reduceMemory, bool reduce
|
||||
|
||||
if (doread)
|
||||
{
|
||||
- uint8_t *dptr = &(tiledata[0]);
|
||||
- for (int c = 0; c < decoder.channel_count; c++)
|
||||
+ if (cinfo.type != EXR_STORAGE_DEEP_TILED)
|
||||
{
|
||||
- exr_coding_channel_info_t & outc = decoder.channels[c];
|
||||
- outc.decode_to_ptr = dptr;
|
||||
- outc.user_pixel_stride = outc.user_bytes_per_element;
|
||||
- outc.user_line_stride = outc.user_pixel_stride * curtw;
|
||||
- dptr += (uint64_t)curtw * (uint64_t)outc.user_bytes_per_element * (uint64_t)curth;
|
||||
+ uint8_t* dptr = &(tiledata[0]);
|
||||
+ for (int c = 0; c < decoder.channel_count; c++)
|
||||
+ {
|
||||
+ exr_coding_channel_info_t& outc =
|
||||
+ decoder.channels[c];
|
||||
+ outc.decode_to_ptr = dptr;
|
||||
+ outc.user_pixel_stride =
|
||||
+ outc.user_bytes_per_element;
|
||||
+ outc.user_line_stride =
|
||||
+ outc.user_pixel_stride * curtw;
|
||||
+ dptr += (uint64_t) curtw *
|
||||
+ (uint64_t) outc.user_bytes_per_element *
|
||||
+ (uint64_t) curth;
|
||||
+ }
|
||||
}
|
||||
|
||||
rv = exr_decoding_run (f, part, &decoder);
|
||||
if (rv != EXR_ERR_SUCCESS)
|
||||
{
|
||||
+ frv = rv;
|
||||
if (reduceTime)
|
||||
{
|
||||
keepgoing = false;
|
||||
@@ -1448,16 +1565,14 @@ bool checkCoreFile(exr_context_t f, bool reduceMemory, bool reduceTime)
|
||||
if (rv != EXR_ERR_SUCCESS)
|
||||
return true;
|
||||
|
||||
- // TODO: Need to fill this in
|
||||
- if (store == EXR_STORAGE_DEEP_SCANLINE || store == EXR_STORAGE_DEEP_TILED)
|
||||
- continue;
|
||||
-
|
||||
- if (store == EXR_STORAGE_SCANLINE)
|
||||
+ if (store == EXR_STORAGE_SCANLINE ||
|
||||
+ store == EXR_STORAGE_DEEP_SCANLINE)
|
||||
{
|
||||
if ( readCoreScanlinePart (f, p, reduceMemory, reduceTime) )
|
||||
return true;
|
||||
}
|
||||
- else if (store == EXR_STORAGE_TILED)
|
||||
+ else if (store == EXR_STORAGE_TILED ||
|
||||
+ store == EXR_STORAGE_DEEP_TILED)
|
||||
{
|
||||
if ( readCoreTiledPart (f, p, reduceMemory, reduceTime) )
|
||||
return true;
|
||||
--
|
||||
2.43.0
|
||||
|
||||
|
||||
From 166ace3ef06a2a4fc16bb58f42204629c9273798 Mon Sep 17 00:00:00 2001
|
||||
From: Kimball Thurston <kdt3rd@gmail.com>
|
||||
Date: Sat, 3 Feb 2024 20:01:33 +1300
|
||||
Subject: [PATCH 2/4] fix possible int overflow
|
||||
|
||||
Signed-off-by: Kimball Thurston <kdt3rd@gmail.com>
|
||||
---
|
||||
src/lib/OpenEXRCore/unpack.c | 9 ++++++---
|
||||
1 file changed, 6 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/lib/OpenEXRCore/unpack.c b/src/lib/OpenEXRCore/unpack.c
|
||||
index 9ecb729c..80990e0d 100644
|
||||
--- a/src/lib/OpenEXRCore/unpack.c
|
||||
+++ b/src/lib/OpenEXRCore/unpack.c
|
||||
@@ -1205,9 +1205,10 @@ generic_unpack_deep_pointers (exr_decode_pipeline_t* decode)
|
||||
if (outpix)
|
||||
{
|
||||
uint8_t* cdata = outpix;
|
||||
+
|
||||
UNPACK_SAMPLES (samps)
|
||||
}
|
||||
- srcbuffer += bpc * samps;
|
||||
+ srcbuffer += ((size_t) bpc) * ((size_t) samps);
|
||||
}
|
||||
}
|
||||
sampbuffer += w;
|
||||
@@ -1251,12 +1252,14 @@ generic_unpack_deep (exr_decode_pipeline_t* decode)
|
||||
}
|
||||
else
|
||||
prevsamps = sampbuffer[w - 1];
|
||||
+
|
||||
srcbuffer += ((size_t) bpc) * ((size_t) prevsamps);
|
||||
|
||||
if (incr_tot) totsamps += (size_t) prevsamps;
|
||||
|
||||
continue;
|
||||
}
|
||||
+
|
||||
cdata += totsamps * ((size_t) ubpc);
|
||||
|
||||
for (int x = 0; x < w; ++x)
|
||||
@@ -1272,7 +1275,7 @@ generic_unpack_deep (exr_decode_pipeline_t* decode)
|
||||
|
||||
UNPACK_SAMPLES (samps)
|
||||
|
||||
- srcbuffer += bpc * samps;
|
||||
+ srcbuffer += ((size_t) bpc) * ((size_t) samps);
|
||||
if (incr_tot) totsamps += (size_t) samps;
|
||||
}
|
||||
}
|
||||
@@ -1310,7 +1313,7 @@ internal_exr_match_decode (
|
||||
|
||||
if (isdeep)
|
||||
{
|
||||
- if ((decode->decode_flags & EXR_DECODE_SAMPLE_COUNTS_AS_INDIVIDUAL))
|
||||
+ if ((decode->decode_flags & EXR_DECODE_NON_IMAGE_DATA_AS_POINTERS))
|
||||
return &generic_unpack_deep_pointers;
|
||||
return &generic_unpack_deep;
|
||||
}
|
||||
--
|
||||
2.43.0
|
||||
|
||||
|
||||
From d1cea15375da4da642defa91f7f4b78e251af95d Mon Sep 17 00:00:00 2001
|
||||
From: Kimball Thurston <kdt3rd@gmail.com>
|
||||
Date: Sat, 3 Feb 2024 20:04:16 +1300
|
||||
Subject: [PATCH 3/4] fix validation of deep sample counts
|
||||
|
||||
Addresses CVE-2023-5841, fixing sample count check to not only check
|
||||
against 0 but previous sample as well.
|
||||
|
||||
Signed-off-by: Kimball Thurston <kdt3rd@gmail.com>
|
||||
---
|
||||
src/lib/OpenEXRCore/decoding.c | 37 +++++++++++++++++++++-------------
|
||||
1 file changed, 23 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/src/lib/OpenEXRCore/decoding.c b/src/lib/OpenEXRCore/decoding.c
|
||||
index e9e8f7f9..65f0f2f8 100644
|
||||
--- a/src/lib/OpenEXRCore/decoding.c
|
||||
+++ b/src/lib/OpenEXRCore/decoding.c
|
||||
@@ -290,6 +290,9 @@ default_decompress_chunk (exr_decode_pipeline_t* decode)
|
||||
{
|
||||
uint64_t sampsize =
|
||||
(((uint64_t) decode->chunk.width) * ((uint64_t) decode->chunk.height));
|
||||
+
|
||||
+ if ((decode->decode_flags & EXR_DECODE_SAMPLE_COUNTS_AS_INDIVIDUAL))
|
||||
+ sampsize += 1;
|
||||
sampsize *= sizeof (int32_t);
|
||||
|
||||
rv = decompress_data (
|
||||
@@ -342,7 +345,7 @@ unpack_sample_table (
|
||||
exr_result_t rv = EXR_ERR_SUCCESS;
|
||||
int32_t w = decode->chunk.width;
|
||||
int32_t h = decode->chunk.height;
|
||||
- int32_t totsamp = 0;
|
||||
+ uint64_t totsamp = 0;
|
||||
int32_t* samptable = decode->sample_count_table;
|
||||
size_t combSampSize = 0;
|
||||
|
||||
@@ -353,38 +356,44 @@ unpack_sample_table (
|
||||
{
|
||||
for (int32_t y = 0; y < h; ++y)
|
||||
{
|
||||
+ int32_t *cursampline = samptable + y * w;
|
||||
int32_t prevsamp = 0;
|
||||
for (int32_t x = 0; x < w; ++x)
|
||||
{
|
||||
int32_t nsamps =
|
||||
- (int32_t) one_to_native32 ((uint32_t) samptable[y * w + x]);
|
||||
- if (nsamps < 0) return EXR_ERR_INVALID_SAMPLE_DATA;
|
||||
- samptable[y * w + x] = nsamps - prevsamp;
|
||||
- prevsamp = nsamps;
|
||||
+ (int32_t) one_to_native32 ((uint32_t) cursampline[x]);
|
||||
+ if (nsamps < prevsamp) return EXR_ERR_INVALID_SAMPLE_DATA;
|
||||
+
|
||||
+ cursampline[x] = nsamps - prevsamp;
|
||||
+ prevsamp = nsamps;
|
||||
}
|
||||
- totsamp += prevsamp;
|
||||
+ totsamp += (uint64_t)prevsamp;
|
||||
}
|
||||
- samptable[w * h] = totsamp;
|
||||
+ if (totsamp >= (uint64_t)INT32_MAX)
|
||||
+ return EXR_ERR_INVALID_SAMPLE_DATA;
|
||||
+ samptable[w * h] = (int32_t)totsamp;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int32_t y = 0; y < h; ++y)
|
||||
{
|
||||
+ int32_t *cursampline = samptable + y * w;
|
||||
int32_t prevsamp = 0;
|
||||
for (int32_t x = 0; x < w; ++x)
|
||||
{
|
||||
int32_t nsamps =
|
||||
- (int32_t) one_to_native32 ((uint32_t) samptable[y * w + x]);
|
||||
- if (nsamps < 0) return EXR_ERR_INVALID_SAMPLE_DATA;
|
||||
- samptable[y * w + x] = nsamps;
|
||||
- prevsamp = nsamps;
|
||||
+ (int32_t) one_to_native32 ((uint32_t) cursampline[x]);
|
||||
+ if (nsamps < prevsamp) return EXR_ERR_INVALID_SAMPLE_DATA;
|
||||
+
|
||||
+ cursampline[x] = nsamps;
|
||||
+ prevsamp = nsamps;
|
||||
}
|
||||
- totsamp += prevsamp;
|
||||
+
|
||||
+ totsamp += (uint64_t)prevsamp;
|
||||
}
|
||||
}
|
||||
|
||||
- if (totsamp < 0 ||
|
||||
- (((uint64_t) totsamp) * combSampSize) > decode->chunk.unpacked_size)
|
||||
+ if ((totsamp * combSampSize) > decode->chunk.unpacked_size)
|
||||
{
|
||||
rv = pctxt->report_error (
|
||||
pctxt, EXR_ERR_INVALID_SAMPLE_DATA, "Corrupt sample count table");
|
||||
--
|
||||
2.43.0
|
||||
|
||||
|
||||
From 9ad0e7c8a271df1d7a2ae4722fb5f0d48d191b62 Mon Sep 17 00:00:00 2001
|
||||
From: Kimball Thurston <kdt3rd@gmail.com>
|
||||
Date: Sat, 3 Feb 2024 20:07:49 +1300
|
||||
Subject: [PATCH 4/4] add clarifying comment
|
||||
|
||||
Signed-off-by: Kimball Thurston <kdt3rd@gmail.com>
|
||||
---
|
||||
src/lib/OpenEXRUtil/ImfCheckFile.cpp | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/src/lib/OpenEXRUtil/ImfCheckFile.cpp b/src/lib/OpenEXRUtil/ImfCheckFile.cpp
|
||||
index 8946e88d..0058f627 100644
|
||||
--- a/src/lib/OpenEXRUtil/ImfCheckFile.cpp
|
||||
+++ b/src/lib/OpenEXRUtil/ImfCheckFile.cpp
|
||||
@@ -1172,6 +1172,9 @@ runChecks(T& source,bool reduceMemory,bool reduceTime)
|
||||
return threw;
|
||||
}
|
||||
|
||||
+// This is not entirely needed in that the chunk info has the
|
||||
+// total unpacked_size field which can be used for allocation
|
||||
+// but this adds an additional point to use when debugging issues.
|
||||
static exr_result_t
|
||||
realloc_deepdata(exr_decode_pipeline_t* decode)
|
||||
{
|
||||
--
|
||||
2.43.0
|
||||
|
||||
12
openexr-cstdint.patch
Normal file
12
openexr-cstdint.patch
Normal file
@ -0,0 +1,12 @@
|
||||
Index: openexr-3.1.5/src/bin/exrcheck/main.cpp
|
||||
===================================================================
|
||||
--- openexr-3.1.5.orig/src/bin/exrcheck/main.cpp
|
||||
+++ openexr-3.1.5/src/bin/exrcheck/main.cpp
|
||||
@@ -13,6 +13,7 @@
|
||||
# include <unistd.h>
|
||||
#endif
|
||||
#include <vector>
|
||||
+#include <cstdint>
|
||||
|
||||
using namespace OPENEXR_IMF_NAMESPACE;
|
||||
using std::cout;
|
||||
262
openexr.spec
Normal file
262
openexr.spec
Normal file
@ -0,0 +1,262 @@
|
||||
%{?!python3_pkgversion:%global python3_pkgversion 3}
|
||||
%global sover 30
|
||||
|
||||
Name: openexr
|
||||
Version: 3.1.10
|
||||
Release: 8%{?dist}
|
||||
Summary: Provides the specification and reference implementation of the EXR file format
|
||||
|
||||
License: BSD-3-Clause
|
||||
URL: https://www.openexr.com/
|
||||
Source0: https://github.com/AcademySoftwareFoundation/%{name}/archive/v%{version}/%{name}-%{version}.tar.gz
|
||||
|
||||
Patch0: openexr-cstdint.patch
|
||||
# https://github.com/AcademySoftwareFoundation/openexr/pull/1507
|
||||
Patch1: march-x86-64-v3.patch
|
||||
# Fix incompatible pointer types with GCC 14 on i686
|
||||
Patch2: gcc14.patch
|
||||
# Fix CVE 2023 5841
|
||||
# https://github.com/AcademySoftwareFoundation/openexr/pull/1627
|
||||
# Backported to 3.1.10
|
||||
Patch3: openexr-3.1.10-CVE-2023-5841.patch
|
||||
|
||||
BuildRequires: cmake gcc gcc-c++
|
||||
BuildRequires: boost-devel
|
||||
BuildRequires: imath-devel
|
||||
BuildRequires: python%{python3_pkgversion}-devel
|
||||
BuildRequires: zlib-devel
|
||||
|
||||
Obsoletes: OpenEXR < 2.5.3
|
||||
Provides: OpenEXR = %{version}-%{release}
|
||||
|
||||
%description
|
||||
OpenEXR is an open-source high-dynamic-range floating-point image file format
|
||||
for high-quality image processing and storage. This document presents a brief
|
||||
overview of OpenEXR and explains concepts that are specific to this format.
|
||||
|
||||
This package containes the binaries for OpenEXR.
|
||||
|
||||
|
||||
%package libs
|
||||
Summary: OpenEXR Libraries
|
||||
Provides: OpenEXR-libs = %{version}-%{release}
|
||||
Obsoletes: OpenEXR-libs < 2.5.3
|
||||
|
||||
%description libs
|
||||
OpenEXR is an open-source high-dynamic-range floating-point image file format
|
||||
for high-quality image processing and storage. This document presents a brief
|
||||
overview of OpenEXR and explains concepts that are specific to this format.
|
||||
|
||||
OpenEXR Features:
|
||||
|
||||
* High dynamic range and color precision. Support for 16-bit floating-point,
|
||||
* 32-bit floating-point, and 32-bit integer pixels.
|
||||
* Multiple image compression algorithms, both lossless and lossy. Some of
|
||||
the included codecs can achieve 2:1 lossless compression ratios on images
|
||||
with film grain. The lossy codecs have been tuned for visual quality and
|
||||
decoding performance.
|
||||
* Extensibility. New compression codecs and image types can easily be added
|
||||
by extending the C++ classes included in the OpenEXR software distribution.
|
||||
New image attributes (strings, vectors, integers, etc.) can be added to
|
||||
OpenEXR image headers without affecting backward compatibility with existing
|
||||
OpenEXR applications.
|
||||
* Support for stereoscopic image workflows and a generalization
|
||||
to multi-views.
|
||||
* Flexible support for deep data: pixels can store a variable-length list
|
||||
of samples and, thus, it is possible to store multiple values at different
|
||||
depths for each pixel. Hard surfaces and volumetric data representations are
|
||||
accommodated.
|
||||
* Multipart: ability to encode separate, but related, images in one file.
|
||||
This allows for access to individual parts without the need to read other
|
||||
parts in the file.
|
||||
* Versioning: OpenEXR source allows for user configurable C++
|
||||
namespaces to provide protection when using multiple versions of the library
|
||||
in the same process space.
|
||||
|
||||
The IlmBase Library:
|
||||
|
||||
Also a part of OpenEXR, the IlmBase library is a basic, light-weight, and
|
||||
efficient representation of 2D and 3D vectors and matrices and other simple but
|
||||
useful mathematical objects, functions, and data types common in computer
|
||||
graphics applications, including the “half” 16-bit floating-point type.
|
||||
|
||||
|
||||
%package devel
|
||||
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
|
||||
|
||||
Provides: OpenEXR-devel = %{version}-%{release}
|
||||
Provides: OpenEXR-devel%{?_isa} = %{version}-%{release}
|
||||
Obsoletes: OpenEXR-devel < 2.5.3
|
||||
|
||||
Provides: ilmbase-devel = %{version}-%{release}
|
||||
Provides: ilmbase-devel%{?_isa} = %{version}-%{release}
|
||||
Obsoletes: ilmbase-devel < 2.5.3
|
||||
|
||||
Summary: Development files for %{name}
|
||||
|
||||
%description devel
|
||||
%{summary}.
|
||||
|
||||
|
||||
%prep
|
||||
%autosetup -p1
|
||||
|
||||
|
||||
%build
|
||||
%cmake
|
||||
%cmake_build
|
||||
|
||||
|
||||
%install
|
||||
%cmake_install
|
||||
|
||||
|
||||
%check
|
||||
# Some tests fail on particular architectures
|
||||
%ifarch aarch64
|
||||
# https://github.com/AcademySoftwareFoundation/openexr/issues/1460
|
||||
EXCLUDE_REGEX='DWA[AB]Compression'
|
||||
%endif
|
||||
%ifarch s390x
|
||||
# https://github.com/AcademySoftwareFoundation/openexr/issues/1175
|
||||
EXCLUDE_REGEX='ReadDeep|DWA[AB]Compression|testCompression|Rgba|SampleImages|SharedFrameBuffer'
|
||||
%endif
|
||||
%ctest --exclude-regex "$EXCLUDE_REGEX"
|
||||
|
||||
|
||||
%files
|
||||
%{_bindir}/exr2aces
|
||||
%{_bindir}/exrenvmap
|
||||
%{_bindir}/exrheader
|
||||
%{_bindir}/exrinfo
|
||||
%{_bindir}/exrmakepreview
|
||||
%{_bindir}/exrmaketiled
|
||||
%{_bindir}/exrmultipart
|
||||
%{_bindir}/exrmultiview
|
||||
%{_bindir}/exrstdattr
|
||||
|
||||
%files libs
|
||||
%doc CHANGES.md CONTRIBUTING.md GOVERNANCE.md SECURITY.md CODE_OF_CONDUCT.md CONTRIBUTORS.md README.md
|
||||
%license LICENSE.md
|
||||
%{_libdir}/libIex-3_1.so.%{sover}{,.*}
|
||||
%{_libdir}/libIlmThread-3_1.so.%{sover}{,.*}
|
||||
%{_libdir}/libOpenEXR-3_1.so.%{sover}{,.*}
|
||||
%{_libdir}/libOpenEXRCore-3_1.so.%{sover}{,.*}
|
||||
%{_libdir}/libOpenEXRUtil-3_1.so.%{sover}{,.*}
|
||||
|
||||
%files devel
|
||||
%{_docdir}/OpenEXR/
|
||||
%{_includedir}/OpenEXR/
|
||||
%{_libdir}/libIex{,-3_1}.so
|
||||
%{_libdir}/libIlmThread{,-3_1}.so
|
||||
%{_libdir}/libOpenEXR{,-3_1}.so
|
||||
%{_libdir}/libOpenEXRCore{,-3_1}.so
|
||||
%{_libdir}/libOpenEXRUtil{,-3_1}.so
|
||||
%{_libdir}/cmake/OpenEXR/
|
||||
%{_libdir}/pkgconfig/OpenEXR.pc
|
||||
|
||||
|
||||
%changelog
|
||||
* Tue Oct 29 2024 Troy Dawson <tdawson@redhat.com> - 3.1.10-8
|
||||
- Bump release for October 2024 mass rebuild:
|
||||
Resolves: RHEL-64018
|
||||
|
||||
* Wed Jun 26 2024 Josef Ridky <jridky@redhat.com> - 3.1.10-7
|
||||
- Add gating.yaml file
|
||||
|
||||
* Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 3.1.10-6
|
||||
- Bump release for June 2024 mass rebuild
|
||||
|
||||
* Mon Feb 05 2024 Benjamin A. Beasley <code@musicinmybrain.net> - 3.1.10-5
|
||||
- Backport proposed fix for CVE-2023-5841 to 3.1.10 (fix RHBZ#2262406)
|
||||
|
||||
* Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.10-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
* Sun Jan 21 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.10-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
* Fri Aug 04 2023 Yaakov Selkowitz <yselkowi@redhat.com> - 3.1.10-2
|
||||
- Fix build for x86-64-v3
|
||||
- Run all tests on i686, ppc64le, x86_64
|
||||
|
||||
* Fri Aug 04 2023 Richard Shaw <hobbes1069@gmail.com> - 3.1.10-1
|
||||
- Update to 3.1.10.
|
||||
|
||||
* Thu Jul 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.9-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
|
||||
|
||||
* Tue Jul 18 2023 Josef Ridky <jridky@redhat.com> - 3.1.9-2
|
||||
- Migrate to SPDX license format
|
||||
|
||||
* Mon Jun 26 2023 Richard Shaw <hobbes1069@gmail.com> - 3.1.9-1
|
||||
- Upgrade to 3.1.9.
|
||||
|
||||
* Mon Jun 19 2023 Florian Weimer <fweimer@redhat.com> - 3.1.8-2
|
||||
- Disable F16C intrinsics on x86-64 (#2212579)
|
||||
|
||||
* Wed Jun 07 2023 Richard Shaw <hobbes1069@gmail.com> - 3.1.8-1
|
||||
- Update to 3.1.8.
|
||||
|
||||
* Tue May 16 2023 Richard Shaw <hobbes1069@gmail.com> - 3.1.7-1
|
||||
- Update to 3.1.7.
|
||||
|
||||
* Mon Mar 20 2023 Richard Shaw <hobbes1069@gmail.com> - 3.1.6-1
|
||||
- Update to 3.1.6.
|
||||
|
||||
* Thu Feb 23 2023 Benjamin A. Beasley <code@musicinmybrain.net> - 3.1.5-4
|
||||
- Do not use broad globs in shared directories
|
||||
|
||||
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.5-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
|
||||
|
||||
* Fri Jul 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.5-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
|
||||
|
||||
* Tue Apr 12 2022 Richard Shaw <hobbes1069@gmail.com> - 3.1.5-1
|
||||
- Update to 3.1.5.
|
||||
|
||||
* Thu Mar 10 2022 Josef Ridky <jridky@redhat.com> - 3.1.4-1
|
||||
- Update to 3.1.4
|
||||
|
||||
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.3-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
|
||||
|
||||
* Wed Nov 03 2021 Richard Shaw <hobbes1069@gmail.com> - 3.1.3-1
|
||||
- Update to 3.1.3.
|
||||
|
||||
* Wed Oct 06 2021 Richard Shaw <hobbes1069@gmail.com> - 3.1.2-1
|
||||
- Update to 3.1.2.
|
||||
|
||||
* Wed Aug 11 2021 Richard Shaw <hobbes1069@gmail.com> - 3.1.1-1
|
||||
- Update to 3.1.1.
|
||||
|
||||
* Thu Aug 05 2021 Richard Shaw <hobbes1069@gmail.com> - 3.0.5-3
|
||||
- Remove Threads::Threads from link libraries in f35+
|
||||
|
||||
* Thu Jul 22 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.5-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
|
||||
|
||||
* Tue Jul 20 2021 Richard Shaw <hobbes1069@gmail.com> - 3.0.5-1
|
||||
- Update to 3.0.5.
|
||||
|
||||
* Fri Jun 04 2021 Python Maint <python-maint@redhat.com> - 2.5.5-2
|
||||
- Rebuilt for Python 3.10
|
||||
|
||||
* Mon Mar 15 2021 Richard Shaw <hobbes1069@gmail.com> - 2.5.5-1
|
||||
- Update to 2.5.5.
|
||||
|
||||
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.5.4-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
||||
|
||||
* Fri Jan 22 2021 Jonathan Wakely <jwakely@redhat.com> - 2.5.4-3
|
||||
- Rebuilt for Boost 1.75
|
||||
|
||||
* Mon Jan 18 2021 Richard Shaw <hobbes1069@gmail.com> - 2.5.4-2
|
||||
- Fix Provides/Obsoletes of OpenEXR package.
|
||||
|
||||
* Wed Jan 06 2021 Richard Shaw <hobbes1069@gmail.com> - 2.5.4-1
|
||||
- Update to 2.5.4.
|
||||
|
||||
* Wed Dec 9 2020 Richard Shaw <hobbes1069@gmail.com> - 2.5.3-1
|
||||
- Repackaged due to massive changes in build system and inclusion of IlmBase.
|
||||
Loading…
Reference in New Issue
Block a user