Fix possible out of bound for program array
am: f7cea66b5e
Change-Id: Ic528a59aceb5c8a368c195d6de4fc9e3384292e4
diff --git a/apf_disassembler.c b/apf_disassembler.c
index 8fa200a..03e6a06 100644
--- a/apf_disassembler.c
+++ b/apf_disassembler.c
@@ -92,7 +92,7 @@
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 @@
} 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);
}