OpenEXR 3.2.6__tar.gz → 3.2.8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (473) hide show
  1. {openexr-3.2.6 → openexr-3.2.8}/CHANGES.md +43 -0
  2. {openexr-3.2.6 → openexr-3.2.8}/PKG-INFO +1 -1
  3. openexr-3.2.8/SECURITY.md +200 -0
  4. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/compression.c +13 -0
  5. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_b44.c +12 -11
  6. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_dwa_compressor.h +4 -3
  7. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_dwa_decoder.h +15 -6
  8. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_piz.c +23 -16
  9. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_pxr24.c +7 -5
  10. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/openexr_version.h +1 -1
  11. openexr-3.2.6/SECURITY.md +0 -177
  12. {openexr-3.2.6 → openexr-3.2.8}/.bazelversion +0 -0
  13. {openexr-3.2.6 → openexr-3.2.8}/.clang-format +0 -0
  14. {openexr-3.2.6 → openexr-3.2.8}/.git-blame-ignore-revs +0 -0
  15. {openexr-3.2.6 → openexr-3.2.8}/.gitignore +0 -0
  16. {openexr-3.2.6 → openexr-3.2.8}/.mailmap +0 -0
  17. {openexr-3.2.6 → openexr-3.2.8}/.readthedocs.yml +0 -0
  18. {openexr-3.2.6 → openexr-3.2.8}/BUILD.bazel +0 -0
  19. {openexr-3.2.6 → openexr-3.2.8}/CMakeLists.txt +0 -0
  20. {openexr-3.2.6 → openexr-3.2.8}/CODEOWNERS +0 -0
  21. {openexr-3.2.6 → openexr-3.2.8}/CODE_OF_CONDUCT.md +0 -0
  22. {openexr-3.2.6 → openexr-3.2.8}/CONTRIBUTING.md +0 -0
  23. {openexr-3.2.6 → openexr-3.2.8}/CONTRIBUTORS.md +0 -0
  24. {openexr-3.2.6 → openexr-3.2.8}/Contrib/DtexToExr/AUTHORS +0 -0
  25. {openexr-3.2.6 → openexr-3.2.8}/Contrib/DtexToExr/ChangeLog +0 -0
  26. {openexr-3.2.6 → openexr-3.2.8}/Contrib/DtexToExr/DtexToExr.cpp +0 -0
  27. {openexr-3.2.6 → openexr-3.2.8}/Contrib/DtexToExr/Makefile.test +0 -0
  28. {openexr-3.2.6 → openexr-3.2.8}/Contrib/DtexToExr/PxBaseDeepHelper.h +0 -0
  29. {openexr-3.2.6 → openexr-3.2.8}/Contrib/DtexToExr/PxDeepOutPixel.h +0 -0
  30. {openexr-3.2.6 → openexr-3.2.8}/Contrib/DtexToExr/PxDeepOutRow.h +0 -0
  31. {openexr-3.2.6 → openexr-3.2.8}/Contrib/DtexToExr/PxDeepUtils.cpp +0 -0
  32. {openexr-3.2.6 → openexr-3.2.8}/Contrib/DtexToExr/PxDeepUtils.h +0 -0
  33. {openexr-3.2.6 → openexr-3.2.8}/Contrib/DtexToExr/PxFourChanDeepRgba.h +0 -0
  34. {openexr-3.2.6 → openexr-3.2.8}/Contrib/DtexToExr/PxOneChanDeepAlpha.h +0 -0
  35. {openexr-3.2.6 → openexr-3.2.8}/Contrib/DtexToExr/PxOneChanDeepOpacity.h +0 -0
  36. {openexr-3.2.6 → openexr-3.2.8}/Contrib/DtexToExr/README +0 -0
  37. {openexr-3.2.6 → openexr-3.2.8}/Contrib/DtexToExr/bootstrap +0 -0
  38. {openexr-3.2.6 → openexr-3.2.8}/Contrib/DtexToExr/configure.ac +0 -0
  39. {openexr-3.2.6 → openexr-3.2.8}/Contrib/NuGet/OpenEXR-msvc-x64-build.nuget.bat +0 -0
  40. {openexr-3.2.6 → openexr-3.2.8}/Contrib/NuGet/OpenEXR-msvc-x64.nuspec +0 -0
  41. {openexr-3.2.6 → openexr-3.2.8}/Contrib/NuGet/OpenEXR-msvc-x64.targets +0 -0
  42. {openexr-3.2.6 → openexr-3.2.8}/Contrib/NuGet/OpenEXR-msvc-x86-build.nuget.bat +0 -0
  43. {openexr-3.2.6 → openexr-3.2.8}/Contrib/NuGet/OpenEXR-msvc-x86.nuspec +0 -0
  44. {openexr-3.2.6 → openexr-3.2.8}/Contrib/NuGet/OpenEXR-msvc-x86.targets +0 -0
  45. {openexr-3.2.6 → openexr-3.2.8}/GOVERNANCE.md +0 -0
  46. {openexr-3.2.6 → openexr-3.2.8}/LICENSE.md +0 -0
  47. {openexr-3.2.6 → openexr-3.2.8}/MODULE.bazel +0 -0
  48. {openexr-3.2.6 → openexr-3.2.8}/PATENTS +0 -0
  49. {openexr-3.2.6 → openexr-3.2.8}/README.md +0 -0
  50. {openexr-3.2.6 → openexr-3.2.8}/WORKSPACE.bazel +0 -0
  51. {openexr-3.2.6 → openexr-3.2.8}/cmake/CMakeLists.txt +0 -0
  52. {openexr-3.2.6 → openexr-3.2.8}/cmake/FindPythonPackage.cmake +0 -0
  53. {openexr-3.2.6 → openexr-3.2.8}/cmake/FindSphinx.cmake +0 -0
  54. {openexr-3.2.6 → openexr-3.2.8}/cmake/IexConfig.h.in +0 -0
  55. {openexr-3.2.6 → openexr-3.2.8}/cmake/IexConfigInternal.h.in +0 -0
  56. {openexr-3.2.6 → openexr-3.2.8}/cmake/IlmThreadConfig.h.in +0 -0
  57. {openexr-3.2.6 → openexr-3.2.8}/cmake/JoinPaths.cmake +0 -0
  58. {openexr-3.2.6 → openexr-3.2.8}/cmake/LibraryDefine.cmake +0 -0
  59. {openexr-3.2.6 → openexr-3.2.8}/cmake/OpenEXR.pc.in +0 -0
  60. {openexr-3.2.6 → openexr-3.2.8}/cmake/OpenEXRConfig.cmake.in +0 -0
  61. {openexr-3.2.6 → openexr-3.2.8}/cmake/OpenEXRConfig.h.in +0 -0
  62. {openexr-3.2.6 → openexr-3.2.8}/cmake/OpenEXRConfigInternal.h.in +0 -0
  63. {openexr-3.2.6 → openexr-3.2.8}/cmake/OpenEXRLibraryDefine.cmake +0 -0
  64. {openexr-3.2.6 → openexr-3.2.8}/cmake/OpenEXRSetup.cmake +0 -0
  65. {openexr-3.2.6 → openexr-3.2.8}/cmake/SampleCTestScript.cmake +0 -0
  66. {openexr-3.2.6 → openexr-3.2.8}/cmake/Toolchain-Linux-VFX_Platform15.cmake +0 -0
  67. {openexr-3.2.6 → openexr-3.2.8}/cmake/Toolchain-mingw.cmake +0 -0
  68. {openexr-3.2.6 → openexr-3.2.8}/cmake/clang-format.cmake +0 -0
  69. {openexr-3.2.6 → openexr-3.2.8}/cmake/cmake_uninstall.cmake.in +0 -0
  70. {openexr-3.2.6 → openexr-3.2.8}/docs/CMakeLists.txt +0 -0
  71. {openexr-3.2.6 → openexr-3.2.8}/pyproject.toml +0 -0
  72. {openexr-3.2.6 → openexr-3.2.8}/sonar-project.properties +0 -0
  73. {openexr-3.2.6 → openexr-3.2.8}/src/bin/CMakeLists.txt +0 -0
  74. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exr2aces/CMakeLists.txt +0 -0
  75. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exr2aces/main.cpp +0 -0
  76. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrcheck/CMakeLists.txt +0 -0
  77. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrcheck/main.cpp +0 -0
  78. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrenvmap/CMakeLists.txt +0 -0
  79. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrenvmap/EnvmapImage.cpp +0 -0
  80. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrenvmap/EnvmapImage.h +0 -0
  81. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrenvmap/blurImage.cpp +0 -0
  82. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrenvmap/blurImage.h +0 -0
  83. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrenvmap/main.cpp +0 -0
  84. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrenvmap/makeCubeMap.cpp +0 -0
  85. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrenvmap/makeCubeMap.h +0 -0
  86. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrenvmap/makeLatLongMap.cpp +0 -0
  87. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrenvmap/makeLatLongMap.h +0 -0
  88. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrenvmap/namespaceAlias.h +0 -0
  89. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrenvmap/readInputImage.cpp +0 -0
  90. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrenvmap/readInputImage.h +0 -0
  91. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrenvmap/resizeImage.cpp +0 -0
  92. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrenvmap/resizeImage.h +0 -0
  93. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrheader/CMakeLists.txt +0 -0
  94. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrheader/main.cpp +0 -0
  95. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrinfo/CMakeLists.txt +0 -0
  96. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrinfo/main.c +0 -0
  97. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrmakepreview/CMakeLists.txt +0 -0
  98. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrmakepreview/main.cpp +0 -0
  99. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrmakepreview/makePreview.cpp +0 -0
  100. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrmakepreview/makePreview.h +0 -0
  101. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrmaketiled/CMakeLists.txt +0 -0
  102. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrmaketiled/Image.cpp +0 -0
  103. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrmaketiled/Image.h +0 -0
  104. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrmaketiled/main.cpp +0 -0
  105. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrmaketiled/makeTiled.cpp +0 -0
  106. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrmaketiled/makeTiled.h +0 -0
  107. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrmaketiled/namespaceAlias.h +0 -0
  108. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrmanifest/CMakeLists.txt +0 -0
  109. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrmanifest/main.cpp +0 -0
  110. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrmultipart/CMakeLists.txt +0 -0
  111. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrmultipart/exrmultipart.cpp +0 -0
  112. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrmultiview/CMakeLists.txt +0 -0
  113. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrmultiview/Image.cpp +0 -0
  114. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrmultiview/Image.h +0 -0
  115. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrmultiview/main.cpp +0 -0
  116. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrmultiview/makeMultiView.cpp +0 -0
  117. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrmultiview/makeMultiView.h +0 -0
  118. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrmultiview/namespaceAlias.h +0 -0
  119. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrstdattr/CMakeLists.txt +0 -0
  120. {openexr-3.2.6 → openexr-3.2.8}/src/bin/exrstdattr/main.cpp +0 -0
  121. {openexr-3.2.6 → openexr-3.2.8}/src/lib/.gitignore +0 -0
  122. {openexr-3.2.6 → openexr-3.2.8}/src/lib/CMakeLists.txt +0 -0
  123. {openexr-3.2.6 → openexr-3.2.8}/src/lib/Iex/CMakeLists.txt +0 -0
  124. {openexr-3.2.6 → openexr-3.2.8}/src/lib/Iex/Iex.h +0 -0
  125. {openexr-3.2.6 → openexr-3.2.8}/src/lib/Iex/IexBaseExc.cpp +0 -0
  126. {openexr-3.2.6 → openexr-3.2.8}/src/lib/Iex/IexBaseExc.h +0 -0
  127. {openexr-3.2.6 → openexr-3.2.8}/src/lib/Iex/IexErrnoExc.h +0 -0
  128. {openexr-3.2.6 → openexr-3.2.8}/src/lib/Iex/IexExport.h +0 -0
  129. {openexr-3.2.6 → openexr-3.2.8}/src/lib/Iex/IexForward.h +0 -0
  130. {openexr-3.2.6 → openexr-3.2.8}/src/lib/Iex/IexMacros.h +0 -0
  131. {openexr-3.2.6 → openexr-3.2.8}/src/lib/Iex/IexMathExc.h +0 -0
  132. {openexr-3.2.6 → openexr-3.2.8}/src/lib/Iex/IexMathFloatExc.cpp +0 -0
  133. {openexr-3.2.6 → openexr-3.2.8}/src/lib/Iex/IexMathFloatExc.h +0 -0
  134. {openexr-3.2.6 → openexr-3.2.8}/src/lib/Iex/IexMathFpu.cpp +0 -0
  135. {openexr-3.2.6 → openexr-3.2.8}/src/lib/Iex/IexMathFpu.h +0 -0
  136. {openexr-3.2.6 → openexr-3.2.8}/src/lib/Iex/IexMathIeeeExc.h +0 -0
  137. {openexr-3.2.6 → openexr-3.2.8}/src/lib/Iex/IexNamespace.h +0 -0
  138. {openexr-3.2.6 → openexr-3.2.8}/src/lib/Iex/IexThrowErrnoExc.cpp +0 -0
  139. {openexr-3.2.6 → openexr-3.2.8}/src/lib/Iex/IexThrowErrnoExc.h +0 -0
  140. {openexr-3.2.6 → openexr-3.2.8}/src/lib/IlmThread/CMakeLists.txt +0 -0
  141. {openexr-3.2.6 → openexr-3.2.8}/src/lib/IlmThread/IlmThread.cpp +0 -0
  142. {openexr-3.2.6 → openexr-3.2.8}/src/lib/IlmThread/IlmThread.h +0 -0
  143. {openexr-3.2.6 → openexr-3.2.8}/src/lib/IlmThread/IlmThreadExport.h +0 -0
  144. {openexr-3.2.6 → openexr-3.2.8}/src/lib/IlmThread/IlmThreadForward.h +0 -0
  145. {openexr-3.2.6 → openexr-3.2.8}/src/lib/IlmThread/IlmThreadMutex.h +0 -0
  146. {openexr-3.2.6 → openexr-3.2.8}/src/lib/IlmThread/IlmThreadNamespace.h +0 -0
  147. {openexr-3.2.6 → openexr-3.2.8}/src/lib/IlmThread/IlmThreadPool.cpp +0 -0
  148. {openexr-3.2.6 → openexr-3.2.8}/src/lib/IlmThread/IlmThreadPool.h +0 -0
  149. {openexr-3.2.6 → openexr-3.2.8}/src/lib/IlmThread/IlmThreadSemaphore.cpp +0 -0
  150. {openexr-3.2.6 → openexr-3.2.8}/src/lib/IlmThread/IlmThreadSemaphore.h +0 -0
  151. {openexr-3.2.6 → openexr-3.2.8}/src/lib/IlmThread/IlmThreadSemaphoreOSX.cpp +0 -0
  152. {openexr-3.2.6 → openexr-3.2.8}/src/lib/IlmThread/IlmThreadSemaphorePosix.cpp +0 -0
  153. {openexr-3.2.6 → openexr-3.2.8}/src/lib/IlmThread/IlmThreadSemaphorePosixCompat.cpp +0 -0
  154. {openexr-3.2.6 → openexr-3.2.8}/src/lib/IlmThread/IlmThreadSemaphoreWin32.cpp +0 -0
  155. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/CMakeLists.txt +0 -0
  156. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfAcesFile.cpp +0 -0
  157. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfAcesFile.h +0 -0
  158. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfArray.h +0 -0
  159. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfAttribute.cpp +0 -0
  160. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfAttribute.h +0 -0
  161. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfAutoArray.h +0 -0
  162. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfB44Compressor.cpp +0 -0
  163. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfB44Compressor.h +0 -0
  164. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfBoxAttribute.cpp +0 -0
  165. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfBoxAttribute.h +0 -0
  166. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfCRgbaFile.cpp +0 -0
  167. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfCRgbaFile.h +0 -0
  168. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfChannelList.cpp +0 -0
  169. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfChannelList.h +0 -0
  170. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfChannelListAttribute.cpp +0 -0
  171. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfChannelListAttribute.h +0 -0
  172. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfCheckedArithmetic.h +0 -0
  173. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfChromaticities.cpp +0 -0
  174. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfChromaticities.h +0 -0
  175. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfChromaticitiesAttribute.cpp +0 -0
  176. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfChromaticitiesAttribute.h +0 -0
  177. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfCompositeDeepScanLine.cpp +0 -0
  178. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfCompositeDeepScanLine.h +0 -0
  179. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfCompression.h +0 -0
  180. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfCompressionAttribute.cpp +0 -0
  181. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfCompressionAttribute.h +0 -0
  182. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfCompressor.cpp +0 -0
  183. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfCompressor.h +0 -0
  184. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfConvert.cpp +0 -0
  185. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfConvert.h +0 -0
  186. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfDeepCompositing.cpp +0 -0
  187. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfDeepCompositing.h +0 -0
  188. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfDeepFrameBuffer.cpp +0 -0
  189. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfDeepFrameBuffer.h +0 -0
  190. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfDeepImageState.h +0 -0
  191. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfDeepImageStateAttribute.cpp +0 -0
  192. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfDeepImageStateAttribute.h +0 -0
  193. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfDeepScanLineInputFile.cpp +0 -0
  194. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfDeepScanLineInputFile.h +0 -0
  195. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfDeepScanLineInputPart.cpp +0 -0
  196. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfDeepScanLineInputPart.h +0 -0
  197. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfDeepScanLineOutputFile.cpp +0 -0
  198. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfDeepScanLineOutputFile.h +0 -0
  199. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfDeepScanLineOutputPart.cpp +0 -0
  200. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfDeepScanLineOutputPart.h +0 -0
  201. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfDeepTiledInputFile.cpp +0 -0
  202. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfDeepTiledInputFile.h +0 -0
  203. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfDeepTiledInputPart.cpp +0 -0
  204. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfDeepTiledInputPart.h +0 -0
  205. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfDeepTiledOutputFile.cpp +0 -0
  206. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfDeepTiledOutputFile.h +0 -0
  207. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfDeepTiledOutputPart.cpp +0 -0
  208. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfDeepTiledOutputPart.h +0 -0
  209. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfDoubleAttribute.cpp +0 -0
  210. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfDoubleAttribute.h +0 -0
  211. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfDwaCompressor.cpp +0 -0
  212. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfDwaCompressor.h +0 -0
  213. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfDwaCompressorSimd.h +0 -0
  214. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfEnvmap.cpp +0 -0
  215. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfEnvmap.h +0 -0
  216. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfEnvmapAttribute.cpp +0 -0
  217. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfEnvmapAttribute.h +0 -0
  218. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfExport.h +0 -0
  219. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfFastHuf.cpp +0 -0
  220. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfFastHuf.h +0 -0
  221. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfFloatAttribute.cpp +0 -0
  222. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfFloatAttribute.h +0 -0
  223. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfFloatVectorAttribute.cpp +0 -0
  224. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfFloatVectorAttribute.h +0 -0
  225. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfForward.h +0 -0
  226. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfFrameBuffer.cpp +0 -0
  227. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfFrameBuffer.h +0 -0
  228. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfFramesPerSecond.cpp +0 -0
  229. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfFramesPerSecond.h +0 -0
  230. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfGenericInputFile.cpp +0 -0
  231. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfGenericInputFile.h +0 -0
  232. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfGenericOutputFile.cpp +0 -0
  233. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfGenericOutputFile.h +0 -0
  234. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfHeader.cpp +0 -0
  235. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfHeader.h +0 -0
  236. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfHuf.cpp +0 -0
  237. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfHuf.h +0 -0
  238. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfIDManifest.cpp +0 -0
  239. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfIDManifest.h +0 -0
  240. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfIDManifestAttribute.cpp +0 -0
  241. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfIDManifestAttribute.h +0 -0
  242. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfIO.cpp +0 -0
  243. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfIO.h +0 -0
  244. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfInputFile.cpp +0 -0
  245. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfInputFile.h +0 -0
  246. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfInputPart.cpp +0 -0
  247. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfInputPart.h +0 -0
  248. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfInputPartData.cpp +0 -0
  249. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfInputPartData.h +0 -0
  250. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfInputStreamMutex.h +0 -0
  251. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfInt64.h +0 -0
  252. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfIntAttribute.cpp +0 -0
  253. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfIntAttribute.h +0 -0
  254. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfKeyCode.cpp +0 -0
  255. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfKeyCode.h +0 -0
  256. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfKeyCodeAttribute.cpp +0 -0
  257. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfKeyCodeAttribute.h +0 -0
  258. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfLineOrder.h +0 -0
  259. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfLineOrderAttribute.cpp +0 -0
  260. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfLineOrderAttribute.h +0 -0
  261. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfLut.cpp +0 -0
  262. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfLut.h +0 -0
  263. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfMatrixAttribute.cpp +0 -0
  264. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfMatrixAttribute.h +0 -0
  265. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfMisc.cpp +0 -0
  266. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfMisc.h +0 -0
  267. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfMultiPartInputFile.cpp +0 -0
  268. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfMultiPartInputFile.h +0 -0
  269. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfMultiPartOutputFile.cpp +0 -0
  270. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfMultiPartOutputFile.h +0 -0
  271. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfMultiView.cpp +0 -0
  272. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfMultiView.h +0 -0
  273. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfName.h +0 -0
  274. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfNamespace.h +0 -0
  275. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfOpaqueAttribute.cpp +0 -0
  276. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfOpaqueAttribute.h +0 -0
  277. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfOptimizedPixelReading.h +0 -0
  278. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfOutputFile.cpp +0 -0
  279. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfOutputFile.h +0 -0
  280. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfOutputPart.cpp +0 -0
  281. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfOutputPart.h +0 -0
  282. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfOutputPartData.cpp +0 -0
  283. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfOutputPartData.h +0 -0
  284. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfOutputStreamMutex.h +0 -0
  285. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfPartHelper.h +0 -0
  286. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfPartType.cpp +0 -0
  287. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfPartType.h +0 -0
  288. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfPixelType.h +0 -0
  289. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfPizCompressor.cpp +0 -0
  290. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfPizCompressor.h +0 -0
  291. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfPreviewImage.cpp +0 -0
  292. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfPreviewImage.h +0 -0
  293. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfPreviewImageAttribute.cpp +0 -0
  294. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfPreviewImageAttribute.h +0 -0
  295. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfPxr24Compressor.cpp +0 -0
  296. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfPxr24Compressor.h +0 -0
  297. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfRational.cpp +0 -0
  298. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfRational.h +0 -0
  299. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfRationalAttribute.cpp +0 -0
  300. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfRationalAttribute.h +0 -0
  301. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfRgba.h +0 -0
  302. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfRgbaFile.cpp +0 -0
  303. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfRgbaFile.h +0 -0
  304. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfRgbaYca.cpp +0 -0
  305. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfRgbaYca.h +0 -0
  306. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfRle.cpp +0 -0
  307. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfRle.h +0 -0
  308. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfRleCompressor.cpp +0 -0
  309. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfRleCompressor.h +0 -0
  310. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfScanLineInputFile.cpp +0 -0
  311. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfScanLineInputFile.h +0 -0
  312. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfSimd.h +0 -0
  313. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfStandardAttributes.cpp +0 -0
  314. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfStandardAttributes.h +0 -0
  315. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfStdIO.cpp +0 -0
  316. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfStdIO.h +0 -0
  317. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfStringAttribute.cpp +0 -0
  318. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfStringAttribute.h +0 -0
  319. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfStringVectorAttribute.cpp +0 -0
  320. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfStringVectorAttribute.h +0 -0
  321. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfSystemSpecific.cpp +0 -0
  322. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfSystemSpecific.h +0 -0
  323. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfTestFile.cpp +0 -0
  324. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfTestFile.h +0 -0
  325. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfThreading.cpp +0 -0
  326. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfThreading.h +0 -0
  327. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfTileDescription.h +0 -0
  328. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfTileDescriptionAttribute.cpp +0 -0
  329. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfTileDescriptionAttribute.h +0 -0
  330. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfTileOffsets.cpp +0 -0
  331. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfTileOffsets.h +0 -0
  332. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfTiledInputFile.cpp +0 -0
  333. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfTiledInputFile.h +0 -0
  334. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfTiledInputPart.cpp +0 -0
  335. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfTiledInputPart.h +0 -0
  336. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfTiledMisc.cpp +0 -0
  337. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfTiledMisc.h +0 -0
  338. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfTiledOutputFile.cpp +0 -0
  339. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfTiledOutputFile.h +0 -0
  340. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfTiledOutputPart.cpp +0 -0
  341. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfTiledOutputPart.h +0 -0
  342. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfTiledRgbaFile.cpp +0 -0
  343. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfTiledRgbaFile.h +0 -0
  344. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfTimeCode.cpp +0 -0
  345. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfTimeCode.h +0 -0
  346. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfTimeCodeAttribute.cpp +0 -0
  347. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfTimeCodeAttribute.h +0 -0
  348. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfVecAttribute.cpp +0 -0
  349. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfVecAttribute.h +0 -0
  350. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfVersion.cpp +0 -0
  351. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfVersion.h +0 -0
  352. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfWav.cpp +0 -0
  353. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfWav.h +0 -0
  354. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfXdr.h +0 -0
  355. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfZip.cpp +0 -0
  356. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfZip.h +0 -0
  357. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfZipCompressor.cpp +0 -0
  358. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/ImfZipCompressor.h +0 -0
  359. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/b44ExpLogTable.cpp +0 -0
  360. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/b44ExpLogTable.h +0 -0
  361. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/dwaLookups.cpp +0 -0
  362. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXR/dwaLookups.h +0 -0
  363. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/CMakeLists.txt +0 -0
  364. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/attributes.c +0 -0
  365. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/backward_compatibility.h +0 -0
  366. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/base.c +0 -0
  367. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/channel_list.c +0 -0
  368. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/chunk.c +0 -0
  369. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/coding.c +0 -0
  370. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/context.c +0 -0
  371. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/debug.c +0 -0
  372. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/decoding.c +0 -0
  373. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/encoding.c +0 -0
  374. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/float_vector.c +0 -0
  375. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_attr.h +0 -0
  376. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_b44_table.c +0 -0
  377. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_channel_list.h +0 -0
  378. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_coding.h +0 -0
  379. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_compress.h +0 -0
  380. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_constants.h +0 -0
  381. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_cpuid.h +0 -0
  382. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_decompress.h +0 -0
  383. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_dwa.c +0 -0
  384. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_dwa_channeldata.h +0 -0
  385. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_dwa_classifier.h +0 -0
  386. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_dwa_encoder.h +0 -0
  387. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_dwa_helpers.h +0 -0
  388. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_dwa_simd.h +0 -0
  389. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_file.h +0 -0
  390. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_float_vector.h +0 -0
  391. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_huf.c +0 -0
  392. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_huf.h +0 -0
  393. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_memory.h +0 -0
  394. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_opaque.h +0 -0
  395. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_posix_file_impl.h +0 -0
  396. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_preview.h +0 -0
  397. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_rle.c +0 -0
  398. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_string.h +0 -0
  399. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_string_vector.h +0 -0
  400. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_structs.c +0 -0
  401. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_structs.h +0 -0
  402. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_util.h +0 -0
  403. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_win32_file_impl.h +0 -0
  404. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_xdr.h +0 -0
  405. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/internal_zip.c +0 -0
  406. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/memory.c +0 -0
  407. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/opaque.c +0 -0
  408. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/openexr.h +0 -0
  409. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/openexr_attr.h +0 -0
  410. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/openexr_base.h +0 -0
  411. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/openexr_chunkio.h +0 -0
  412. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/openexr_coding.h +0 -0
  413. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/openexr_compression.h +0 -0
  414. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/openexr_config.h +0 -0
  415. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/openexr_context.h +0 -0
  416. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/openexr_debug.h +0 -0
  417. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/openexr_decode.h +0 -0
  418. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/openexr_encode.h +0 -0
  419. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/openexr_errors.h +0 -0
  420. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/openexr_part.h +0 -0
  421. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/openexr_std_attr.h +0 -0
  422. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/pack.c +0 -0
  423. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/parse_header.c +0 -0
  424. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/part.c +0 -0
  425. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/part_attr.c +0 -0
  426. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/preview.c +0 -0
  427. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/std_attr.c +0 -0
  428. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/string.c +0 -0
  429. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/string_vector.c +0 -0
  430. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/unpack.c +0 -0
  431. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/validation.c +0 -0
  432. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRCore/write_header.c +0 -0
  433. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/CMakeLists.txt +0 -0
  434. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/ImfCheckFile.cpp +0 -0
  435. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/ImfCheckFile.h +0 -0
  436. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/ImfDeepImage.cpp +0 -0
  437. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/ImfDeepImage.h +0 -0
  438. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/ImfDeepImageChannel.cpp +0 -0
  439. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/ImfDeepImageChannel.h +0 -0
  440. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/ImfDeepImageIO.cpp +0 -0
  441. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/ImfDeepImageIO.h +0 -0
  442. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/ImfDeepImageLevel.cpp +0 -0
  443. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/ImfDeepImageLevel.h +0 -0
  444. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/ImfFlatImage.cpp +0 -0
  445. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/ImfFlatImage.h +0 -0
  446. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/ImfFlatImageChannel.cpp +0 -0
  447. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/ImfFlatImageChannel.h +0 -0
  448. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/ImfFlatImageIO.cpp +0 -0
  449. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/ImfFlatImageIO.h +0 -0
  450. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/ImfFlatImageLevel.cpp +0 -0
  451. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/ImfFlatImageLevel.h +0 -0
  452. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/ImfImage.cpp +0 -0
  453. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/ImfImage.h +0 -0
  454. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/ImfImageChannel.cpp +0 -0
  455. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/ImfImageChannel.h +0 -0
  456. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/ImfImageChannelRenaming.h +0 -0
  457. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/ImfImageDataWindow.cpp +0 -0
  458. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/ImfImageDataWindow.h +0 -0
  459. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/ImfImageIO.cpp +0 -0
  460. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/ImfImageIO.h +0 -0
  461. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/ImfImageLevel.cpp +0 -0
  462. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/ImfImageLevel.h +0 -0
  463. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/ImfSampleCountChannel.cpp +0 -0
  464. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/ImfSampleCountChannel.h +0 -0
  465. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/ImfUtilExport.h +0 -0
  466. {openexr-3.2.6 → openexr-3.2.8}/src/lib/OpenEXRUtil/README +0 -0
  467. {openexr-3.2.6 → openexr-3.2.8}/src/wrappers/python/CMakeLists.txt +0 -0
  468. {openexr-3.2.6 → openexr-3.2.8}/src/wrappers/python/Imath.py +0 -0
  469. {openexr-3.2.6 → openexr-3.2.8}/src/wrappers/python/OpenEXR.cpp +0 -0
  470. {openexr-3.2.6 → openexr-3.2.8}/src/wrappers/python/README.md +0 -0
  471. {openexr-3.2.6 → openexr-3.2.8}/src/wrappers/python/openexr_skbuild_plugin.py +0 -0
  472. {openexr-3.2.6 → openexr-3.2.8}/src/wrappers/python/tests/test_minimal.py +0 -0
  473. {openexr-3.2.6 → openexr-3.2.8}/src/wrappers/python/tests/test_unittest.py +0 -0
@@ -3,6 +3,8 @@
3
3
 
4
4
  # OpenEXR Release Notes
5
5
 
6
+ * [Version 3.2.8](#version-328-april-17-2026) April 17, 2026
7
+ * [Version 3.2.7](#version-327-april-3-2026) April 3, 2026
6
8
  * [Version 3.2.6](#version-326-february-26-2026) February 26, 2026
7
9
  * [Version 3.2.5](#version-325-november-4-2025) November 4, 2025
8
10
  * [Version 3.2.4](#version-324-march-26-2024) March 26, 2024
@@ -76,6 +78,47 @@
76
78
  * [Version 1.0.1](#version-101)
77
79
  * [Version 1.0](#version-10)
78
80
 
81
+ ## Version 3.2.8 (April 17, 2026)
82
+
83
+ Patch release that addresses the following security vulnerabilities:
84
+
85
+ * [CVE-2026-40244](https://www.cve.org/CVERecord?id=CVE-2026-40244) Integer overflow in DWA setupChannelData planarUncRle pointer arithmetic (missed variant of CVE-2026-34589)
86
+ * [CVE-2026-40250](https://www.cve.org/CVERecord?id=CVE-2026-40250) Integer overflow in DWA decoder outBufferEnd pointer arithmetic (missed variant of CVE-2026-34589)
87
+
88
+ ### Merged Pull Requests
89
+
90
+ * [2346](https://github.com/AcademySoftwareFoundation/openexr/pull/2346)
91
+ Fix integer overflow in internal_dwa_compressor.h
92
+
93
+ ## Version 3.2.7 (April 3, 2026)
94
+
95
+ Patch release for v3.2 that addresses the following security vulnerabilities:
96
+
97
+ * [CVE-2026-34589](https://www.cve.org/CVERecord?id=CVE-2026-34589) DWA Lossy Decoder Heap Out-of-Bounds Write
98
+ * [CVE-2026-34588](https://www.cve.org/CVERecord?id=CVE-2026-34588) Signed 32-bit Overflow in PIZ Decoder Leads to OOB Read/Write
99
+ * [CVE-2026-34544](https://www.cve.org/CVERecord?id=CVE-2026-34544) integer overflow to OOB write in uncompress_b44_impl()
100
+ * [CVE-2026-34543](https://www.cve.org/CVERecord?id=CVE-2026-34543) Heap information disclosure in PXR24 decompression via unchecked decompressed size (undo_pxr24_impl)
101
+ * [CVE-2026-34380](https://www.cve.org/CVERecord?id=CVE-2026-34380) Signed integer overflow (undefined behavior) in undo_pxr24_impl may allow bounds-check bypass in PXR24 decompression
102
+ * [CVE-2026-34379](https://www.cve.org/CVERecord?id=CVE-2026-34379) Misaligned write in LossyDctDecoder_execute leading to undefined behavior (DWA/DWAB decompression)
103
+
104
+ ### Merged Pull Requests
105
+
106
+ * [2329](https://github.com/AcademySoftwareFoundation/openexr/pull/2329)
107
+ Fix signed integer overflow in `LossyDctDecoder_execute()` pointer arithmatic
108
+ * [2328](https://github.com/AcademySoftwareFoundation/openexr/pull/2328)
109
+ fix integer overflow in PIZ wavelet buffer arithmetic
110
+ * [2324](https://github.com/AcademySoftwareFoundation/openexr/pull/2324)
111
+ Fix misaligned memory access in `LossyDctDecoder_execute` HALF→FLOAT expansion
112
+ * [2323](https://github.com/AcademySoftwareFoundation/openexr/pull/2323)
113
+ fix signed integer overflow in `undo_pxr24_impl()`
114
+ * [2312](https://github.com/AcademySoftwareFoundation/openexr/pull/2312)
115
+ Fix B44/B44A integer overflow: use uint64_t for row offset
116
+ * [2310](https://github.com/AcademySoftwareFoundation/openexr/pull/2310)
117
+ PXR24: reject zlib output that does not match packed payload size
118
+
119
+ ### Merged Workflow Pull Requests
120
+
121
+
79
122
  ## Version 3.2.6 (February 26, 2026)
80
123
 
81
124
  Patch release that prevents an integer overflow when using the
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: OpenEXR
3
- Version: 3.2.6
3
+ Version: 3.2.8
4
4
  Summary: Python bindings for the OpenEXR image file format
5
5
  Author-Email: Contributors to the OpenEXR project <info@openexr.com>
6
6
  Project-URL: Homepage, https://openexr.com
@@ -0,0 +1,200 @@
1
+ <!-- SPDX-License-Identifier: BSD-3-Clause -->
2
+ <!-- Copyright (c) Contributors to the OpenEXR Project -->
3
+
4
+ # Security Policy
5
+
6
+ ## Reporting a Vulnerability
7
+
8
+ If you think you've found a potential vulnerability in OpenEXR, please
9
+ report it by filing a GitHub [security
10
+ advisory](https://github.com/AcademySoftwareFoundation/openexr/security/advisories/new). Alternatively,
11
+ email security@openexr.com and provide your contact info for further
12
+ private/secure discussion. If your email does not receive a prompt
13
+ acknowledgement, your address may be blocked.
14
+
15
+ Our policy is to acknowledge the receipt of vulnerability reports
16
+ within 48 hours. Our policy is to address critical security vulnerabilities
17
+ rapidly and post patches within 14 days if possible.
18
+
19
+ ## Known Vulnerabilities
20
+
21
+ | CVE | Affected Versions | Patched Versions |
22
+ | --- | ----------------- | ---------------- |
23
+ | [CVE-2026-40250](https://www.cve.org/CVERecord?id=CVE-2026-40250) | 3.2.0–3.2.7, 3.3.0–3.3.9, 3.4.0–3.4.9 | 3.2.8, 3.3.10, 3.4.10 |
24
+ | [CVE-2026-40244](https://www.cve.org/CVERecord?id=CVE-2026-40244) | 3.2.0–3.2.7, 3.3.0–3.3.9, 3.4.0–3.4.9 | 3.2.8, 3.3.10, 3.4.10 |
25
+ | [CVE-2026-39886](https://www.cve.org/CVERecord?id=CVE-2026-39886) | 3.4.0–3.4.8 | 3.4.10 |
26
+ | [CVE-2026-34589](https://www.cve.org/CVERecord?id=CVE-2026-34589) | 3.2.0–3.2.6, 3.3.0–3.3.8, 3.4.0–3.4.8 | 3.2.7, 3.3.9, 3.4.9 |
27
+ | [CVE-2026-34588](https://www.cve.org/CVERecord?id=CVE-2026-34588) | 3.1.x, 3.2.0–3.2.6, 3.3.0–3.3.8, 3.4.0–3.4.8 | 3.2.7, 3.3.9, 3.4.9 |
28
+ | [CVE-2026-34545](https://www.cve.org/CVERecord?id=CVE-2026-34545) | 3.4.0–3.4.6 | 3.4.7 |
29
+ | [CVE-2026-34544](https://www.cve.org/CVERecord?id=CVE-2026-34544) | 3.2.0–3.2.6, 3.3.0–3.3.8, 3.4.0–3.4.7 | 3.2.7, 3.3.9, 3.4.8 |
30
+ | [CVE-2026-34543](https://www.cve.org/CVERecord?id=CVE-2026-34543) | 3.2.0–3.2.6, 3.3.0–3.3.8, 3.4.0–3.4.7 | 3.2.7, 3.3.9, 3.4.8 |
31
+ | [CVE-2026-34380](https://www.cve.org/CVERecord?id=CVE-2026-34380) | 3.2.0–3.2.6, 3.3.0–3.3.8, 3.4.0–3.4.8 | 3.2.7, 3.3.9, 3.4.9 |
32
+ | [CVE-2026-34379](https://www.cve.org/CVERecord?id=CVE-2026-34379) | 3.2.0–3.2.6, 3.3.0–3.3.8, 3.4.0–3.4.8 | 3.2.7, 3.3.9, 3.4.9 |
33
+ | [CVE-2026-34378](https://www.cve.org/CVERecord?id=CVE-2026-34378) | 3.4.0–3.4.8 | 3.4.9 |
34
+ | [CVE-2026-27622](https://www.cve.org/CVERecord?id=CVE-2026-27622) | 2.x, 3.0.x, 3.1.x, 3.2.0–3.2.5, 3.3.0–3.3.7, 3.4.0–3.4.5 | 3.2.6, 3.3.8, 3.4.6 |
35
+ | [CVE-2026-26981](https://www.cve.org/CVERecord?id=CVE-2026-26981) | 3.3.0–3.3.6, 3.4.0–3.4.4 | 3.3.7, 3.4.5 |
36
+ | [CVE-2025-64183](https://www.cve.org/CVERecord?id=CVE-2025-64183) | 3.2.0–3.2.4, 3.3.0–3.3.5, 3.4.0–3.4.2 | 3.2.5, 3.3.6, 3.4.3 |
37
+ | [CVE-2025-64182](https://www.cve.org/CVERecord?id=CVE-2025-64182) | 3.2.0–3.2.4, 3.3.0–3.3.5, 3.4.0–3.4.2 | 3.2.5, 3.3.6, 3.4.3 |
38
+ | [CVE-2025-64181](https://www.cve.org/CVERecord?id=CVE-2025-64181) | 3.3.0–3.3.5, 3.4.0–3.4.2 | 3.3.6, 3.4.3 |
39
+ | [CVE-2025-48074](https://www.cve.org/CVERecord?id=CVE-2025-48074) | 3.3.2 | 3.3.3 |
40
+ | [CVE-2025-48073](https://www.cve.org/CVERecord?id=CVE-2025-48073) | 3.3.2 | 3.3.3 |
41
+ | [CVE-2025-48072](https://www.cve.org/CVERecord?id=CVE-2025-48072) | 3.3.2 | 3.3.3 |
42
+ | [CVE-2025-48071](https://www.cve.org/CVERecord?id=CVE-2025-48071) | 3.3.0–3.3.2 | 3.3.3 |
43
+ | [CVE-2025-12840](https://www.cve.org/CVERecord?id=CVE-2025-12840) | 3.3.0–3.3.5, 3.4.0–3.4.2 | 3.3.6, 3.4.3 |
44
+ | [CVE-2025-12839](https://www.cve.org/CVERecord?id=CVE-2025-12839) | 3.3.0–3.3.5, 3.4.0–3.4.2 | 3.3.6, 3.4.3 |
45
+ | [CVE-2025-12495](https://www.cve.org/CVERecord?id=CVE-2025-12495) | 3.3.0–3.3.5, 3.4.0–3.4.2 | 3.3.6, 3.4.3 |
46
+ | [CVE-2023-5841](https://nvd.nist.gov/vuln/detail/CVE-2023-5841) | 3.1.0–3.1.11, 3.2.0–3.2.1 | 3.2.2 |
47
+ | [CVE-2021-45942](https://nvd.nist.gov/vuln/detail/CVE-2021-45942) | 3.1.0–3.1.3 | 3.1.4 |
48
+ | [CVE-2021-20296](https://nvd.nist.gov/vuln/detail/CVE-2021-20296) | 2.4.0–2.4.2, 2.5.0–2.5.3 | 2.4.3, 2.5.4 |
49
+ | [CVE-2021-3479](https://nvd.nist.gov/vuln/detail/CVE-2021-3479) | 2.4.0–2.4.2, 2.5.0–2.5.3 | 2.4.3, 2.5.4 |
50
+ | [CVE-2021-3478](https://nvd.nist.gov/vuln/detail/CVE-2021-3478) | 2.4.0–2.4.2, 2.5.0–2.5.3 | 2.4.3, 2.5.4 |
51
+ | [CVE-2021-3477](https://nvd.nist.gov/vuln/detail/CVE-2021-3477) | 2.4.0–2.4.2, 2.5.0–2.5.3 | 2.4.3, 2.5.4 |
52
+ | [CVE-2021-3476](https://nvd.nist.gov/vuln/detail/CVE-2021-3476) | 2.4.0–2.4.2, 2.5.0–2.5.3 | 2.4.3, 2.5.4 |
53
+ | [CVE-2021-3475](https://nvd.nist.gov/vuln/detail/CVE-2021-3475) | 2.4.0–2.4.2, 2.5.0–2.5.3 | 2.4.3, 2.5.4 |
54
+ | [CVE-2021-3474](https://nvd.nist.gov/vuln/detail/CVE-2021-3474) | 2.4.0–2.4.2, 2.5.0–2.5.3 | 2.4.3, 2.5.4 |
55
+ | [CVE-2020-16589](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-16589) | 2.0.0–2.0.1, 2.1.0, 2.2.0–2.2.1, 2.3.0 | 2.4.0 |
56
+ | [CVE-2020-16588](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-16588) | 2.0.0–2.0.1, 2.1.0, 2.2.0–2.2.1, 2.3.0 | 2.4.0 |
57
+ | [CVE-2020-16587](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-16587) | 2.0.0–2.0.1, 2.1.0, 2.2.0–2.2.1, 2.3.0 | 2.4.0 |
58
+ | [CVE-2020-15306](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-15306) | 2.0.0–2.0.1, 2.1.0, 2.2.0–2.2.1, 2.3.0, 2.4.0–2.4.1, 2.5.0–2.5.1 | 2.5.2 |
59
+ | [CVE-2020-15305](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-15305) | 2.0.0–2.0.1, 2.1.0, 2.2.0–2.2.1, 2.3.0, 2.4.0–2.4.1, 2.5.0–2.5.1 | 2.5.2 |
60
+ | [CVE-2020-15304](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-15304) | 2.0.0–2.0.1, 2.1.0, 2.2.0–2.2.1, 2.3.0, 2.4.0–2.4.1, 2.5.0–2.5.1 | 2.5.2 |
61
+ | [CVE-2020-11765](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-11765) | 2.0.0–2.0.1, 2.1.0, 2.2.0–2.2.1, 2.3.0, 2.4.0 | 2.4.1 |
62
+ | [CVE-2020-11764](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-11764) | 2.0.0–2.0.1, 2.1.0, 2.2.0–2.2.1, 2.3.0, 2.4.0 | 2.4.1 |
63
+ | [CVE-2020-11763](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-11763) | 2.0.0–2.0.1, 2.1.0, 2.2.0–2.2.1, 2.3.0, 2.4.0 | 2.4.1 |
64
+ | [CVE-2020-11762](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-11762) | 2.0.0–2.0.1, 2.1.0, 2.2.0–2.2.1, 2.3.0, 2.4.0 | 2.4.1 |
65
+ | [CVE-2020-11761](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-11761) | 2.0.0–2.0.1, 2.1.0, 2.2.0–2.2.1, 2.3.0, 2.4.0 | 2.4.1 |
66
+ | [CVE-2020-11760](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-11760) | 2.0.0–2.0.1, 2.1.0, 2.2.0–2.2.1, 2.3.0, 2.4.0 | 2.4.1 |
67
+ | [CVE-2020-11759](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-11759) | 2.0.0–2.0.1, 2.1.0, 2.2.0–2.2.1, 2.3.0, 2.4.0 | 2.4.1 |
68
+ | [CVE-2020-11758](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-11758) | 2.0.0–2.0.1, 2.1.0, 2.2.0–2.2.1, 2.3.0, 2.4.0 | 2.4.1 |
69
+ | [CVE-2018-18444](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-18444) | 2.0.0–2.0.1, 2.1.0, 2.2.0–2.2.1, 2.3.0 | 2.4.0 |
70
+ | [CVE-2018-18443](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-18443) | 2.0.0–2.0.1, 2.1.0, 2.2.0–2.2.1, 2.3.0 | 2.4.0 |
71
+ | [CVE-2017-9116](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9116) | 2.0.0–2.0.1, 2.1.0, 2.2.0 | 2.2.1 |
72
+ | [CVE-2017-9115](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9115) | 2.0.0–2.0.1, 2.1.0, 2.2.0 | 2.2.1 |
73
+ | [CVE-2017-9114](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9114) | 2.0.0–2.0.1, 2.1.0, 2.2.0 | 2.2.1 |
74
+ | [CVE-2017-9113](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9113) | 2.0.0–2.0.1, 2.1.0, 2.2.0 | 2.2.1 |
75
+ | [CVE-2017-9112](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9112) | 2.0.0–2.0.1, 2.1.0, 2.2.0 | 2.2.1 |
76
+ | [CVE-2017-9111](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9111) | 2.0.0–2.0.1, 2.1.0, 2.2.0 | 2.2.1 |
77
+ | [CVE-2017-9110](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9110) | 2.0.0–2.0.1, 2.1.0, 2.2.0 | 2.2.1 |
78
+ | [CVE-2017-12596](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12596) | 2.0.0–2.0.1, 2.1.0, 2.2.0–2.2.1 | 2.3.0 |
79
+ | [CVE-2009-1722](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-1722) | 1.0.x, 1.1.x, 1.2.x, 1.3.x, 1.4.x, 1.5.x, 1.6.x | 1.7.0 |
80
+ | [CVE-2009-1721](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-1721) | 1.0.x, 1.1.x, 1.2.x, 1.3.x, 1.4.x, 1.5.x, 1.6.x | 1.7.0 |
81
+ | [CVE-2009-1720](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-1720) | 1.0.x, 1.1.x, 1.2.x, 1.3.x, 1.4.x, 1.5.x, 1.6.x | 1.7.0 |
82
+
83
+ See the [release notes](CHANGES.md) for more information.
84
+
85
+ ## Supported Versions
86
+
87
+ This gives guidance about which branches are supported with patches to
88
+ security vulnerabilities.
89
+
90
+ | Version / branch | Supported |
91
+ | --------- | ---------------------------------------------------- |
92
+ | main | :white_check_mark: :construction: ALL fixes immediately, but this is a branch under development with a frequently unstable ABI and occasionally unstable API. |
93
+ | 3.2.x | :white_check_mark: All fixes that can be backported without breaking ABI compatibility. |
94
+ | 3.1.x | :warning: Only the most critical fixes, only if they can be easily backported. |
95
+ | 3.0.x | :warning: Only the most critical fixes, only if they can be easily backported. |
96
+ | 2.5.x | :warning: Only the most critical fixes, only if they can be easily backported. |
97
+ | <= 1.x | :x: No longer receiving patches of any kind. |
98
+
99
+ ## Signed Releases
100
+
101
+ Releases artifacts are signed via
102
+ [sigstore](https://www.sigstore.dev). See
103
+ [release-sign.yml](.github/workflows/release-sign.yml) for details.
104
+
105
+ To verify a downloaded release at a given tag:
106
+
107
+ % pip install sigstore
108
+ % sigstore verify github --cert-identity https://github.com/AcademySoftwareFoundation/openexr/.github/workflows/release-sign.yml@refs/tags/<tag> openexr-<tag>.tar.gz
109
+
110
+ ## Security Expectations
111
+
112
+ ### Software Features
113
+
114
+ - The OpenEXR project implements the EXR image file format, used
115
+ throughout the motion picture industry and beyond, on Linux, macOS,
116
+ and Windows.
117
+
118
+ - The project consists of a software run-time library, implemented in
119
+ C/C++ and built via cmake, that reads and writes image data
120
+ files. The project also distributes python wrappings for the C/C++
121
+ I/O API.
122
+
123
+ - The library reads and writes binary image data and text-based
124
+ metadata, treated as blind data, none of which is executable code.
125
+
126
+ - Other than the website and online technical documentation, the
127
+ project implements no web/online services or network communication
128
+ protocols. The library never requests any security or
129
+ authentication credentials or login information from users.
130
+
131
+ The website implements no interactive features and requires no login
132
+ credentials.
133
+
134
+ - The library reads and writes only to file paths specificly requested
135
+ via the C/C++ API. The runtime library uses no system configuration
136
+ files or sidecar data files. Access to data files uses only standard
137
+ file I/O system calls.
138
+
139
+ - The library compresses/decompresses data via standard compression
140
+ algorithms but uses no cryptographic or confidentiality protocols.
141
+
142
+ ### Software Dependencies
143
+
144
+ OpenEXR depends on
145
+ [Imath](https://github.com/AcademySoftwareFoundation/Imath), a library
146
+ of basic math operations also maintained and distributed by the
147
+ OpenEXR project. Imath follows the same security conventions
148
+ documented here for OpenEXR itself. The core Imath library has no
149
+ external dependencies. The Imath python bindings depend on python and
150
+ boost.
151
+
152
+ The only
153
+ external library dependency of OpenEXR is
154
+ [libdeflate](https://github.com/ebiggers/libdeflate), which implements
155
+ standard deflate/zlib/gzip compression and decompression.
156
+
157
+ The project uses
158
+ [Snyk](https://github.com/AcademySoftwareFoundation/openexr/blob/main/.github/workflows/snyk-scan-pr.yml)
159
+ to scan for dependency vulnerability.
160
+
161
+ ### Potential Vulnerabilities
162
+
163
+ Potential entry points are images being loaded using the
164
+ library. Malformed images could caused issues such as heap buffer
165
+ overflows, out-of-memory faults, or segmentation faults that could be
166
+ exploitable as denial-of-service attacks.
167
+
168
+ ### Hardening
169
+
170
+ #### Testing
171
+
172
+ The OpenEXR project implements a comprehensive suite of validation
173
+ tests, including fuzz testing to harden against malicious input
174
+ data. Note that fuzz testing hardens only against *small* input data
175
+ files and is not a comprehensive test against all potential input.
176
+
177
+ Note that the
178
+ [exrcheck](https://github.com/AcademySoftwareFoundation/openexr/tree/main/src/bin/exrcheck)
179
+ utility is intended to be used by testers to demonstrate a particular
180
+ proof-of-concept input file exposes a vulnerability, and it is very
181
+ helpful to let us know if a vulnerability can be reproduced using that
182
+ tool.
183
+
184
+ The project also uses the [OSS
185
+ Fuzz](https://bugs.chromium.org/p/oss-fuzz) service for continuous
186
+ fuzz testing.
187
+
188
+ #### Development Cycle and Distribution
189
+
190
+ OpenEXR is downloadable and buildable by C/C++ source via GitHub. Only
191
+ members of the project's Technical Steering Committee, all veteran
192
+ software engineers at major motion picture studios or vendors, have
193
+ write permissions on the source code repository. All critical software
194
+ changes are reviewed by multiple TSC members.
195
+
196
+ The library is distributed in binary form via many common package
197
+ managers across all platforms.
198
+
199
+
200
+
@@ -151,6 +151,19 @@ exr_uncompress_buffer (
151
151
  if (in_bytes == actual_in_bytes) return EXR_ERR_SUCCESS;
152
152
  /* it's an error to not consume the full buffer, right? */
153
153
  }
154
+ else if (res == LIBDEFLATE_INSUFFICIENT_SPACE)
155
+ {
156
+ return EXR_ERR_OUT_OF_MEMORY;
157
+ }
158
+ else if (res == LIBDEFLATE_SHORT_OUTPUT)
159
+ {
160
+ /* Decompression succeeded; *actual_out is the byte count. This is
161
+ * not an error when out_bytes_avail exceeds the true uncompressed
162
+ * size (e.g. PXR24/ZIP use padded scratch buffers). Callers that
163
+ * need an exact payload size must compare *actual_out (see e.g.
164
+ * undo_pxr24_impl). */
165
+ return EXR_ERR_SUCCESS;
166
+ }
154
167
  return EXR_ERR_CORRUPT_CHUNK;
155
168
  }
156
169
  return EXR_ERR_OUT_OF_MEMORY;
@@ -390,13 +390,13 @@ compress_b44_impl (exr_encode_pipeline_t* encode, int flat_field)
390
390
  // rightmost column and the bottom row.
391
391
  //
392
392
  uint16_t *row0, *row1, *row2, *row3;
393
+ /* row offset in elements: use uint64_t so y*nx cannot overflow int */
394
+ uint64_t row_off = (uint64_t) (y) * (uint64_t) (nx);
393
395
 
394
- row0 = (uint16_t*) scratch;
395
- row0 += y * nx;
396
-
397
- row1 = row0 + nx;
398
- row2 = row1 + nx;
399
- row3 = row2 + nx;
396
+ row0 = (uint16_t*) scratch + row_off;
397
+ row1 = row0 + (uint64_t) nx;
398
+ row2 = row1 + (uint64_t) nx;
399
+ row3 = row2 + (uint64_t) nx;
400
400
 
401
401
  if (y + 3 >= ny)
402
402
  {
@@ -512,11 +512,12 @@ uncompress_b44_impl (
512
512
 
513
513
  for (int y = 0; y < ny; y += 4)
514
514
  {
515
- row0 = (uint16_t*) scratch;
516
- row0 += y * nx;
517
- row1 = row0 + nx;
518
- row2 = row1 + nx;
519
- row3 = row2 + nx;
515
+ /* row offset in elements: use uint64_t so y*nx cannot overflow int */
516
+ uint64_t row_off = (uint64_t) (y) * (uint64_t) (nx);
517
+ row0 = (uint16_t*) scratch + row_off;
518
+ row1 = row0 + (uint64_t) nx;
519
+ row2 = row1 + (uint64_t) nx;
520
+ row3 = row2 + (uint64_t) nx;
520
521
  for (int x = 0; x < nx; x += 4)
521
522
  {
522
523
  if (bIn + 3 > comp_buf_size) return EXR_ERR_OUT_OF_MEMORY;
@@ -1039,7 +1039,8 @@ DwaCompressor_uncompress (
1039
1039
  if (rv != EXR_ERR_SUCCESS) return rv;
1040
1040
 
1041
1041
  cd->_dctData._type = chan->data_type;
1042
- outBufferEnd += chan->width * chan->bytes_per_element;
1042
+ outBufferEnd +=
1043
+ (size_t) chan->width * (size_t) chan->bytes_per_element;
1043
1044
  }
1044
1045
  }
1045
1046
 
@@ -1711,8 +1712,8 @@ DwaCompressor_setupChannelData (DwaCompressor* me)
1711
1712
  {
1712
1713
  for (int byte = 1; byte < curc->bytes_per_element; ++byte)
1713
1714
  {
1714
- cd->planarUncRle[byte] =
1715
- cd->planarUncRle[byte - 1] + curc->width * curc->height;
1715
+ cd->planarUncRle[byte] = cd->planarUncRle[byte - 1] +
1716
+ (size_t) curc->width * (size_t) curc->height;
1716
1717
 
1717
1718
  cd->planarUncRleEnd[byte] = cd->planarUncRle[byte];
1718
1719
  }
@@ -265,7 +265,7 @@ LossyDctDecoder_execute (
265
265
  }
266
266
 
267
267
  for (int comp = 1; comp < numComp; ++comp)
268
- rowBlock[comp] = rowBlock[comp - 1] + numBlocksX * 64;
268
+ rowBlock[comp] = rowBlock[comp - 1] + (size_t) numBlocksX * 64;
269
269
 
270
270
  //
271
271
  // Pack DC components together by common plane, so we can get
@@ -275,7 +275,7 @@ LossyDctDecoder_execute (
275
275
 
276
276
  currDcComp[0] = (uint16_t*) d->_packedDc;
277
277
  for (int comp = 1; comp < numComp; ++comp)
278
- currDcComp[comp] = currDcComp[comp - 1] + numBlocksX * numBlocksY;
278
+ currDcComp[comp] = currDcComp[comp - 1] + (size_t) numBlocksX * numBlocksY;
279
279
 
280
280
  for (int blocky = 0; blocky < numBlocksY; ++blocky)
281
281
  {
@@ -651,13 +651,22 @@ LossyDctDecoder_execute (
651
651
  /* process in place in reverse to avoid temporary buffer */
652
652
  for (int y = 0; y < d->_height; ++y)
653
653
  {
654
- float* floatXdrPtr = (float*) chanData[chan]->_rows[y];
655
- uint16_t* halfXdr = (uint16_t*) floatXdrPtr;
654
+ uint8_t* rowBytes = chanData[chan]->_rows[y];
656
655
 
657
656
  for (int x = d->_width - 1; x >= 0; --x)
658
657
  {
659
- floatXdrPtr[x] = one_from_native_float (
660
- half_to_float (one_to_native16 (halfXdr[x])));
658
+ // TODO: make an unaligned_store32f that takes the float and
659
+ // packages up a one_from_native_float and calls memcpy
660
+ // instead of the two memcpy. We should look at the metrics
661
+ // for dwa and see if there's a performance difference to do
662
+ // so at some point. See:
663
+ // https://github.com/AcademySoftwareFoundation/openexr/pull/2324
664
+
665
+ uint16_t h = unaligned_load16 (rowBytes + x * sizeof (uint16_t));
666
+ float f = half_to_float (h);
667
+ uint32_t bits;
668
+ memcpy (&bits, &f, sizeof (bits));
669
+ unaligned_store32 (rowBytes + x * sizeof (float), bits);
661
670
  }
662
671
  }
663
672
  }
@@ -10,6 +10,7 @@
10
10
  #include "internal_huf.h"
11
11
  #include "internal_xdr.h"
12
12
 
13
+ #include <limits.h>
13
14
  #include <string.h>
14
15
 
15
16
  /**************************************/
@@ -171,10 +172,11 @@ wdec16 (uint16_t l, uint16_t h, uint16_t* a, uint16_t* b)
171
172
  static void
172
173
  wav_2D_encode (uint16_t* in, int nx, int ox, int ny, int oy, uint16_t mx)
173
174
  {
174
- int w14 = (mx < (1 << 14)) ? 1 : 0;
175
- int n = (nx > ny) ? ny : nx;
176
- int p = 1; // == 1 << level
177
- int p2 = 2; // == 1 << (level+1)
175
+ int w14 = (mx < (1 << 14)) ? 1 : 0;
176
+ int n = (nx > ny) ? ny : nx;
177
+ int p = 1; // == 1 << level
178
+ int p2 = 2; // == 1 << (level+1)
179
+ int64_t oy64 = oy;
178
180
 
179
181
  //
180
182
  // Hierarchical loop on smaller dimension n
@@ -183,9 +185,9 @@ wav_2D_encode (uint16_t* in, int nx, int ox, int ny, int oy, uint16_t mx)
183
185
  while (p2 <= n)
184
186
  {
185
187
  uint16_t* py = in;
186
- uint16_t* ey = in + oy * (ny - p2);
187
- int oy1 = oy * p;
188
- int oy2 = oy * p2;
188
+ uint16_t* ey = in + oy64 * (ny - p2);
189
+ int64_t oy1 = oy64 * p;
190
+ int64_t oy2 = oy64 * p2;
189
191
  int ox1 = ox * p;
190
192
  int ox2 = ox * p2;
191
193
  uint16_t i00, i01, i10, i11;
@@ -284,10 +286,11 @@ wav_2D_decode (
284
286
  int oy, // i : y offset
285
287
  uint16_t mx) // i : maximum in[x][y] value
286
288
  {
287
- int w14 = (mx < (1 << 14)) ? 1 : 0;
288
- int n = (nx > ny) ? ny : nx;
289
- int p = 1;
290
- int p2;
289
+ int w14 = (mx < (1 << 14)) ? 1 : 0;
290
+ int n = (nx > ny) ? ny : nx;
291
+ int p = 1;
292
+ int p2;
293
+ int64_t oy64 = oy;
291
294
 
292
295
  //
293
296
  // Search max level
@@ -307,9 +310,9 @@ wav_2D_decode (
307
310
  while (p >= 1)
308
311
  {
309
312
  uint16_t* py = in;
310
- uint16_t* ey = in + oy * (ny - p2);
311
- int oy1 = oy * p;
312
- int oy2 = oy * p2;
313
+ uint16_t* ey = in + oy64 * (ny - p2);
314
+ int64_t oy1 = oy64 * p;
315
+ int64_t oy2 = oy64 * p2;
313
316
  int ox1 = ox * p;
314
317
  int ox2 = ox * p2;
315
318
  uint16_t i00, i01, i10, i11;
@@ -502,11 +505,13 @@ internal_exr_apply_piz (exr_encode_pipeline_t* encode)
502
505
  nx = curc->width;
503
506
  ny = curc->height;
504
507
  wcount = (int) (curc->bytes_per_element / 2);
508
+ if (wcount > 0 && nx > INT_MAX / wcount)
509
+ return EXR_ERR_CORRUPT_CHUNK;
505
510
  for (int j = 0; j < wcount; ++j)
506
511
  {
507
512
  wav_2D_encode (wavbuf + j, nx, wcount, ny, wcount * nx, maxValue);
508
513
  }
509
- wavbuf += nx * ny * wcount;
514
+ wavbuf += (uint64_t) nx * ny * wcount;
510
515
  }
511
516
 
512
517
  nBytes = 0;
@@ -655,11 +660,13 @@ internal_exr_undo_piz (
655
660
  nx = curc->width;
656
661
  ny = curc->height;
657
662
  wcount = (int) (curc->bytes_per_element / 2);
663
+ if (wcount > 0 && nx > INT_MAX / wcount)
664
+ return EXR_ERR_CORRUPT_CHUNK;
658
665
  for (int j = 0; j < wcount; ++j)
659
666
  {
660
667
  wav_2D_decode (wavbuf + j, nx, wcount, ny, wcount * nx, maxValue);
661
668
  }
662
- wavbuf += nx * ny * wcount;
669
+ wavbuf += (uint64_t) nx * ny * wcount;
663
670
  }
664
671
 
665
672
  //
@@ -182,7 +182,7 @@ apply_pxr24_impl (exr_encode_pipeline_t* encode)
182
182
  if (nOut + nBytes > encode->scratch_alloc_size_1)
183
183
  return EXR_ERR_OUT_OF_MEMORY;
184
184
  nOut += nBytes;
185
- lastIn += w * 4;
185
+ lastIn += (uint64_t) w * 4;
186
186
 
187
187
  ptr[0] = out;
188
188
  out += w;
@@ -319,7 +319,8 @@ undo_pxr24_impl (
319
319
  ptr[3] = lastIn;
320
320
  lastIn += w;
321
321
 
322
- if (nDec + nBytes > outSize) return EXR_ERR_CORRUPT_CHUNK;
322
+ if (nDec + nBytes > outSize)
323
+ return EXR_ERR_CORRUPT_CHUNK;
323
324
 
324
325
  for (int x = 0; x < w; ++x)
325
326
  {
@@ -345,7 +346,8 @@ undo_pxr24_impl (
345
346
  ptr[1] = lastIn;
346
347
  lastIn += w;
347
348
 
348
- if (nDec + nBytes > outSize) return EXR_ERR_CORRUPT_CHUNK;
349
+ if (nDec + nBytes > outSize)
350
+ return EXR_ERR_CORRUPT_CHUNK;
349
351
 
350
352
  for (int x = 0; x < w; ++x)
351
353
  {
@@ -371,7 +373,7 @@ undo_pxr24_impl (
371
373
  ptr[2] = lastIn;
372
374
  lastIn += w;
373
375
 
374
- if (nDec + (uint64_t) (w * 3) > outSize)
376
+ if (nDec + (uint64_t) w * 3 > outSize)
375
377
  return EXR_ERR_CORRUPT_CHUNK;
376
378
 
377
379
  for (int x = 0; x < w; ++x)
@@ -384,7 +386,7 @@ undo_pxr24_impl (
384
386
  unaligned_store32 (dout, pixel);
385
387
  ++dout;
386
388
  }
387
- nDec += (uint64_t) (w * 3);
389
+ nDec += (uint64_t) w * 3;
388
390
  break;
389
391
  }
390
392
  default: return EXR_ERR_INVALID_ARGUMENT;
@@ -10,6 +10,6 @@
10
10
 
11
11
  # define OPENEXR_VERSION_MAJOR 3
12
12
  # define OPENEXR_VERSION_MINOR 2
13
- # define OPENEXR_VERSION_PATCH 6
13
+ # define OPENEXR_VERSION_PATCH 8
14
14
 
15
15
  #endif