summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-09-23chore: GHA Ubuntu 22.04 now uses gcc 11.4.0mayeut
2023-09-23fix: use `opj_uint_ceildiv` instead of `opj_int_ceildiv` when necessarymayeut
There are a bunch of loc where we can see a usage of `opj_int_ceildiv`: ``` (OPJ_UINT32)opj_int_ceildiv((OPJ_INT32)a, (OPJ_INT32)b); ``` where a & b are `OPJ_UINT32`. This can lead to overflow/underflow for some a/b combinations. Replace those calls by `opj_uint_ceildiv` instead to always get a correct result. This also allows some valid single tile images with huge tile size to be decoded properly. Fix #1438
2023-03-26Merge pull request #1463 from rouault/fix_570Even Rouault
opj_jp2_read_header(): move setting color_space here instead in opj_jp2_decode()/get_tile() (fixes #570)
2023-03-26opj_jp2_read_header(): move setting icc_profile here instead in ↵Even Rouault
opj_jp2_decode()/get_tile() + add unit test (fixes #570)
2023-03-17opj_jp2_read_header(): move setting color_space here instead in ↵Even Rouault
opj_jp2_decode()/get_tile() (fixes #570)
2023-03-09Merge pull request #1462 from sebras/masterEven Rouault
CMake: error out on warnings for strict/missing prototypes.
2023-03-09CMake: error out on warnings for strict/missing prototypes.Sebastian Rasmussen
And fix strict-prototypes/missing-prototypes warnings.
2023-03-09Merge pull request #1450 from markmentovai/no_sprintfEven Rouault
openjp2/j2k: replace sprintf calls with snprintf
2023-03-07openjp2/j2k: replace sprintf calls with snprintfMark Mentovai
This makes it possible to build j2k.c without warnings using the macOS 13 SDK. Calls to sprintf are replaced with snprintf, passing appropriate buffer sizes. It doesn’t appear that any of the changed uses of sprintf were actually unsafe, so no behavior change is expected aside from SDK compatibility. The macOS 13 SDK deprecates sprintf as it’s difficult to use safely. The deprecation warning message is visible when building C++, but it is not normally visible when building plain C code due to a quirk in how sprintf is declared in the SDK. However, the deprecation message is visible when building plain C under Address Sanitizer (-fsanitize=address). This discrepancy was discovered at https://crbug.com/1381706 and reported to Apple with a copy at https://openradar.appspot.com/FB11761475. The macOS 13 SDK is packaged in Xcode 14.1, released on 2022-11-01. This also affects the iOS 16 SDK and other 2022-era Apple OS SDKs packaged in Xcode 14.0, released on 2022-09-12. j2k.c is visible to the Chromium build via PDFium, and this change is needed to allow Chromium to move forward to the macOS 13 SDK. This change is limited to src/lib/openjp2. Other uses of sprintf were found throughout openjpeg.
2023-03-07Remove support for non-C99 compilers (like VS2010) that don't support snprintf()Even Rouault
2023-03-07Merge pull request #1461 from rouault/fix_ciEven Rouault
Fix CI
2023-03-07Fix CIEven Rouault
2023-03-07Merge pull request #1460 from rouault/fix_1459Even Rouault
opj_t2_skip_packet_data(): avoid out-of-bounds reads on truncated images in non-strict mode (fixes #1459)
2023-03-07opj_t2_skip_packet_data(): avoid out-of-bounds reads on truncated images in ↵Even Rouault
non-strict mode (fixes #1459)
2023-02-07CMake: add missing GNUInstallDirs related substitutions (fixes #1424) (#1456)autoantwort
2022-10-19Merge pull request #1448 from rouault/fix_1447Even Rouault
Fix incorrect decoding of image with large number of progression levels
2022-10-18Fix incorrect decoding of image with large number of progression levelsEven Rouault
Fixes regression introduced per d27ccf01c68a31ad62b33d2dc1ba2bb1eeaafe7b Fixes #1447
2022-08-12Fix Heap-buffer-overflow READ in opj_jp2_apply_pclr (#1441)Aleks L
The issue was found while fuzzing opencv: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=47342 The read overflow triggered by reading `src[j]` in ```cpp for (j = 0; j < max; ++j) { dst[j] = src[j]; } ``` The max is calculated as `new_comps[pcol].w * new_comps[pcol].h`, however the `src = old_comps[cmp].data;` which may have different `w` and `h` dimensions.
2022-08-12Merge pull request #1440 from rouault/rate_alloc_speedupEven Rouault
Significant speed-up rate allocation by rate/distoratio ratio
2022-08-11Replace the assert in mel_init to an if statement to address an issue with ↵Aous Naman
fuzzing. (#1436) Modified the mel_init code to replace the assert statement with an if statement, returning false when an incorrect sequence of bytes are encountered in the MEL segment. Similar code should be added to the main MEL decoding subrountine, but the change is more involved; in any case, an incorrect sequence produces incorrect results, but should not be harmful or cause a crash.
2022-08-11Cleanup code related to quality layer allocation, and add a few safety checksEven Rouault
2022-08-11Significant speed-up rate allocation by rate/distoratio ratioEven Rouault
- Avoid doing 128 iterations all the time, and stop when the threshold doesn't vary much - Avoid calling costly opj_t2_encode_packets() repeatdly when bisecting the layer ratio if the truncation points haven't changed since the last iteration. When used with the GDAL gdal_translate application to convert a 11977 x 8745 raster with data type UInt16 and 8 channels, the conversion time to JPEG2000 with 20 quality layers using disto/rate allocation ( -co "IC=C8" -co "JPEG2000_DRIVER=JP2OPENJPEG" -co "PROFILE=NPJE_NUMERICALLY_LOSSLESS" creation options of the GDAL NITF driver) goes from 5m56 wall clock (8m20s total, 12 vCPUs) down to 1m16 wall clock (3m45 total).
2022-08-11Micro-optimization: use directly opj_bio_putbit() instead of opj_bio_write() ↵Even Rouault
to emit single bit
2022-08-11Merge pull request #1439 from arichardson/relocatable-cmake-configEven Rouault
Make OpenJPEGConfig.cmake relocatable with CMake > 3.0
2022-08-11Make OpenJPEGConfig.cmake relocatable with CMake > 3.0Alex Richardson
Using CMakePackageConfigHelpers, we can generate a relocatable OpenJPEGConfig.config, using the PATH_VARS feature to make CMAKE_INSTALL_LIBDIR relative to the installed location. This change is needed for me when cross-compiling since CMAKE_INSTALL_FULL_LIBDIR is a path inside the sysroot rather than an absolute path to the actual includes. Without this change poppler ends up passing a -I flag that does not exist. This includes fallback code for CMake 2.8, which adds a bit of complexity, since I'm not sure if raising the minimum to 3.0 (now over 8 years old) is acceptable.
2022-08-07CMake: switch to GNUInstallDirs (#1424)Thomas Bracht Laumann Jespersen
* Add GNUInstallDirs for standard installation directories Distributions are given standard variables for already existing hooks. Multiarch libdirs is taken care of automagically. Raises minimum cmake version by a little. * Handle CMAKE_INSTALL_xxx being absolute paths for .pc file generation In some cases the CMAKE_INSTAL_{BIN,MAN,DOC,LIB,INCLUDE}DIR variables may turn out to be absolute paths in which case prepending ${prefix} in the pkg-config .pc files will result in incorrect values. For .pc file generation, figure out if these variables are absolute and omit the prefix in the configured file when so. See: https://github.com/OSGeo/PROJ/commit/ab25e4b7ed9544e668282dcd293cfaaa2e56dbdf
2022-06-30Merge pull request #1433 from rouault/fix_1432Even Rouault
opj_t1_encode_cblk(): avoid undefined behaviour on fuzzed input (fixes #1432)
2022-06-29opj_t1_encode_cblk(): avoid undefined behaviour on fuzzed input (fixes #1432)Even Rouault
2022-06-27Merge pull request #1431 from rouault/fix_1430Even Rouault
Build: fix linking of executables on some systems where TIFF/LCMS2 static libraries are not in system directories (fixes #1430)
2022-06-27Build: fix linking of executables on some systems where TIFF/LCMS2 static ↵Even Rouault
libraries are not in system directories (fixes #1430) Note that the fix might be partial only for static-only builds (cf comments) Ammends PR #866 and #867
2022-05-31HT_DEC: Fix opj_t1_allocate_buffers malloc size error (#1426) (fixes #1413)Yuan
2022-05-16Merge pull request #1423 from Neumann-A/patch-1Even Rouault
Fix windows arm builds
2022-05-16Merge pull request #1421 from Biswa96/pkgconf-staticEven Rouault
pkgconfig: Define OPJ_STATIC for static linking with pkgconf
2022-05-16Fix windows arm buildsAlexander Neumann
2022-05-15pkgconfig: Define OPJ_STATIC for static linking with pkgconfBiswapriyo Nath
allows for the usage of $(pkgconf --static --cflags libopenjp2) to produce the proper CFLAGS for static linking. Relies on pkgconf rather than pkg-config
2022-05-13HOWTO-RELEASE: updateEven Rouault
2022-05-13abi_check.sh: comment OPJ_PREVIOUS_VERSIONEven Rouault
2022-05-13update tools/abi-tracker/openjpeg.jsonEven Rouault
2022-05-13abi_check.sh: Update version number for automatic abi checkEven Rouault
2022-05-13Prepare for 2.5.0 releasev2.5.0Even Rouault
2022-05-13Separate fuzz targets to increase coverage (#1416)Navidem
2022-05-13Merge pull request #1386 from DavidKorczynski/cifuzzEven Rouault
CI: Add CIFuzz action
2022-05-08opj_compress.c: usage formatting fixEven Rouault
2022-05-07Merge pull request #1418 from LongerVision/masterEven Rouault
Java Support 1.8 now...
2022-05-07Merge pull request #1419 from rouault/fix_ciEven Rouault
tools/travis-ci/install.sh: git clone with https:// to fix 'The unaut…
2022-05-07Rename knownfailures-Ubuntu20.04-gcc9.3.0-x86_64-Release-3rdP.txt to ↵Even Rouault
knownfailures-Ubuntu20.04-gcc9.4.0-x86_64-Release-3rdP.txt
2022-05-07.github/workflows/build.yml: force use of windows-2019 VMEven Rouault
2022-05-07tools/travis-ci/install.sh: git clone with https:// to fix 'The ↵Even Rouault
unauthenticated git protocol on port 9418 is no longer supported.'
2022-05-07Merge pull request #1410 from rouault/fix_1404Even Rouault
CMakeLists.txt: do not set INSTALL_NAME_DIR for MacOS builds for CMake >= 3.0 (fixes #1404)
2022-05-06JAVA_SOURCE_VERSION from 1.6 to 1.8Pei Jia