diff options
| author | Antonin Descampe <antonin@gmail.com> | 2010-11-25 12:15:07 +0000 |
|---|---|---|
| committer | Antonin Descampe <antonin@gmail.com> | 2010-11-25 12:15:07 +0000 |
| commit | a916dcd052695d0e7dd3b919eafd00f35fd824a7 (patch) | |
| tree | 24412324bb51c829b9d6b58dc8af8bdc5fb0f42d /libopenjpeg/jp2.c | |
| parent | cc01949777e56db1cb1bb2fd3809e2963da6efa3 (diff) | |
Fix leak in jp2_read_header_procedure() (from even.rouault, see issue 29 on googlecode)
Diffstat (limited to 'libopenjpeg/jp2.c')
| -rw-r--r-- | libopenjpeg/jp2.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/libopenjpeg/jp2.c b/libopenjpeg/jp2.c index a9e3975e..2de3eafa 100644 --- a/libopenjpeg/jp2.c +++ b/libopenjpeg/jp2.c @@ -525,11 +525,13 @@ bool jp2_read_header_procedure( (jp2->jp2_state & JP2_STATE_HEADER) { jp2->jp2_state |= JP2_STATE_CODESTREAM; + opj_free(l_current_data); return true; } else { opj_event_msg(p_manager, EVT_ERROR, "bad placed jpeg codestream\n"); + opj_free(l_current_data); return false; } } @@ -537,6 +539,7 @@ bool jp2_read_header_procedure( (box.length == 0) { opj_event_msg(p_manager, EVT_ERROR, "Cannot handle box of undefined sizes\n"); + opj_free(l_current_data); return false; } @@ -562,6 +565,7 @@ bool jp2_read_header_procedure( if (! l_current_handler->handler(jp2,l_current_data,l_current_data_size,p_manager)) { + opj_free(l_current_data); return false; } } @@ -572,10 +576,14 @@ bool jp2_read_header_procedure( (opj_stream_skip(cio,l_current_data_size,p_manager) != l_current_data_size) { opj_event_msg(p_manager, EVT_ERROR, "Problem with skipping JPEG2000 box, stream error\n"); + opj_free(l_current_data); return false; } } } + + opj_free(l_current_data); + return true; } |
