aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2021-10-31 15:53:14 +0100
committerBad Diode <bd@badd10de.dev>2021-10-31 15:53:14 +0100
commite64cb7e315961d3f7772b42c2170acc2bd500a69 (patch)
treeada76daf14c7976850ee97d9c31d7454990ae230
parent4c6c012e284d160d3eccc73f6e54dbdb470210f6 (diff)
downloadbdl-e64cb7e315961d3f7772b42c2170acc2bd500a69.tar.gz
bdl-e64cb7e315961d3f7772b42c2170acc2bd500a69.zip
Add protection for buffer overflow of tokens
-rw-r--r--src/parser.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/parser.c b/src/parser.c
index ef7d336..57efd96 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -21,11 +21,17 @@ symbol_hash(const HashTable *table, void *key) {
21 21
22Token 22Token
23peek_token(const Parser *parser) { 23peek_token(const Parser *parser) {
24 if (parser->current >= array_size(parser->tokens)) {
25 return parser->tokens[array_size(parser->tokens) - 1];
26 }
24 return parser->tokens[parser->current]; 27 return parser->tokens[parser->current];
25} 28}
26 29
27Token 30Token
28next_token(Parser *parser) { 31next_token(Parser *parser) {
32 if (parser->current >= array_size(parser->tokens)) {
33 return parser->tokens[array_size(parser->tokens) - 1];
34 }
29 return parser->tokens[parser->current++]; 35 return parser->tokens[parser->current++];
30} 36}
31 37
@@ -424,12 +430,6 @@ parse_tree(Parser *parser, Errors *errors) {
424 break; 430 break;
425 } break; 431 } break;
426 } 432 }
427 error_push(errors, (Error){
428 .type = ERR_TYPE_PARSER,
429 .value = ERR_EOF_REACHED,
430 .line = tok.line,
431 .col = tok.col,
432 });
433 return NULL; 433 return NULL;
434} 434}
435 435