Catch walking off the end of a variable dereference

This commit is contained in:
Jeremiah Orians 2021-11-11 09:48:26 -05:00
parent 6ebe45f369
commit a025387b81
No known key found for this signature in database
GPG Key ID: 6B3A3F198708F894
3 changed files with 10 additions and 9 deletions

View File

@ -399,14 +399,14 @@ void emit_dereference(int load_byte) {
else if(RISCV64 == Architecture) emit_out("RD_A0 RS1_A0 LBU\n");
}
else
{
{
if((KNIGHT_POSIX == Architecture) || (KNIGHT_NATIVE == Architecture)) emit_out("LOAD R0 R0 0\n");
else if(X86 == Architecture) emit_out("LOAD_INTEGER\n");
else if(AMD64 == Architecture) emit_out("LOAD_INTEGER\n");
else if(ARMV7L == Architecture) emit_out("!0 R0 LOAD32 R0 MEMORY\n");
else if(AARCH64 == Architecture) emit_out("DEREF_X0\n");
else if(RISCV64 == Architecture) emit_out("RD_A0 RS1_A0 LD\n");
}
}
}
void variable_load(struct token_list* a, int num_dereference)
@ -721,6 +721,7 @@ void primary_expr_variable()
int num_dereference = 0;
while(global_token->s[0] == '*') {
global_token = global_token->next;
require(NULL != global_token, "Walked off the end of a variable dereference\n");
num_dereference = num_dereference + 1;
}
char* s = global_token->s;

View File

@ -221,9 +221,9 @@ eb1f6aab09a1a4966f9f49a518d8aa03ca97aa7c46e443871d758a306671a85e test/results/t
a2cbfd5f76d3be8049c6737e3fa02f191caf29b6885db006fa23f86e6eacc186 test/results/test0106-knight-posix-binary
d75e450e2fcdf19df63f9d6a3fe5e032933e57b33f6f06b39a8ed2f3dc759f17 test/results/test0106-riscv64-binary
473cc504d6cba9eaf648abcf15c83a317ff3f4a7f08f5e8936e3b35b2cc4fbc6 test/results/test0106-x86-binary
b5187732c5dd3c90f07404636c8a929d8ef0f4b0e859228468825eff4dbfd66b test/results/test1000-aarch64-binary
25c32aaa0dcda0aba7f2b0c9a87a923a904161448b50ad5c8c8032fb27e29f51 test/results/test1000-amd64-binary
7676c997da4ca49b204bfb884eec89418e5bb9620c1e686e03ba5064e7406ca6 test/results/test1000-armv7l-binary
f33537743e53ad62849af0675f5d3635ff0f3a1ba8169768289c125a014607c3 test/results/test1000-knight-posix-binary
120e74cb11b9df0fd0793cfae6475cfaf95f8af4242d3b4f8b33247249fff25d test/results/test1000-riscv64-binary
72ee105c0fd1356c029966a7c550c019a7ccc5763ec8c2f2e40affc345e1349b test/results/test1000-x86-binary
4008c440eb09971f84262e9441f103f75f002bfb1c2ce1d82058fdfcd5d1309c test/results/test1000-aarch64-binary
af7fe1f9db3823310e00c4bed0d42a6d0afb86ed70410542005d7784840904b2 test/results/test1000-amd64-binary
8a03041ad3c072d337383e67b1179ebbc32025dd8103c39ae6690529634f6d15 test/results/test1000-armv7l-binary
011d59b4eddd7bc6530f72c9f345d50dfc4e3f99b7b69858af8a927c8701fcb1 test/results/test1000-knight-posix-binary
dcd4ebd63c3f02b2278ffdc98f7d96136e1d6007bb9747b1bdc59a3ca73d685a test/results/test1000-riscv64-binary
24f6cb3a61fc2bcbe0224fdc272763a59a3af5928e07af84fb271d274a206215 test/results/test1000-x86-binary

View File

@ -1 +1 @@
a7014fa831a6f837d25bace5fdce16ff16cb155eb6676ad1f4bdc239d4ba361d test/test1000/proof
9644cf677938e82b7dc630577d24f187c0b20d4b5f36f7b188edf2a14c5ac06f test/test1000/proof