Even Rouault [Tue, 7 Mar 2023 12:08:24 +0000 (13:08 +0100)]
opj_t2_skip_packet_data(): avoid out-of-bounds reads on truncated images in non-strict mode (fixes #1459)
autoantwort [Tue, 7 Feb 2023 00:08:38 +0000 (01:08 +0100)]
CMake: add missing GNUInstallDirs related substitutions (fixes #1424) (#1456)
Even Rouault [Wed, 19 Oct 2022 11:57:31 +0000 (13:57 +0200)]
Merge pull request #1448 from rouault/fix_1447
Fix incorrect decoding of image with large number of progression levels
Even Rouault [Tue, 18 Oct 2022 21:03:02 +0000 (23:03 +0200)]
Fix incorrect decoding of image with large number of progression levels
Fixes regression introduced per
d27ccf01c68a31ad62b33d2dc1ba2bb1eeaafe7b
Fixes #1447
Aleks L [Fri, 12 Aug 2022 13:48:41 +0000 (14:48 +0100)]
Fix Heap-buffer-overflow READ in opj_jp2_apply_pclr (#1441)
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.
Even Rouault [Fri, 12 Aug 2022 09:55:38 +0000 (11:55 +0200)]
Merge pull request #1440 from rouault/rate_alloc_speedup
Significant speed-up rate allocation by rate/distoratio ratio
Aous Naman [Thu, 11 Aug 2022 16:29:40 +0000 (02:29 +1000)]
Replace the assert in mel_init to an if statement to address an issue with 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.
Even Rouault [Thu, 11 Aug 2022 16:06:21 +0000 (18:06 +0200)]
Cleanup code related to quality layer allocation, and add a few safety checks
Even Rouault [Thu, 11 Aug 2022 14:46:55 +0000 (16:46 +0200)]
Significant speed-up rate allocation by rate/distoratio ratio
- 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).
Even Rouault [Thu, 11 Aug 2022 14:41:57 +0000 (16:41 +0200)]
Micro-optimization: use directly opj_bio_putbit() instead of opj_bio_write() to emit single bit
Even Rouault [Thu, 11 Aug 2022 12:49:36 +0000 (14:49 +0200)]
Merge pull request #1439 from arichardson/relocatable-cmake-config
Make OpenJPEGConfig.cmake relocatable with CMake > 3.0
Alex Richardson [Thu, 11 Aug 2022 12:09:04 +0000 (12:09 +0000)]
Make OpenJPEGConfig.cmake relocatable with CMake > 3.0
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.
Thomas Bracht Laumann Jespersen [Sun, 7 Aug 2022 14:42:01 +0000 (16:42 +0200)]
CMake: switch to GNUInstallDirs (#1424)
* 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
Even Rouault [Thu, 30 Jun 2022 10:57:39 +0000 (12:57 +0200)]
Merge pull request #1433 from rouault/fix_1432
opj_t1_encode_cblk(): avoid undefined behaviour on fuzzed input (fixes #1432)
Even Rouault [Wed, 29 Jun 2022 09:47:58 +0000 (11:47 +0200)]
opj_t1_encode_cblk(): avoid undefined behaviour on fuzzed input (fixes #1432)
Even Rouault [Mon, 27 Jun 2022 21:21:58 +0000 (23:21 +0200)]
Merge pull request #1431 from rouault/fix_1430
Build: fix linking of executables on some systems where TIFF/LCMS2 static libraries are not in system directories (fixes #1430)
Even Rouault [Mon, 27 Jun 2022 10:02:57 +0000 (12:02 +0200)]
Build: fix linking of executables on some systems where TIFF/LCMS2 static 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
Yuan [Tue, 31 May 2022 09:55:12 +0000 (17:55 +0800)]
HT_DEC: Fix opj_t1_allocate_buffers malloc size error (#1426) (fixes #1413)
Even Rouault [Mon, 16 May 2022 21:35:22 +0000 (23:35 +0200)]
Merge pull request #1423 from Neumann-A/patch-1
Fix windows arm builds
Even Rouault [Mon, 16 May 2022 21:25:54 +0000 (23:25 +0200)]
Merge pull request #1421 from Biswa96/pkgconf-static
pkgconfig: Define OPJ_STATIC for static linking with pkgconf
Alexander Neumann [Mon, 16 May 2022 21:10:26 +0000 (23:10 +0200)]
Fix windows arm builds
Biswapriyo Nath [Sun, 15 May 2022 12:41:45 +0000 (18:11 +0530)]
pkgconfig: Define OPJ_STATIC for static linking with pkgconf
allows for the usage of $(pkgconf --static --cflags libopenjp2) to produce
the proper CFLAGS for static linking. Relies on pkgconf rather than pkg-config
Even Rouault [Fri, 13 May 2022 18:17:50 +0000 (20:17 +0200)]
HOWTO-RELEASE: update
Even Rouault [Fri, 13 May 2022 18:17:42 +0000 (20:17 +0200)]
abi_check.sh: comment OPJ_PREVIOUS_VERSION
Even Rouault [Fri, 13 May 2022 17:13:11 +0000 (19:13 +0200)]
update tools/abi-tracker/openjpeg.json
Even Rouault [Fri, 13 May 2022 17:02:54 +0000 (19:02 +0200)]
abi_check.sh: Update version number for automatic abi check
Even Rouault [Fri, 13 May 2022 16:54:29 +0000 (18:54 +0200)]
Prepare for 2.5.0 release
Navidem [Fri, 13 May 2022 16:18:47 +0000 (11:18 -0500)]
Separate fuzz targets to increase coverage (#1416)
Even Rouault [Fri, 13 May 2022 15:58:38 +0000 (17:58 +0200)]
Merge pull request #1386 from DavidKorczynski/cifuzz
CI: Add CIFuzz action
Even Rouault [Sun, 8 May 2022 17:45:42 +0000 (19:45 +0200)]
opj_compress.c: usage formatting fix
Even Rouault [Sat, 7 May 2022 09:52:20 +0000 (11:52 +0200)]
Merge pull request #1418 from LongerVision/master
Java Support 1.8 now...
Even Rouault [Sat, 7 May 2022 09:52:09 +0000 (11:52 +0200)]
Merge pull request #1419 from rouault/fix_ci
tools/travis-ci/install.sh: git clone with https:// to fix 'The unaut…
Even Rouault [Sat, 7 May 2022 09:14:52 +0000 (11:14 +0200)]
Rename knownfailures-Ubuntu20.04-gcc9.3.0-x86_64-Release-3rdP.txt to knownfailures-Ubuntu20.04-gcc9.4.0-x86_64-Release-3rdP.txt
Even Rouault [Sat, 7 May 2022 09:05:04 +0000 (11:05 +0200)]
.github/workflows/build.yml: force use of windows-2019 VM
Even Rouault [Sat, 7 May 2022 08:55:00 +0000 (10:55 +0200)]
tools/travis-ci/install.sh: git clone with https:// to fix 'The unauthenticated git protocol on port 9418 is no longer supported.'
Even Rouault [Sat, 7 May 2022 08:23:26 +0000 (10:23 +0200)]
Merge pull request #1410 from rouault/fix_1404
CMakeLists.txt: do not set INSTALL_NAME_DIR for MacOS builds for CMake >= 3.0 (fixes #1404)
Pei Jia [Sat, 7 May 2022 01:27:27 +0000 (18:27 -0700)]
JAVA_SOURCE_VERSION from 1.6 to 1.8
Even Rouault [Sun, 13 Feb 2022 09:42:47 +0000 (10:42 +0100)]
CMakeLists.txt: do not set INSTALL_NAME_DIR for MacOS builds for CMake >= 3.0 (fixes #1404)
Even Rouault [Thu, 10 Feb 2022 14:49:57 +0000 (15:49 +0100)]
opj_j2k_decode_tile(): avoid 'Stream too short' error in non-strict mode
Even Rouault [Thu, 10 Feb 2022 14:13:49 +0000 (15:13 +0100)]
Merge pull request #1408 from rouault/fix_ossfuzz_44544
Avoid integer overflows in DWT. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=44544
Even Rouault [Thu, 10 Feb 2022 13:30:13 +0000 (14:30 +0100)]
Avoid integer overflows in DWT. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=44544
Robert Gabriel Jakabosky [Thu, 10 Feb 2022 13:27:17 +0000 (21:27 +0800)]
Add support for partial bitstream decoding (#1407) (fixes #715)
Add a -allow-partial option to opj_decompress utility and a opj_decoder_set_strict_mode() option to the API
Co-authored-by: Chris Hafey <chafey@gmail.com>
Even Rouault [Wed, 26 Jan 2022 20:52:40 +0000 (21:52 +0100)]
Add .github/ISSUE_TEMPLATE.md
Even Rouault [Mon, 24 Jan 2022 11:00:46 +0000 (12:00 +0100)]
Merge pull request #1403 from rouault/configure_guard_bits
opj_encoder_set_extra_options(): add a GUARD_BITS=value option
Even Rouault [Sun, 23 Jan 2022 16:53:55 +0000 (17:53 +0100)]
opj_encoder_set_extra_options(): add a GUARD_BITS=value option
and add a -GuardBits option to opj_compress.
The recently-released SMPTE DCP Bv2.1 Application Profile (link below)
says that the number of guard bits in the QCD marker shall be 1 for 2K
content and 2 for 4K content. This change allows the number of guard bits
to be configured, so that users of openjpeg have the control they need to meet the specification.
https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=
9161348
This is an alternative implementation of https://github.com/uclouvain/openjpeg/pull/1388
that keeps ABI unchanged.
Eric Harvey [Tue, 18 Jan 2022 20:55:10 +0000 (15:55 -0500)]
Fix potential overflow related issues spotted by LGTM code analysis (#1402)
Even Rouault [Tue, 18 Jan 2022 16:22:44 +0000 (17:22 +0100)]
Merge pull request #1401 from rouault/fix_1399
opj_j2k_setup_encoder(): validate number of tiles to avoid illegal values and potential overflow (fixes #1399)
Even Rouault [Tue, 18 Jan 2022 14:44:18 +0000 (15:44 +0100)]
opj_j2k_setup_encoder(): validate number of tiles to avoid illegal values and potential overflow (fixes #1399)
Eric Harvey [Sun, 16 Jan 2022 17:54:00 +0000 (12:54 -0500)]
Fix unsigned vs OPJ_INT32 mismatches (#1398)
Eharve14 [Sat, 15 Jan 2022 14:33:03 +0000 (09:33 -0500)]
Added check for integer overflow in get_num_images (#1397)
As discussed in pull request 1396, added a check for integer overflow.
Change list:
Defined num_images as unsigned int
Moved the if statement to check for an empty directory to the beginning of the read directory section
Added a check to see if num images would roll back to zero when incrementing.
Eharve14 [Thu, 13 Jan 2022 20:05:52 +0000 (15:05 -0500)]
Avoid overflow in multiplications in utilities related to big number of files in a directory (CVE-2021-29338) (#1396)
Brad Parham [Wed, 12 Jan 2022 12:46:10 +0000 (13:46 +0100)]
opj_compress/opj_uncompress: fix integer overflow in num_images (#1395)
Includes the fix for CVE-2021-29338
Credit to @kaniini based on #1346
Fixes #1338
Even Rouault [Fri, 10 Dec 2021 10:57:41 +0000 (11:57 +0100)]
Merge pull request #1392 from stweil/duplicate
Remove duplicate assignments in function tiftoimage
Stefan Weil [Fri, 10 Dec 2021 10:27:44 +0000 (11:27 +0100)]
Remove duplicate assignments in function tiftoimage
Signed-off-by: Stefan Weil <sw@weilnetz.de>
Even Rouault [Sun, 5 Dec 2021 13:32:51 +0000 (14:32 +0100)]
Merge pull request #1390 from stweil/typos
Fix some typos (found by codespell)
Stefan Weil [Sun, 5 Dec 2021 12:38:47 +0000 (13:38 +0100)]
Format source file with typo fixes
Signed-off-by: Stefan Weil <sw@weilnetz.de>
Stefan Weil [Sun, 5 Dec 2021 12:32:09 +0000 (13:32 +0100)]
Fix singular/plural mismatch
Signed-off-by: Stefan Weil <sw@weilnetz.de>
Stefan Weil [Sun, 5 Dec 2021 12:04:30 +0000 (13:04 +0100)]
Fix some typos (found by codespell)
Signed-off-by: Stefan Weil <sw@weilnetz.de>
msheby [Wed, 27 Oct 2021 12:10:50 +0000 (05:10 -0700)]
opj_compress: add a -TargetBitDepth switch for TIFF output (#1384)
Sometimes, given the same (16-bit TIF) input, one wants to generate a variety of J2C outputs (say, 16-, 12-, and 10-bit). This patch allows one to downsample input files, and so makes it easier to automate OpenJPEG in mass generation of J2Cs without having to pipe though an image processing program.
David Korczynski [Wed, 27 Oct 2021 10:10:11 +0000 (11:10 +0100)]
ci: Add CIFuzz action
Signed-off-by: David Korczynski <david@adalogics.com>
Even Rouault [Thu, 21 Oct 2021 15:21:36 +0000 (17:21 +0200)]
Merge pull request #1383 from rouault/deprecate_bpp
API: deprecate 'bpp' member in favor of 'prec'
Even Rouault [Thu, 21 Oct 2021 10:43:50 +0000 (12:43 +0200)]
API: deprecate 'bpp' member in favor of 'prec'
in opj_image_comp and opj_image_comptparm structures.
bpp was redundant with prec, and almost never set by the library, except
by opj_image_create(). This change should hopefully not impact existing,
working, users of the API, which should already have used prec to get
things working.
Fixes #1379
Even Rouault [Thu, 21 Oct 2021 11:12:05 +0000 (13:12 +0200)]
tests/: reformat a few files to be modified
Even Rouault [Mon, 27 Sep 2021 06:04:57 +0000 (08:04 +0200)]
tests/fuzzers/build_seed_corpus.sh: add htj2k files
Even Rouault [Sun, 26 Sep 2021 11:02:40 +0000 (13:02 +0200)]
Test decoding a .jhc file with vertically causal context variation
Even Rouault [Sun, 26 Sep 2021 10:49:05 +0000 (12:49 +0200)]
README.md: update badge to github action workflows [ci skip]
Even Rouault [Sun, 26 Sep 2021 10:41:05 +0000 (12:41 +0200)]
Test decoding a .jph test file
Even Rouault [Sun, 26 Sep 2021 10:37:59 +0000 (12:37 +0200)]
opj_dump.c: fix potential buffer overflow
Even Rouault [Sat, 25 Sep 2021 11:29:02 +0000 (13:29 +0200)]
Merge pull request #1381 from rouault/htj2k_followup
Added support for high throughput (HTJ2K) decoding.
Even Rouault [Sat, 25 Sep 2021 10:59:04 +0000 (12:59 +0200)]
ht_dec.c: fix likely issue on big endian hosts (untested)
Even Rouault [Sat, 25 Sep 2021 10:14:27 +0000 (12:14 +0200)]
opj_decompress / opj_dump: accept .jph and .jhc extensions for HTJ2K files
Aous Naman [Thu, 2 Sep 2021 08:51:38 +0000 (18:51 +1000)]
Added support for high throughput (HTJ2K) decoding.
There are a few limitations:
- mixed mode (HT and regular code blocks) is not supported.
- ROI in HT blocks is not supported.
- Placeholder passes are not supported.
- MultiHT sets are not support, only a singleHT set.
- there are known issues with some compliance testing files related to
the parsing of packet header.
Even Rouault [Wed, 15 Sep 2021 12:01:20 +0000 (14:01 +0200)]
Merge pull request #1380 from rouault/fix_verify_indent_pr
verify-indentation.sh: fix for pull request from bar/master to foo/master
Even Rouault [Wed, 15 Sep 2021 11:40:50 +0000 (13:40 +0200)]
CI 'regular': fix static builds when doing perf checks
Even Rouault [Wed, 15 Sep 2021 11:21:25 +0000 (13:21 +0200)]
verify-indentation.sh: fix for pull request from bar/master to foo/master
Even Rouault [Tue, 14 Sep 2021 15:15:53 +0000 (17:15 +0200)]
Merge pull request #1376 from rouault/gha
Port continuous integration to github actions
Jamaika1 [Sun, 12 Sep 2021 10:32:38 +0000 (12:32 +0200)]
Use standard integer types for compatibility with libtiff 4.3.0 (#1377)
Even Rouault [Sat, 11 Sep 2021 16:28:44 +0000 (18:28 +0200)]
appveyor.yml: disable deploy
Even Rouault [Fri, 10 Sep 2021 14:05:04 +0000 (16:05 +0200)]
Add github action workflows CI
Even Rouault [Wed, 8 Sep 2021 11:16:52 +0000 (13:16 +0200)]
Merge pull request #1375 from rouault/fix_ossfuzz_11700_30646
Avoid integer overflows in DWT.
Even Rouault [Fri, 3 Sep 2021 13:17:56 +0000 (15:17 +0200)]
Avoid integer overflows in DWT. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11700 and https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=30646
Even Rouault [Mon, 30 Aug 2021 17:15:32 +0000 (19:15 +0200)]
Merge pull request #1373 from DimitriPapadopoulos/lgtm
LGTM warning: Comparison result is always the same
Dimitri Papadopoulos [Mon, 30 Aug 2021 15:48:57 +0000 (18:48 +0300)]
LGTM warning: Comparison result is always the same
Comparison is always true because pos >= 0.
Even Rouault [Thu, 12 Aug 2021 09:42:28 +0000 (11:42 +0200)]
Merge pull request #1370 from madebr/cmake/export-include-directory
cmake: add install interface include directory
Even Rouault [Thu, 12 Aug 2021 09:40:40 +0000 (11:40 +0200)]
Merge pull request #1371 from DimitriPapadopoulos/codespell
A couple typos found by codespell
Dimitri Papadopoulos [Thu, 12 Aug 2021 09:12:22 +0000 (12:12 +0300)]
A couple typos found by codespell
Anonymous Maarten [Sun, 1 Aug 2021 18:56:40 +0000 (20:56 +0200)]
cmake: add install interface include directory
xiaoxiaoafeifei [Wed, 14 Jul 2021 01:35:13 +0000 (09:35 +0800)]
Fix segfault in src/bin/jp2/opj_decompress.c due to uninitialized pointer (fixes #1368) (#1369)
Even Rouault [Mon, 12 Jul 2021 13:59:41 +0000 (15:59 +0200)]
Fix code formatting
Even Rouault [Mon, 12 Jul 2021 13:58:06 +0000 (15:58 +0200)]
Merge pull request #1366 from sebras/fix-out-of-bounds-access
opj_j2k_is_imf_compliant: Fix out of bounds access
Sebastian Rasmussen [Mon, 12 Jul 2021 13:31:28 +0000 (15:31 +0200)]
opj_j2k_is_imf_compliant: Fix out of bounds access.
Previously when mainlevel was parsed == 12 openjpeg would generate
a warning, but then the sublevel value would be compared to an out
of bounds element in the tabMaxSubLevelFromMainLevel array. From
this commit OpenJPEG will only use mainlevel if in range.
Even Rouault [Mon, 12 Jul 2021 10:02:12 +0000 (12:02 +0200)]
Merge pull request #1365 from sebras/fix-warning-formatting
opj_j2k_is_imf_compliant: Fix argument formatting for warnings.
Sebastian Rasmussen [Mon, 12 Jul 2021 01:04:55 +0000 (03:04 +0200)]
opj_j2k_is_imf_compliant: Fix argument formatting for warnings.
Even Rouault [Wed, 9 Jun 2021 09:53:56 +0000 (11:53 +0200)]
Merge pull request #1361 from rouault/update_version_numbers_to_2_5
CMakeLists.txt/appveyor.yml: update version number to 2.5.0…
Even Rouault [Tue, 8 Jun 2021 12:34:43 +0000 (14:34 +0200)]
CMakeLists.txt/appveyor.yml: update version number to 2.5.0 to make it easier for downstream consumers to use new features
Even Rouault [Tue, 8 Jun 2021 09:11:04 +0000 (11:11 +0200)]
Merge pull request #1359 from rouault/TLM
Add support for enabling generation of TLM markers in encoder
Even Rouault [Mon, 7 Jun 2021 13:16:53 +0000 (15:16 +0200)]
Add support for enabling generation of TLM markers in encoder
Support was already there, but restricted to Cinema and IMF profiles,
and 255 tiles
* Add -TLM switch added to opj_compress
* Make opj_encoder_set_extra_options() function accept a TLM=YES option.
Even Rouault [Mon, 7 Jun 2021 13:48:42 +0000 (15:48 +0200)]
Merge pull request #1360 from rouault/travis_gcc_4_8_fix
.travis.yml: try to fix gcc 4.8 config by updating to xenial
Even Rouault [Mon, 7 Jun 2021 13:41:39 +0000 (15:41 +0200)]
.travis.yml: try to fix gcc 4.8 config by updating to xenial
Even Rouault [Mon, 7 Jun 2021 11:56:11 +0000 (13:56 +0200)]
Merge pull request #1358 from rouault/compiler_warning_fixes
Fix various compiler warnings