aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main.c9
-rw-r--r--tests/CMakeLists.txt6
2 files changed, 15 insertions, 0 deletions
diff --git a/src/main.c b/src/main.c
index 98c3529..6d309c8 100644
--- a/src/main.c
+++ b/src/main.c
@@ -39,6 +39,10 @@ static int is_valid_arg(char **args, char *s) {
static char *getenv_ex(char *s) {
char *key, *key_end;
char *env_var;
+ if (!s) {
+ return NULL;
+ }
+
key = strdup(s);
if (!key) {
return NULL;
@@ -205,12 +209,17 @@ int main(int argc, char *argv[], char *arge[]) {
if (ARGM("--sep") || ARGM("-s")) {
i++;
sep = argv[i];
+ if (!sep) {
+ fprintf(stderr, "%s requires an argument\n", argv[i - 1]);
+ exit(1);
+ }
continue;
}
if (ARGM("--env") || ARGM("-E")) {
i++;
sys_var = getenv_ex(argv[i]);
if (!sys_var) {
+ fprintf(stderr, "%s requires an argument\n", argv[i - 1]);
exit(1);
}
continue;
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 9728f72..1f36c0b 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -28,6 +28,8 @@ endforeach()
set(TEST_SETUP -E TESTVAR)
set(TEST_SETUP_ALL --all)
set(TEST_SETUP_ALL_LIST --all-list)
+set(TEST_SETUP_BROKEN_E -E)
+set(TEST_SETUP_BROKEN_SEP --sep)
if(WIN32)
set(TEST_SETUP ${TEST_SETUP}_WIN)
@@ -54,3 +56,7 @@ add_test(cmd_arg_help ${exec} --help)
add_test(cmd_arg_version ${exec} --version)
add_test(cmd_arg_list ${exec} --list)
add_test(cmd_arg_default ${exec} --default)
+add_test(cmd_arg_broken_e ${exec} ${TEST_SETUP_BROKEN_E})
+add_test(cmd_arg_broken_sep ${exec} ${TEST_SETUP_BROKEN_SEP})
+
+set_tests_properties(cmd_arg_broken_e cmd_arg_broken_sep PROPERTIES WILL_FAIL TRUE)