OpenEXR v3.0.0-beta Release Notes
Release Date: 2021-03-16 // about 3 years ago-
๐ Major release with major build restructing, security improvements, and ๐ new features:
Restructuring:
- The IlmBase/PyIlmBase submodules have been separated into the Imath project, now included by OpenEXR via a CMake submodule dependency, fetched automatically via CMake's FetchContent if necessary.
- The library is now called
libOpenEXR
(instead oflibIlmImf
). No header files have been renamed, they retain theImf
prefix. - Symbol linkage visibility is limited to specific public symbols. See [SymbolVisibility.md](docs/SymbolVisibility.md) for more details.
๐ Build improvements:
- No more simultaneous static/shared build option.
- Community-provided support for bazel.
๐ New Features:
- ID Manifest Attributes, as described in "A Scheme for Storing Object ID Manifests in OpenEXR Images", Peter Hillman, DigiPro 18: Proceedings of the 8th Annual Digital Production Symposium, August 2018.
- New program: exrcheck validates the contents of an EXR file.
๐ Changes:
- EXR files with no channels are no longer allowed.
- Hard limit on the size of deep tile sizes; tiles must be less than 230 pixels.
- Tiled DWAB files used STATIC_HUFFMAN compression.
Int64
andSInt64
types are deprecated in favor ofuint64_t
andint64_t
.- Header files have been pruned of extraneous
#include
's ("Include What You Use"), which may generate compiler errors in application source code from undefined symbols or partially-defined types. These can be resolved by identifying and including the appropriate header. - See the porting guide for details about differences from previous releases and how to address them.
- Also refer to the porting guide for details about changes to Imath.
Specific OSS-fuzz issues addressed include:
- OSS-fuzz 31539 Out-of-memory in openexr_exrcheck_fuzzer (946)
- OSS-fuzz 31390 Out-of-memory in openexr_exrcheck_fuzzer (939)
- OSS-fuzz 31293 Segv on unknown address in Imf_2_5::copyIntoFrameBuffer (932)
- OSS-fuzz 31291 Sanitizer CHECK failure in "((0 && "Address is not in memory and not in shadow?")) != (0)" (0x0, 0x0) (932)
- OSS-fuzz 31228 Integer-overflow in bool Imf_2_5::readDeepTile (930)
- OSS-fuzz 31221 Integer-overflow in bool Imf_2_5::readDeepTile (930)
- OSS-fuzz 31072 Out-of-memory in openexr_exrcheck_fuzzer (928)
- OSS-fuzz 31044 Timeout in openexr_exrcheck_fuzzer (926)
- OSS-fuzz 31015 Direct-leak in Imf_2_5::TypedAttribute::readValueFrom (925)
- OSS-fuzz 30969 Direct-leak in Imf_2_5::DwaCompressor::LossyDctDecoderBase::execute (923)
- OSS-fuzz 30616 Timeout in openexr_exrcheck_fuzzer (919)
- OSS-fuzz 30605 Out-of-memory in openexr_exrcheck_fuzzer (920)
- OSS-fuzz 30249 Out-of-memory in openexr_exrcheck_fuzzer (915)
- OSS-fuzz 29682 Out-of-memory in openexr_exrcheck_fuzzer (902)
- OSS-fuzz 29393 Timeout in openexr_exrcheck_fuzzer (902)
- OSS-fuzz 28419 Out-of-memory in openexr_exrcheck_fuzzer (895)
- OSS-fuzz 28155 Crash in Imf_2_5::PtrIStream::read (872)
- OSS-fuzz 28051 Heap-buffer-overflow in Imf_2_5::copyIntoFrameBuffer (872)
- OSS-fuzz 27409 Out-of-memory in openexr_exrcheck_fuzzer (863)
- OSS-fuzz 26641 Invalid-enum-value in readSingleImage (859)
- OSS-fuzz 25648 Out-of-memory in openexr_scanlines_fuzzer (839)
- OSS-fuzz 25156 Out-of-memory in openexr_scanlines_fuzzer (824)
- OSS-fuzz 25002 Out-of-memory in openexr_deepscanlines_fuzzer (824)
- OSS-fuzz 24959 Integer-overflow in Imf_2_5::cachePadding (824)
- OSS-fuzz 24857 Out-of-memory in openexr_exrheader_fuzzer (824)
- OSS-fuzz 24573 Out-of-memory in openexr_exrenvmap_fuzzer (824)
๐ Merged Pull Requests
- โ 971 Add missing #includes in OpenEXRFuzzTest
- ๐ 967 3.0.0-beta release notes
- 965 Bump version to 3.0.0
- โก๏ธ 964 Bazel-Support: Update Bazel build files to reflect CMake state
- 963 Properly expose header files for float exceptions
- ๐ 962 Remove IexMath as a library
- 961 Enable policy 77 if possible.
- 960 Still needed to push the OPENEXR_INSTALL definition higher
- 959 The OPENEXR_INSTALL option needs to be defined before it's used
- 956 Replace stray Imath:: with IMATH_NAMESPACE::
- 955 Usability improvements for submodule use.
- 953 Add GLOBAL to add_library(zlib)
- ๐ 952 Remove 'long' overloads for Xdr::read and Xdr::write functions
- 951 Change copyright notices to standard SPDX format
- 950 Don't install ImfB44Compressor.h
- ๐ 949 Bazel build: Bump Imath version to current master
- 948 Replace Int64/SInt64 with uint64_t/int64_t
- ๐ 946 better flag/type verification in deep input files
- โ 945 Fix sign-compare warning
- ๐ 944 Build-time options for where to get Imath
- 943 Add include/OpenEXR to -I and OpenEXRUtil,Iex,IlmThread to -L
- ๐ 942 Resolve #882 static/shared dual build
- 939 enforce limit on area of deep tiles to prevent excessive memory use
- 938 Replace UINT_MAX with explicit cast
- ๐ 937 Add #include to fix Windows compile error
- ๐ 936 Incorporate recent config changes into BUILD.bazel
- 932 exrcheck: fix handling xSampling when computating slice base
- 930 exrcheck: use 64 bit integer math to prevent pointer overflows
- ๐ 929 Remove all references to "IlmBase"
- ๐ 928 exrcheck: better tile checks in reduceMemory mode
- โช 926 exrcheck: Revert to using 'getStep' for Rgba interfaces
- 925 handle reallocation of idmanifest attributes
- ๐ 923 free up memory if DWA unRle throws
- 921 Only wait for and join joinable threads
- 920 exrcheck: check for tilesize in reduceMemory mode
- 919 validate size of DWA RLE buffer in decompress
- โ 916 use NO_COMPRESSION in OpenEXRTest/testBackwardCompatibility
- 915 exrcheck: assume lots of memory required whenever MultiPart ctor throws
- ๐ 913 Fixes for recent Imath deprecations
- 911 Prevent reading or writing OpenEXR images with no channels
- ๐ 909 Add idmanifest attribute support
- โ 906 expand testCompression to better test DWAA, DWAB and tiled images
- 902 exrcheck: rework 'reduceMemory' and 'reduceTime' modes
- 899 Change NOTICE to STATUS to address #891
- ๐ 898 Add support for Bazel
- 895 exrcheck: make reduced memory/time modes more sensitive
- 893 Include where required by newer compilers
- 877 ImfCompressor: use STATIC_HUFFMAN for tiled DWAB files (fix #344)
- 874 Fix missing header for Visual Studio
- ๐ 872 Handle xsampling and bad seekg() calls in exrcheck
- 869 Enable extra version tag
- ๐ 868 Make the default symbol visibility hidden for unixen builds
- ๐ 864 Remove legacy throw() specifications, conform to c++11
- ๐ 862 E2K: added initial support of MCST Elbrus 2000 CPU architecture
- โช 859 Invalidenum workaround
- ๐ 858 Merge RC-3 to master
- 848 Validate reconstructed chunk sizes
- 846 fix extra byte in DWA compressed data
- 839 Validate tileoffset table size
- โ 828 Address issues reported by Undefined Behavior Sanitizer running IlmImfTest
- 824 reduce size limit for scanline files; prevent large chunkoffset allocations
- 819 re-order shift/compare in FastHuf to prevent undefined shift overflow
- 815 cmake: Fix paths in .pc files
- 802 Modernize mutex
- โ 796 Initial rename of OpenEXR and IlmBase directories and seperation of Test
- 791 Initial removal of all Imath source files and minimal cmake adjustments
- ๐ 769 Bugfix/arkellr remove cvsignore files