summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorMickael Savinaud <savmickael@users.noreply.github.com>2012-11-13 09:47:16 +0000
committerMickael Savinaud <savmickael@users.noreply.github.com>2012-11-13 09:47:16 +0000
commit569d0ec7cc501cfbb2554bcd926fce1599c484f1 (patch)
treeba4a93397c97bb1db0b029f8c307269162003ddf /src/lib
parent1021e8752294774d336cddc2771ad004d79dcc2a (diff)
[trunk] avoid memory leak in opj_t2_decode_packets
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/openjp2/t2.c7
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;
}
}