diff options
| author | Mickael Savinaud <savmickael@users.noreply.github.com> | 2012-11-13 09:47:16 +0000 |
|---|---|---|
| committer | Mickael Savinaud <savmickael@users.noreply.github.com> | 2012-11-13 09:47:16 +0000 |
| commit | 569d0ec7cc501cfbb2554bcd926fce1599c484f1 (patch) | |
| tree | ba4a93397c97bb1db0b029f8c307269162003ddf /src | |
| parent | 1021e8752294774d336cddc2771ad004d79dcc2a (diff) | |
[trunk] avoid memory leak in opj_t2_decode_packets
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/openjp2/t2.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/lib/openjp2/t2.c b/src/lib/openjp2/t2.c index 2aa888ae..dc094098 100644 --- a/src/lib/openjp2/t2.c +++ b/src/lib/openjp2/t2.c @@ -355,6 +355,11 @@ opj_bool opj_t2_decode_packets( opj_t2_t *p_t2, * and no l_img_comp->resno_decoded are computed */ opj_bool* first_pass_failed = (opj_bool*)opj_malloc(l_image->numcomps * sizeof(opj_bool)); + if (!first_pass_failed) + { + opj_pi_destroy(l_pi,l_nb_pocs); + return OPJ_FALSE; + } memset(first_pass_failed, OPJ_TRUE, l_image->numcomps * sizeof(opj_bool)); while (opj_pi_next(l_current_pi)) { @@ -368,6 +373,7 @@ opj_bool opj_t2_decode_packets( opj_t2_t *p_t2, if (! opj_t2_decode_packet(p_t2,p_tile,l_tcp,l_current_pi,l_current_data,&l_nb_bytes_read,p_max_len,l_pack_info)) { opj_pi_destroy(l_pi,l_nb_pocs); + opj_free(first_pass_failed); return OPJ_FALSE; } @@ -378,6 +384,7 @@ opj_bool opj_t2_decode_packets( opj_t2_t *p_t2, l_nb_bytes_read = 0; if (! opj_t2_skip_packet(p_t2,p_tile,l_tcp,l_current_pi,l_current_data,&l_nb_bytes_read,p_max_len,l_pack_info)) { opj_pi_destroy(l_pi,l_nb_pocs); + opj_free(first_pass_failed); return OPJ_FALSE; } } |
