diff --git a/ChangeLog b/ChangeLog index 5113f16c..0c15de01 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,9 @@ What's New for OpenJPEG ! : changed + : added +November 25, 2010 +* [antonin] Fix leak in jp2_read_header_procedure() (from even.rouault, see issue 29 on googlecode) + Jun 22, 2010 + [MM] Import j2k_dump from trunk (much faster!) 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; }