From d49cb32e9185bbe63b1f8238ee0dbc94fb91dce4 Mon Sep 17 00:00:00 2001 From: Moammad97 Date: Sat, 28 Nov 2020 19:39:08 +0330 Subject: [PATCH] Add dynamic length string --- hyperdbg/script-engine/python/Grammer.txt | 2 +- .../python/parse_table_generator.py | 2 +- hyperdbg/script-engine/src/parse_table.h | 164 +++++++++--------- hyperdbg/script-engine/src/scanner.c | 30 ++++ hyperdbg/script-engine/src/scanner.h | 4 +- 5 files changed, 118 insertions(+), 84 deletions(-) diff --git a/hyperdbg/script-engine/python/Grammer.txt b/hyperdbg/script-engine/python/Grammer.txt index 55067c7b..e63badb0 100644 --- a/hyperdbg/script-engine/python/Grammer.txt +++ b/hyperdbg/script-engine/python/Grammer.txt @@ -4,7 +4,7 @@ S'->eps C->@PUSH _id = E0 @MOV C' C->print ( E0 @PRINT ) C'->eps -# + E0->E1 E0' E0'->| E1 @OR E0' E0'->eps diff --git a/hyperdbg/script-engine/python/parse_table_generator.py b/hyperdbg/script-engine/python/parse_table_generator.py index 6944c32e..549c2438 100644 --- a/hyperdbg/script-engine/python/parse_table_generator.py +++ b/hyperdbg/script-engine/python/parse_table_generator.py @@ -3,7 +3,7 @@ * @author M.H. Gholamrezei (gholamrezaei.mh@gmail.com) * @brief Script engine Parse table generator * @details This program reads grammer from Greammer.txt file - * placed in the same directory of the program and + * placed in the same directory of the program * and creates ParseTable.h which is used by the * parser of script engine. * @version 0.1 diff --git a/hyperdbg/script-engine/src/parse_table.h b/hyperdbg/script-engine/src/parse_table.h index b2b7fcb6..dcbbd1dd 100644 --- a/hyperdbg/script-engine/src/parse_table.h +++ b/hyperdbg/script-engine/src/parse_table.h @@ -1,4 +1,5 @@ -#pragma once +#ifndef PARSE_TABLE_H +#define PARSE_TABLE_H #include "scanner.h" #define RULES_COUNT 56 #define TERMINAL_COUNT 36 @@ -184,96 +185,97 @@ const unsigned int RhsSize[RULES_COUNT]= }; const char* NoneTerminalMap[NONETERMINAL_COUNT]= { -"E5", -"E1'", -"E3'", -"E1", -"E2", -"S'", -"C'", -"E8", -"C", -"E7'", -"E0", -"E9", -"E4'", -"E8'", "S", -"E2'", -"E0'", -"E4", -"E9'", -"E7", -"E10", -"E6'", -"E3", "E6", -"E5'" +"E10", +"E7'", +"E5", +"E8'", +"S'", +"E2'", +"E9'", +"E9", +"E2", +"E4", +"E8", +"E0'", +"E3'", +"E7", +"E5'", +"E3", +"C", +"E6'", +"E4'", +"E1", +"C'", +"E1'", +"E0" }; const char* TerminalMap[TERMINAL_COUNT]= { -"_decimal", -"-", -"hi", -"_octal", -"low", -"<<", -"sizeof", -"_register", -"func", -"dw", -"|", -"_binary", -")", -"/", -"_hex", -"str", -"+", -"^", -"$", -"print", -"_pseudo_register", -"dq", +"&", "neg", -"_id", +"<<", +"|", +"_octal", +"dq", "*", +"_hex", +")", +"sizeof", +"_pseudo_register", +"wstr", +"hi", +"not", +"_register", +"str", +"_id", +"-", +"/", +"func", +"%", +"print", +"(", +"low", +";", +"_binary", +">>", +"db", +"$", +"_decimal", +"dw", +"=", +"^", "poi", "dd", -";", -"db", -"(", -"=", -"wstr", -"not", -"&", -">>", -"%" +"+" }; const int ParseTable[NONETERMINAL_COUNT][TERMINAL_COUNT]= { - {21 ,-1 ,21 ,21 ,21 ,-1 ,21 ,21 ,21 ,21 ,-1 ,21 ,-1 ,-1 ,21 ,21 ,-1 ,-1 ,-1 ,-1 ,21 ,21 ,21 ,-1 ,-1 ,21 ,21 ,-1 ,21 ,21 ,-1 ,21 ,21 ,-1 ,-1 ,-1 }, - {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,11 ,-1 ,11 ,-1 ,-1 ,-1 ,-1 ,10 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,11 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 }, - {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,17 ,-1 ,17 ,-1 ,-1 ,-1 ,-1 ,17 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,17 ,-1 ,-1 ,-1 ,-1 ,-1 ,17 ,16 ,-1 }, - {9 ,-1 ,9 ,9 ,9 ,-1 ,9 ,9 ,9 ,9 ,-1 ,9 ,-1 ,-1 ,9 ,9 ,-1 ,-1 ,-1 ,-1 ,9 ,9 ,9 ,-1 ,-1 ,9 ,9 ,-1 ,9 ,9 ,-1 ,9 ,9 ,-1 ,-1 ,-1 }, - {12 ,-1 ,12 ,12 ,12 ,-1 ,12 ,12 ,12 ,12 ,-1 ,12 ,-1 ,-1 ,12 ,12 ,-1 ,-1 ,-1 ,-1 ,12 ,12 ,12 ,-1 ,-1 ,12 ,12 ,-1 ,12 ,12 ,-1 ,12 ,12 ,-1 ,-1 ,-1 }, - {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,2 ,1 ,-1 ,-1 ,-1 ,1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 }, - {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,5 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 }, - {30 ,-1 ,30 ,30 ,30 ,-1 ,30 ,30 ,30 ,30 ,-1 ,30 ,-1 ,-1 ,30 ,30 ,-1 ,-1 ,-1 ,-1 ,30 ,30 ,30 ,-1 ,-1 ,30 ,30 ,-1 ,30 ,30 ,-1 ,30 ,30 ,-1 ,-1 ,-1 }, - {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,4 ,-1 ,-1 ,-1 ,3 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 }, - {-1 ,29 ,-1 ,-1 ,-1 ,29 ,-1 ,-1 ,-1 ,-1 ,29 ,-1 ,29 ,-1 ,-1 ,-1 ,29 ,29 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,28 ,-1 ,-1 ,29 ,-1 ,-1 ,-1 ,-1 ,-1 ,29 ,29 ,-1 }, - {6 ,-1 ,6 ,6 ,6 ,-1 ,6 ,6 ,6 ,6 ,-1 ,6 ,-1 ,-1 ,6 ,6 ,-1 ,-1 ,-1 ,-1 ,6 ,6 ,6 ,-1 ,-1 ,6 ,6 ,-1 ,6 ,6 ,-1 ,6 ,6 ,-1 ,-1 ,-1 }, - {33 ,-1 ,33 ,33 ,33 ,-1 ,33 ,33 ,33 ,33 ,-1 ,33 ,-1 ,-1 ,33 ,33 ,-1 ,-1 ,-1 ,-1 ,33 ,33 ,33 ,-1 ,-1 ,33 ,33 ,-1 ,33 ,33 ,-1 ,33 ,33 ,-1 ,-1 ,-1 }, - {-1 ,-1 ,-1 ,-1 ,-1 ,19 ,-1 ,-1 ,-1 ,-1 ,20 ,-1 ,20 ,-1 ,-1 ,-1 ,-1 ,20 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,20 ,-1 ,-1 ,-1 ,-1 ,-1 ,20 ,20 ,-1 }, - {-1 ,32 ,-1 ,-1 ,-1 ,32 ,-1 ,-1 ,-1 ,-1 ,32 ,-1 ,32 ,31 ,-1 ,-1 ,32 ,32 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,32 ,-1 ,-1 ,32 ,-1 ,-1 ,-1 ,-1 ,-1 ,32 ,32 ,-1 }, - {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,0 ,-1 ,-1 ,-1 ,0 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 }, - {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,14 ,-1 ,14 ,-1 ,-1 ,-1 ,-1 ,14 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,14 ,-1 ,-1 ,-1 ,-1 ,-1 ,13 ,-1 ,-1 }, - {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,7 ,-1 ,8 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,8 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 }, - {18 ,-1 ,18 ,18 ,18 ,-1 ,18 ,18 ,18 ,18 ,-1 ,18 ,-1 ,-1 ,18 ,18 ,-1 ,-1 ,-1 ,-1 ,18 ,18 ,18 ,-1 ,-1 ,18 ,18 ,-1 ,18 ,18 ,-1 ,18 ,18 ,-1 ,-1 ,-1 }, - {-1 ,35 ,-1 ,-1 ,-1 ,35 ,-1 ,-1 ,-1 ,-1 ,35 ,-1 ,35 ,35 ,-1 ,-1 ,35 ,35 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,35 ,-1 ,-1 ,35 ,-1 ,-1 ,-1 ,-1 ,-1 ,35 ,35 ,34 }, - {27 ,-1 ,27 ,27 ,27 ,-1 ,27 ,27 ,27 ,27 ,-1 ,27 ,-1 ,-1 ,27 ,27 ,-1 ,-1 ,-1 ,-1 ,27 ,27 ,27 ,-1 ,-1 ,27 ,27 ,-1 ,27 ,27 ,-1 ,27 ,27 ,-1 ,-1 ,-1 }, - {51 ,-1 ,46 ,52 ,47 ,-1 ,43 ,49 ,54 ,39 ,-1 ,53 ,-1 ,-1 ,50 ,41 ,-1 ,-1 ,-1 ,-1 ,55 ,40 ,45 ,-1 ,-1 ,36 ,38 ,-1 ,37 ,48 ,-1 ,42 ,44 ,-1 ,-1 ,-1 }, - {-1 ,25 ,-1 ,-1 ,-1 ,26 ,-1 ,-1 ,-1 ,-1 ,26 ,-1 ,26 ,-1 ,-1 ,-1 ,26 ,26 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,26 ,-1 ,-1 ,-1 ,-1 ,-1 ,26 ,26 ,-1 }, - {15 ,-1 ,15 ,15 ,15 ,-1 ,15 ,15 ,15 ,15 ,-1 ,15 ,-1 ,-1 ,15 ,15 ,-1 ,-1 ,-1 ,-1 ,15 ,15 ,15 ,-1 ,-1 ,15 ,15 ,-1 ,15 ,15 ,-1 ,15 ,15 ,-1 ,-1 ,-1 }, - {24 ,-1 ,24 ,24 ,24 ,-1 ,24 ,24 ,24 ,24 ,-1 ,24 ,-1 ,-1 ,24 ,24 ,-1 ,-1 ,-1 ,-1 ,24 ,24 ,24 ,-1 ,-1 ,24 ,24 ,-1 ,24 ,24 ,-1 ,24 ,24 ,-1 ,-1 ,-1 }, - {-1 ,-1 ,-1 ,-1 ,-1 ,23 ,-1 ,-1 ,-1 ,-1 ,23 ,-1 ,23 ,-1 ,-1 ,-1 ,22 ,23 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,23 ,-1 ,-1 ,-1 ,-1 ,-1 ,23 ,23 ,-1 } + {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,0 ,-1 ,-1 ,-1 ,-1 ,0 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 }, + {-1 ,24 ,-1 ,-1 ,24 ,24 ,-1 ,24 ,-1 ,24 ,24 ,24 ,24 ,24 ,24 ,24 ,-1 ,-1 ,-1 ,24 ,-1 ,-1 ,24 ,24 ,-1 ,24 ,-1 ,24 ,-1 ,24 ,24 ,-1 ,-1 ,24 ,24 ,-1 }, + {-1 ,45 ,-1 ,-1 ,52 ,40 ,-1 ,50 ,-1 ,43 ,55 ,42 ,46 ,44 ,49 ,41 ,-1 ,-1 ,-1 ,54 ,-1 ,-1 ,48 ,47 ,-1 ,53 ,-1 ,37 ,-1 ,51 ,39 ,-1 ,-1 ,36 ,38 ,-1 }, + {29 ,-1 ,29 ,29 ,-1 ,-1 ,28 ,-1 ,29 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,29 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,29 ,-1 ,29 ,-1 ,-1 ,-1 ,-1 ,-1 ,29 ,-1 ,-1 ,29 }, + {-1 ,21 ,-1 ,-1 ,21 ,21 ,-1 ,21 ,-1 ,21 ,21 ,21 ,21 ,21 ,21 ,21 ,-1 ,-1 ,-1 ,21 ,-1 ,-1 ,21 ,21 ,-1 ,21 ,-1 ,21 ,-1 ,21 ,21 ,-1 ,-1 ,21 ,21 ,-1 }, + {32 ,-1 ,32 ,32 ,-1 ,-1 ,32 ,-1 ,32 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,32 ,31 ,-1 ,-1 ,-1 ,-1 ,-1 ,32 ,-1 ,32 ,-1 ,-1 ,-1 ,-1 ,-1 ,32 ,-1 ,-1 ,32 }, + {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,1 ,-1 ,-1 ,-1 ,-1 ,1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,2 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 }, + {13 ,-1 ,-1 ,14 ,-1 ,-1 ,-1 ,-1 ,14 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,14 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,14 ,-1 ,-1 ,-1 }, + {35 ,-1 ,35 ,35 ,-1 ,-1 ,35 ,-1 ,35 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,35 ,35 ,-1 ,34 ,-1 ,-1 ,-1 ,35 ,-1 ,35 ,-1 ,-1 ,-1 ,-1 ,-1 ,35 ,-1 ,-1 ,35 }, + {-1 ,33 ,-1 ,-1 ,33 ,33 ,-1 ,33 ,-1 ,33 ,33 ,33 ,33 ,33 ,33 ,33 ,-1 ,-1 ,-1 ,33 ,-1 ,-1 ,33 ,33 ,-1 ,33 ,-1 ,33 ,-1 ,33 ,33 ,-1 ,-1 ,33 ,33 ,-1 }, + {-1 ,12 ,-1 ,-1 ,12 ,12 ,-1 ,12 ,-1 ,12 ,12 ,12 ,12 ,12 ,12 ,12 ,-1 ,-1 ,-1 ,12 ,-1 ,-1 ,12 ,12 ,-1 ,12 ,-1 ,12 ,-1 ,12 ,12 ,-1 ,-1 ,12 ,12 ,-1 }, + {-1 ,18 ,-1 ,-1 ,18 ,18 ,-1 ,18 ,-1 ,18 ,18 ,18 ,18 ,18 ,18 ,18 ,-1 ,-1 ,-1 ,18 ,-1 ,-1 ,18 ,18 ,-1 ,18 ,-1 ,18 ,-1 ,18 ,18 ,-1 ,-1 ,18 ,18 ,-1 }, + {-1 ,30 ,-1 ,-1 ,30 ,30 ,-1 ,30 ,-1 ,30 ,30 ,30 ,30 ,30 ,30 ,30 ,-1 ,-1 ,-1 ,30 ,-1 ,-1 ,30 ,30 ,-1 ,30 ,-1 ,30 ,-1 ,30 ,30 ,-1 ,-1 ,30 ,30 ,-1 }, + {-1 ,-1 ,-1 ,7 ,-1 ,-1 ,-1 ,-1 ,8 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,8 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 }, + {17 ,-1 ,-1 ,17 ,-1 ,-1 ,-1 ,-1 ,17 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,17 ,-1 ,16 ,-1 ,-1 ,-1 ,-1 ,-1 ,17 ,-1 ,-1 ,-1 }, + {-1 ,27 ,-1 ,-1 ,27 ,27 ,-1 ,27 ,-1 ,27 ,27 ,27 ,27 ,27 ,27 ,27 ,-1 ,-1 ,-1 ,27 ,-1 ,-1 ,27 ,27 ,-1 ,27 ,-1 ,27 ,-1 ,27 ,27 ,-1 ,-1 ,27 ,27 ,-1 }, + {23 ,-1 ,23 ,23 ,-1 ,-1 ,-1 ,-1 ,23 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,23 ,-1 ,23 ,-1 ,-1 ,-1 ,-1 ,-1 ,23 ,-1 ,-1 ,22 }, + {-1 ,15 ,-1 ,-1 ,15 ,15 ,-1 ,15 ,-1 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,-1 ,-1 ,-1 ,15 ,-1 ,-1 ,15 ,15 ,-1 ,15 ,-1 ,15 ,-1 ,15 ,15 ,-1 ,-1 ,15 ,15 ,-1 }, + {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,3 ,-1 ,-1 ,-1 ,-1 ,4 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 }, + {26 ,-1 ,26 ,26 ,-1 ,-1 ,-1 ,-1 ,26 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,25 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,26 ,-1 ,26 ,-1 ,-1 ,-1 ,-1 ,-1 ,26 ,-1 ,-1 ,26 }, + {20 ,-1 ,19 ,20 ,-1 ,-1 ,-1 ,-1 ,20 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,20 ,-1 ,20 ,-1 ,-1 ,-1 ,-1 ,-1 ,20 ,-1 ,-1 ,-1 }, + {-1 ,9 ,-1 ,-1 ,9 ,9 ,-1 ,9 ,-1 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,-1 ,-1 ,-1 ,9 ,-1 ,-1 ,9 ,9 ,-1 ,9 ,-1 ,9 ,-1 ,9 ,9 ,-1 ,-1 ,9 ,9 ,-1 }, + {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,5 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 }, + {-1 ,-1 ,-1 ,11 ,-1 ,-1 ,-1 ,-1 ,11 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,11 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,10 ,-1 ,-1 ,-1 }, + {-1 ,6 ,-1 ,-1 ,6 ,6 ,-1 ,6 ,-1 ,6 ,6 ,6 ,6 ,6 ,6 ,6 ,-1 ,-1 ,-1 ,6 ,-1 ,-1 ,6 ,6 ,-1 ,6 ,-1 ,6 ,-1 ,6 ,6 ,-1 ,-1 ,6 ,6 ,-1 } }; +#endif diff --git a/hyperdbg/script-engine/src/scanner.c b/hyperdbg/script-engine/src/scanner.c index cb4352c6..6d7c4405 100644 --- a/hyperdbg/script-engine/src/scanner.c +++ b/hyperdbg/script-engine/src/scanner.c @@ -61,6 +61,8 @@ TOKEN NewToken() // strcpy(Token->Value, ""); Token->Type = UNKNOWN; + Token->len = 0; + Token->max_len = TOKEN_VALUE_MAX_LEN; return Token; } @@ -164,7 +166,35 @@ void PrintToken(TOKEN Token) */ void Append(TOKEN Token, char c) { + // + // Check overflow of the string + // + if (Token->len >= Token->max_len-1) + { + // + // Double the length of the allocated space for the string + // + Token->max_len *= 2; + char* NewValue = (char*)calloc(Token->max_len, sizeof(char)); + + + // + // Free Old buffer and update the pointer + // + strncpy(NewValue, Token->Value, Token->len); + free(Token->Value); + Token->Value = NewValue; + } + + + // + // Append the new charcter to the string + // strncat(Token->Value, &c, 1); + Token->len++; + + + } /** diff --git a/hyperdbg/script-engine/src/scanner.h b/hyperdbg/script-engine/src/scanner.h index 1690a6bb..28476c30 100644 --- a/hyperdbg/script-engine/src/scanner.h +++ b/hyperdbg/script-engine/src/scanner.h @@ -8,7 +8,7 @@ /** * @brief maximum length of string in the token */ -#define TOKEN_VALUE_MAX_LEN 100 +#define TOKEN_VALUE_MAX_LEN 8 /** * @brief init size of token list @@ -46,6 +46,8 @@ struct _TOKEN { TOKEN_TYPE Type; char* Value; + unsigned int len; + unsigned int max_len; };