openjp2: Error out if failing to create Tier 1 handle. 1256/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 18:32:31 +0000 (02:32 +0800)
Previously when the handle failed to be created (e.g. when
opj_calloc returned NULL due to low memory), the code still
assumed that the t1 handle pointer was valid and dereferenced
NULL, causing a crash. After this commit OpenJPEG will instead
error out under this condition.

This fixes issue #1255.

src/lib/openjp2/t1.c

index f6f7671190cd5bc5a40a8ccac9b349abc0489e43..f47764f879b190aeb798021551908499bcd01c4d 100644 (file)
@@ -1658,6 +1658,13 @@ static void opj_t1_clbl_decode_processor(void* user_data, opj_tls_t* tls)
     t1 = (opj_t1_t*) opj_tls_get(tls, OPJ_TLS_KEY_T1);
     if (t1 == NULL) {
         t1 = opj_t1_create(OPJ_FALSE);
+        if (t1 == NULL) {
+            opj_event_msg(job->p_manager, EVT_ERROR,
+                          "Cannot allocate Tier 1 handle\n");
+            *(job->pret) = OPJ_FALSE;
+            opj_free(job);
+            return;
+        }
         opj_tls_set(tls, OPJ_TLS_KEY_T1, t1, opj_t1_destroy_wrapper);
     }
     t1->mustuse_cblkdatabuffer = job->mustuse_cblkdatabuffer;