From 1a0ecaa49f76e7ec1ac592101353272287602b8c Mon Sep 17 00:00:00 2001 From: Leonardo Date: Mon, 2 Jul 2018 18:15:43 -0300 Subject: [PATCH] prevents running when too much files given --- src/c-rez.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/c-rez.c b/src/c-rez.c index f199118..3ea0d95 100644 --- a/src/c-rez.c +++ b/src/c-rez.c @@ -10,6 +10,17 @@ #include #include + +#define c_rez_xstr(value) c_rez_str(value) +#define c_rez_str(value) #value + +#ifndef C_REZ_MAX_FILE_COUNT +#define C_REZ_MAX_FILE_COUNT 1024 +#endif + + +#define C_REZ_MAX_ARG_COUNT (C_REZ_MAX_FILE_COUNT +1 +2 +2 +2) + /** * help text for the program */ @@ -40,7 +51,7 @@ struct crez_opts { const char * key; const char * h_output; const char * c_output; - const char * files[1024]; + const char * files[C_REZ_MAX_FILE_COUNT]; unsigned file_count; }; @@ -252,6 +263,13 @@ int opts_parse_or_exit(struct crez_opts * opts, struct crez_arg state; const char * opt; + if (argc >= C_REZ_MAX_ARG_COUNT) { + return print_help_and_exit("unexcpected file count. c-rez expects at max " + c_rez_xstr(C_REZ_MAX_FILE_COUNT) + " files" + ); + } + arg_construct(&state, argc, argv); arg_next(&state); opts->c_output = opts->h_output = (void *)0;