summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apf_disassembler.c4
1 files changed, 2 insertions, 2 deletions
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 @@ 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);
}