Fix possible out of bound for program array
Manoj Gupta [Wed, 9 Nov 2016 01:50:20 +0000 (17:50 -0800)]
Fixes warnings:
hardware/google/apf/apf_disassembler.c:136:48: warning: The right
operand of '|' is a garbage value
hardware/google/apf/apf_disassembler.c:96:32: warning: The right operand
of '|' is a garbage value

Test: Builds without above 2 warnings
Change-Id: I8a05e575c04dd74e29dfc845c6a7a58c10cbe380

apf_disassembler.c

index 8fa200a..03e6a06 100644 (file)
@@ -92,7 +92,7 @@ int main(void) {
       if (len_field != 0) {
           const uint32_t imm_len = 1 << (len_field - 1);
           uint32_t i;
-          for (i = 0; i < imm_len; i++)
+          for (i = 0; i < imm_len && pc < program_len; i++)
               imm = (imm << 8) | program[pc++];
           // Sign extend imm into signed_imm.
           signed_imm = imm << ((4 - imm_len) * 8);
@@ -132,7 +132,7 @@ int main(void) {
               } else {
                   uint32_t cmp_imm_len = 1 << (len_field - 1);
                   uint32_t i;
-                  for (i = 0; i < cmp_imm_len; i++)
+                  for (i = 0; i < cmp_imm_len && pc < program_len; i++)
                       cmp_imm = (cmp_imm << 8) | program[pc++];
                   printf("0x%x, ", cmp_imm);
               }