[PATCH] D77051: [test-suite] Work around undefined behaviour in lencod

Oliver Stannard (Linaro) via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Mar 30 04:50:22 PDT 2020


ostannard created this revision.
ostannard added a reviewer: kristof.beyls.

The NUM_BLOCK_TYPES macro is defined to 10, but the arrays in ctx_tables.h only have 8 elements in the relevant dimension, so this was causing out of bounds array accesses, and segfaults if we were (un)lucky.

      

This is almost exactly the same change as was made to ldecod in D74770 <https://reviews.llvm.org/D74770>.


Repository:
  rT test-suite

https://reviews.llvm.org/D77051

Files:
  MultiSource/Applications/JM/lencod/context_ini.c


Index: MultiSource/Applications/JM/lencod/context_ini.c
===================================================================
--- MultiSource/Applications/JM/lencod/context_ini.c
+++ MultiSource/Applications/JM/lencod/context_ini.c
@@ -216,16 +216,16 @@
   BIARI_CTX_INIT1 (   NUM_TRANSFORM_SIZE_CTX,  mc->transform_size_contexts,    INIT_TRANSFORM_SIZE,   img->model_number);
 
   //--- texture coding contexts ---
-  BIARI_CTX_INIT1 (                 NUM_IPR_CTX,  tc->ipr_contexts,     INIT_IPR,       img->model_number);
-  BIARI_CTX_INIT1 (                 NUM_CIPR_CTX, tc->cipr_contexts,    INIT_CIPR,      img->model_number);
-  BIARI_CTX_INIT2 (3,               NUM_CBP_CTX,  tc->cbp_contexts,     INIT_CBP,       img->model_number);
-  BIARI_CTX_INIT2 (8,               NUM_BCBP_CTX, tc->bcbp_contexts,    INIT_BCBP,      img->model_number);
-  BIARI_CTX_INIT2 (NUM_BLOCK_TYPES, NUM_MAP_CTX,  tc->map_contexts,     INIT_MAP,       img->model_number);
-  BIARI_CTX_INIT2 (NUM_BLOCK_TYPES, NUM_LAST_CTX, tc->last_contexts,    INIT_LAST,      img->model_number);
-  BIARI_CTX_INIT2 (NUM_BLOCK_TYPES, NUM_ONE_CTX,  tc->one_contexts,     INIT_ONE,       img->model_number);
-  BIARI_CTX_INIT2 (NUM_BLOCK_TYPES, NUM_ABS_CTX,  tc->abs_contexts,     INIT_ABS,       img->model_number);
-  BIARI_CTX_INIT2 (NUM_BLOCK_TYPES, NUM_MAP_CTX,  tc->fld_map_contexts, INIT_FLD_MAP,   img->model_number);
-  BIARI_CTX_INIT2 (NUM_BLOCK_TYPES, NUM_LAST_CTX, tc->fld_last_contexts,INIT_FLD_LAST,  img->model_number);
+  BIARI_CTX_INIT1 (   NUM_IPR_CTX,  tc->ipr_contexts,     INIT_IPR,       img->model_number);
+  BIARI_CTX_INIT1 (   NUM_CIPR_CTX, tc->cipr_contexts,    INIT_CIPR,      img->model_number);
+  BIARI_CTX_INIT2 (3, NUM_CBP_CTX,  tc->cbp_contexts,     INIT_CBP,       img->model_number);
+  BIARI_CTX_INIT2 (8, NUM_BCBP_CTX, tc->bcbp_contexts,    INIT_BCBP,      img->model_number);
+  BIARI_CTX_INIT2 (8, NUM_MAP_CTX,  tc->map_contexts,     INIT_MAP,       img->model_number);
+  BIARI_CTX_INIT2 (8, NUM_LAST_CTX, tc->last_contexts,    INIT_LAST,      img->model_number);
+  BIARI_CTX_INIT2 (8, NUM_ONE_CTX,  tc->one_contexts,     INIT_ONE,       img->model_number);
+  BIARI_CTX_INIT2 (8, NUM_ABS_CTX,  tc->abs_contexts,     INIT_ABS,       img->model_number);
+  BIARI_CTX_INIT2 (8, NUM_MAP_CTX,  tc->fld_map_contexts, INIT_FLD_MAP,   img->model_number);
+  BIARI_CTX_INIT2 (8, NUM_LAST_CTX, tc->fld_last_contexts,INIT_FLD_LAST,  img->model_number);
 }
 
 
@@ -288,16 +288,16 @@
     ADD_XRATE1 (   NUM_TRANSFORM_SIZE_CTX,  mc->transform_size_contexts, INIT_TRANSFORM_SIZE,  model);
 
     //--- texture coding contexts ---
-    ADD_XRATE1 (                  NUM_IPR_CTX,  tc->ipr_contexts,       INIT_IPR,       model);
-    ADD_XRATE1 (                  NUM_CIPR_CTX, tc->cipr_contexts,      INIT_CIPR,      model);
-    ADD_XRATE2 (3,                NUM_CBP_CTX,  tc->cbp_contexts,       INIT_CBP,       model);
-    ADD_XRATE2 (NUM_BLOCK_TYPES,  NUM_BCBP_CTX, tc->bcbp_contexts,      INIT_BCBP,      model);
-    ADD_XRATE2 (NUM_BLOCK_TYPES,  NUM_MAP_CTX,  tc->map_contexts,       INIT_MAP,       model);
-    ADD_XRATE2 (NUM_BLOCK_TYPES,  NUM_LAST_CTX, tc->last_contexts,      INIT_LAST,      model);
-    ADD_XRATE2 (NUM_BLOCK_TYPES,  NUM_ONE_CTX,  tc->one_contexts,       INIT_ONE,       model);
-    ADD_XRATE2 (NUM_BLOCK_TYPES,  NUM_ABS_CTX,  tc->abs_contexts,       INIT_ABS,       model);
-    ADD_XRATE2 (NUM_BLOCK_TYPES,  NUM_MAP_CTX,  tc->fld_map_contexts,   INIT_FLD_MAP,   model);
-    ADD_XRATE2 (NUM_BLOCK_TYPES,  NUM_LAST_CTX, tc->fld_last_contexts,  INIT_FLD_LAST,  model);
+    ADD_XRATE1 (    NUM_IPR_CTX,  tc->ipr_contexts,       INIT_IPR,       model);
+    ADD_XRATE1 (    NUM_CIPR_CTX, tc->cipr_contexts,      INIT_CIPR,      model);
+    ADD_XRATE2 (3,  NUM_CBP_CTX,  tc->cbp_contexts,       INIT_CBP,       model);
+    ADD_XRATE2 (8,  NUM_BCBP_CTX, tc->bcbp_contexts,      INIT_BCBP,      model);
+    ADD_XRATE2 (8,  NUM_MAP_CTX,  tc->map_contexts,       INIT_MAP,       model);
+    ADD_XRATE2 (8,  NUM_LAST_CTX, tc->last_contexts,      INIT_LAST,      model);
+    ADD_XRATE2 (8,  NUM_ONE_CTX,  tc->one_contexts,       INIT_ONE,       model);
+    ADD_XRATE2 (8,  NUM_ABS_CTX,  tc->abs_contexts,       INIT_ABS,       model);
+    ADD_XRATE2 (8,  NUM_MAP_CTX,  tc->fld_map_contexts,   INIT_FLD_MAP,   model);
+    ADD_XRATE2 (8,  NUM_LAST_CTX, tc->fld_last_contexts,  INIT_FLD_LAST,  model);
 
     if (xr<min_xr)
     {


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D77051.253549.patch
Type: text/x-patch
Size: 4457 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200330/df2dc20f/attachment-0001.bin>


More information about the llvm-commits mailing list