openjp2: Plug memory leak when setting data as TLS fails. 1258/head
authorSebastian Rasmussen <sebras@gmail.com>
Mon, 22 Jun 2020 18:18:19 +0000 (02:18 +0800)
committerSebastian Rasmussen <sebras@gmail.com>
Mon, 22 Jun 2020 19:21:31 +0000 (03:21 +0800)
Previously the Tier 1 handle was not freed when setting it as
TLS failed.

This fixes issue #1257.

src/lib/openjp2/t1.c

index f47764f879b190aeb798021551908499bcd01c4d..b32daeaee4de457ad7c8ff4b44631405d5453137 100644 (file)
@@ -1665,7 +1665,14 @@ static void opj_t1_clbl_decode_processor(void* user_data, opj_tls_t* tls)
             opj_free(job);
             return;
         }
-        opj_tls_set(tls, OPJ_TLS_KEY_T1, t1, opj_t1_destroy_wrapper);
+        if (!opj_tls_set(tls, OPJ_TLS_KEY_T1, t1, opj_t1_destroy_wrapper)) {
+            opj_event_msg(job->p_manager, EVT_ERROR,
+                          "Unable to set t1 handle as TLS\n");
+            opj_t1_destroy(t1);
+            *(job->pret) = OPJ_FALSE;
+            opj_free(job);
+            return;
+        }
     }
     t1->mustuse_cblkdatabuffer = job->mustuse_cblkdatabuffer;