diff options
| author | Sebastian Rasmussen <sebras@gmail.com> | 2025-01-16 02:13:43 +0100 |
|---|---|---|
| committer | Sebastian Rasmussen <sebras@gmail.com> | 2025-01-16 02:24:21 +0100 |
| commit | f809b80c67717c152a5ad30bf06774f00da4fd2d (patch) | |
| tree | 83db37bf5ada4eeafcf2b196ffed29e06a90c9d7 /src/lib | |
| parent | eb25a5ec777ff6699f4bb1187740467dcfa64dd6 (diff) | |
opj_jp2_read_header: Check for error after parsing header.
Consider the case where the caller has not set the p_image
pointer to NULL before calling opj_read_header().
If opj_j2k_read_header_procedure() fails while obtaining the rest
of the marker segment when calling opj_stream_read_data() because
the data stream is too short, then opj_j2k_read_header() will
never have the chance to initialize p_image, leaving it
uninitialized.
opj_jp2_read_header() will check the p_image value whether
opj_j2k_read_header() suceeded or failed. This may be detected as
an error in valgrind or ASAN.
The fix is to check whether opj_j2k_read_header() suceeded before
using the output argument p_image.
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/openjp2/jp2.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/lib/openjp2/jp2.c b/src/lib/openjp2/jp2.c index 4df055a5..da506318 100644 --- a/src/lib/openjp2/jp2.c +++ b/src/lib/openjp2/jp2.c @@ -2873,7 +2873,7 @@ OPJ_BOOL opj_jp2_read_header(opj_stream_private_t *p_stream, p_image, p_manager); - if (p_image && *p_image) { + if (ret && p_image && *p_image) { /* Set Image Color Space */ if (jp2->enumcs == 16) { (*p_image)->color_space = OPJ_CLRSPC_SRGB; |
