diff --git a/examples/test.ss b/examples/test.ss index 0478de9..01df311 100755 --- a/examples/test.ss +++ b/examples/test.ss @@ -56,8 +56,6 @@ md5 "%ss_filename%" | write "%ss_filename%.md5" "%PIPE%" # Read md5 file read "%ss_filename%.md5" -write("test.txt", "testing data"); - # Delete function, SS can delete files and directories with one function # NOTE: it is extremely powerful and can wreck your system if used in the # wrong way! Proceed with caution, delete "/" WILL send your files to the diff --git a/src/deps.h b/src/deps.h index 1f23396..0f42f6c 100644 --- a/src/deps.h +++ b/src/deps.h @@ -19,20 +19,20 @@ // For checking if file exists #include -#define MAX_VAR_NAME_LEN 128 +#define MAX_VAR_NAME_LEN 512 #define MAX_VAR_NAME_BUFSIZE (MAX_VAR_NAME_LEN + 1) #define MAX_STRING_LEN 4096 #define MAX_STRING_BUFSIZE (MAX_STRING_LEN + 1) -#define MAX_VAR_DATA_LEN 4096 -#define MAXVARS 2048 -#define MAX_CONCAT_BUF 2048 +#define MAX_VAR_DATA_LEN 65536 +#define MAXVARS 1488 +#define MAX_CONCAT_BUF 131072 #define MAX_READFILE_LEN 2097152 // for networking functions #define MAX_ADDRESS_LEN 256 #define MAX_ADDRESS_BUF (MAX_ADDRESS_LEN + 1) -#define MAX_NETSRCH_LEN 1024 +#define MAX_NETSRCH_LEN 4096 #define MAX_NETSRCH_BUF (MAX_NETSRCH_LEN + 1) -#define MAX_NETRESP_LEN 3068 +#define MAX_NETRESP_LEN 65536 #define MAX_NETRESP_BUF (MAX_NETRESP_BUF + 1) // END #define TOKEN '%' diff --git a/src/functions.c b/src/functions.c index baae1ec..250e1d5 100644 --- a/src/functions.c +++ b/src/functions.c @@ -34,16 +34,22 @@ char *process_line(char *line) return NULL; } + if(strncmp("exit", tok_srch, 4) == 0) + syn_error("ss:exit called"); + /* print function */ else if(strncmp("print",tok_srch,5) == 0) { char *parsed; tok_srch = strtok(NULL, "\""); + if(strtok(NULL, "\"") == NULL) + syn_error("ss:error:print syntax error, missing quote?"); + parsed = parse_vars(tok_srch); if(parsed != NULL) { if(strtok(NULL, "\"") == NULL) - syn_error("ss:error:print syntax error, missing end quote"); + syn_error("ss:error:print syntax error, missing end quote?"); return parsed; } @@ -57,8 +63,10 @@ char *process_line(char *line) else if(strncmp("sleep",tok_srch,5) == 0) { tok_srch = strtok(NULL, " "); - if(strcmp(tok_srch, "\n") == 0 || - strcmp(tok_srch, " \n") == 0 || tok_srch == NULL) + if(tok_srch == NULL) + syn_error("ss:error:sleep syntax error, need trailing integer for operation"); + + if(strcmp(tok_srch, "\n") == 0 || strcmp(tok_srch, " \n") == 0) syn_error("ss:error:sleep syntax error, need trailing integer for operation"); /* if there is a new line, remove it */ @@ -76,9 +84,12 @@ char *process_line(char *line) char srch[MAX_NETSRCH_BUF]; char port[7]; // Should never be more than 6 characters tok_srch = strtok(NULL, "\""); + if(strtok(NULL, "\"") == NULL) + syn_error("ss:error:netlisten syntax error, missing quote?"); + if(strcmp(tok_srch, "\n") == 0 || strcmp(tok_srch, " \n") == 0 || tok_srch == NULL) - syn_error("ss:error:sleep syntax error, need trailing integer for operation"); + syn_error("ss:error:netlisten syntax error, missing quote?"); if(strlen(parse_vars(tok_srch)) < 7) { @@ -160,10 +171,13 @@ char *process_line(char *line) char port[7]; /* strtok to filename of function */ tok_srch = strtok(NULL, "\""); + if(strtok(NULL, "\"") == NULL) + syn_error("ss:error:netconnect syntax error, missing quote?"); + /* Check to see if syntax is correct */ if(strcmp(tok_srch, "\n") == 0 || strcmp(tok_srch, " \n") == 0 || tok_srch == NULL) - syn_error("ss:error:netconnect syntax error, requires address followed by port; both in quotes"); + syn_error("ss:error:netconnect syntax error, missing quote?"); /* open file */ strcpy(address, parse_vars(tok_srch)); @@ -198,10 +212,13 @@ char *process_line(char *line) } /* ss encrypt function */ - else if(strncmp("encrypt",tok_srch,7) == 0) + else if(strncmp("encrypt",tok_srch,7) == 0 || strncmp("encode", tok_srch,6) == 0) { char *var_conv; tok_srch = strtok(NULL, "\""); + if(strtok(NULL, "\"") == NULL) + syn_error("ss:error:encode syntax error, requires data in quotes"); + if(strcmp(tok_srch, "\n") == 0 || strcmp(tok_srch, " \n") == 0 || tok_srch == NULL) syn_error("ss:error:encode syntax error, requires data in quotes"); @@ -216,10 +233,13 @@ char *process_line(char *line) } /* ss decrypt function */ - else if(strncmp("decrypt",tok_srch,7) == 0) + else if(strncmp("decrypt",tok_srch,7) == 0 || strncmp("decode", tok_srch,6) == 0) { char *var_conv; tok_srch = strtok(NULL, "\""); + if(strtok(NULL, "\"") == NULL) + syn_error("ss:error:decode syntax error, requires data in quotes"); + if(strcmp(tok_srch, "\n") == 0 || strcmp(tok_srch, " \n") == 0 || tok_srch == NULL) syn_error("ss:error:decode syntax error, requires data in quotes"); @@ -239,9 +259,12 @@ char *process_line(char *line) char *file_line, *catfile, *file_md5_val; tok_srch = strtok(NULL, "\""); + if(strtok(NULL, "\"") == NULL) + syn_error("ss:error:md5 syntax error, requires a file argument in quotes"); + if(strcmp(tok_srch, "\n") == 0 || strcmp(tok_srch, " \n") == 0 || tok_srch == NULL) - syn_error("ss:error:exec syntax error, requires a file argument in quotes"); + syn_error("ss:error:md5 syntax error, requires a file argument in quotes"); file_line = parse_vars(tok_srch); file_md5_val = md5_file(file_line); @@ -265,6 +288,9 @@ char *process_line(char *line) char *cmd_line; int return_val; tok_srch = strtok(NULL, "\""); + if(strtok(NULL, "\"") == NULL) + syn_error("ss:error:exec syntax error, requires a file argument in quotes"); + if(strcmp(tok_srch, "\n") == 0 || strcmp(tok_srch, " \n") == 0 || tok_srch == NULL) syn_error("ss:error:exec syntax error, requires argument in quotes"); @@ -286,6 +312,9 @@ char *process_line(char *line) FILE* write_file = NULL; /* strtok to filename of function */ tok_srch = strtok(NULL, "\""); + if(strtok(NULL, "\"") == NULL) + syn_error("ss:error:write syntax error, requires a file argument in quotes"); + /* Check to see if syntax is correct */ if(strcmp(tok_srch, "\n") == 0 || strcmp(tok_srch, " \n") == 0 || tok_srch == NULL) @@ -328,6 +357,9 @@ char *process_line(char *line) /* strtok to filename of function */ tok_srch = strtok(NULL, "\""); + if(strtok(NULL, "\"") == NULL) + syn_error("ss:error:read syntax error, requires a file argument in quotes"); + if(strcmp(tok_srch, "\n") == 0 || strcmp(tok_srch, " \n") == 0 || tok_srch == NULL) syn_error("ss:error:read syntax error, missing filename / in quotes");