AVX-512: Fix bugs related to uninitialized variables
authorJin Kyu Song <jin.kyu.song@intel.com>
Sat, 21 Sep 2013 03:36:19 +0000 (20:36 -0700)
committerCyrill Gorcunov <gorcunov@gmail.com>
Sat, 21 Sep 2013 08:26:36 +0000 (12:26 +0400)
Initialized disp8 to avoid a case that disp8 encoded
instead of the actual offset value.
Added a checking routine for basereg value before using it
as an index of array.

Signed-off-by: Jin Kyu Song <jin.kyu.song@intel.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
assemble.c

index c0e316a..a38e56e 100644 (file)
@@ -2147,7 +2147,8 @@ static enum match_result matches(const struct itemplate *itemp,
                  */
                 opsizemissing = true;
             }
-        } else if (nasm_regvals[instruction->oprs[i].basereg] >= 16 &&
+        } else if (is_register(instruction->oprs[i].basereg) &&
+                   nasm_regvals[instruction->oprs[i].basereg] >= 16 &&
                    !(itemp->flags & IF_AVX512)) {
             return MERR_ENCMISMATCH;
         }
@@ -2313,6 +2314,7 @@ static enum ea_type process_ea(operand *input, ea *output, int bits,
 
     output->type    = EA_SCALAR;
     output->rip     = false;
+    output->disp8   = 0;
 
     /* REX flags for the rfield operand */
     output->rex     |= rexflags(rfield, rflags, REX_R | REX_P | REX_W | REX_H);