Fix code to check for illegal element numbers when accessing AArch64 vector registers...
authorNick Clifton <nickc@redhat.com>
Fri, 18 Mar 2016 14:44:27 +0000 (14:44 +0000)
committerNick Clifton <nickc@redhat.com>
Fri, 18 Mar 2016 14:46:42 +0000 (14:46 +0000)
* cpustate.c (GET_VEC_ELEMENT): Fix off by one error checking
for an invalid element index.
(SET_VEC_ELEMENT): Likewise.

sim/aarch64/ChangeLog
sim/aarch64/cpustate.c

index f11eaad8ca15dfce75c2d362818d7871185f740a..e8f8b4895b836d28a8caf7f0d7e50a50987f2221 100644 (file)
@@ -4,6 +4,10 @@
        Print hex equivalents of floats and doubles.
        Check element number against array size when accessing vector
        registers.
+       (GET_VEC_ELEMENT): Fix off by one error checking for an invalid
+       element index.
+       (SET_VEC_ELEMENT): Likewise.
+
        * memory.c: Trace memory reads when --trace-memory is enabled.
        Remove float and double load and store functions.
        * memory.h (aarch64_get_mem_float): Delete prototype.
index 86b1b15cb4b7c3859940c3e5942c837adc820f98..19f485e81eaf60e587d7f5a805a6a05963ee8796 100644 (file)
@@ -345,7 +345,7 @@ aarch64_set_FP_long_double (sim_cpu *cpu, VReg reg, FRegister a)
 #define GET_VEC_ELEMENT(REG, ELEMENT, FIELD)      \
   do                                              \
     {                                             \
-      if (element > ARRAY_SIZE (cpu->fr[0].FIELD)) \
+      if (element >= ARRAY_SIZE (cpu->fr[0].FIELD)) \
        {                                                               \
          TRACE_REGISTER (cpu, \
                          "Internal SIM error: invalid element number: %d ",\
@@ -421,7 +421,7 @@ aarch64_get_vec_double (sim_cpu *cpu, VReg reg, unsigned element)
 #define SET_VEC_ELEMENT(REG, ELEMENT, VAL, FIELD, PRINTER)     \
   do                                                           \
     {                                                          \
-      if (ELEMENT > ARRAY_SIZE (cpu->fr[0].FIELD))                     \
+      if (ELEMENT >= ARRAY_SIZE (cpu->fr[0].FIELD))                    \
        {                                                               \
          TRACE_REGISTER (cpu, \
                          "Internal SIM error: invalid element number: %d ",\
This page took 0.026571 seconds and 4 git commands to generate.