diff --git a/programs/cmp_io.c b/programs/cmp_io.c
index ba6413e53c9e8d4006b26c9c9f44825ebeee102e..32eb9967aebdcbaf3a8124cf5ac34ccb8524bf1a 100644
--- a/programs/cmp_io.c
+++ b/programs/cmp_io.c
@@ -501,6 +501,12 @@ int case_insensitive_compare(const char *s1, const char *s2)
 {
 	size_t i;
 
+	if(s1 == NULL)
+		abort();
+
+	if(s2 == NULL)
+		abort();
+
 	for (i = 0;  ; ++i) {
 		unsigned int x1 = (unsigned char)s1[i];
 		unsigned int x2 = (unsigned char)s2[i];
diff --git a/programs/cmp_tool.c b/programs/cmp_tool.c
index 89df5ec22bc6a7f35235002bd16c3184c08e8c9b..20e2fb90bb8b218e345c860b82f95512b47205ca 100644
--- a/programs/cmp_tool.c
+++ b/programs/cmp_tool.c
@@ -650,7 +650,7 @@ static int guess_cmp_pars(struct rdcu_cfg *rcfg, struct cmp_par *chunk_par,
 
 	printf("Search for a good set of compression parameters (level: %d) ... ", guess_level);
 	fflush(stdout);
-	if (!case_insensitive_compare(guess_option, "rdcu")) {
+	if (guess_option && !case_insensitive_compare(guess_option, "rdcu")) {
 		if (add_rdcu_pars)
 			data_type = DATA_TYPE_IMAGETTE_ADAPTIVE;
 		else
@@ -659,7 +659,7 @@ static int guess_cmp_pars(struct rdcu_cfg *rcfg, struct cmp_par *chunk_par,
 			rcfg->cmp_mode = CMP_GUESS_DEF_MODE_MODEL;
 		else
 			rcfg->cmp_mode = CMP_GUESS_DEF_MODE_DIFF;
-	} else if (!case_insensitive_compare(guess_option, "chunk")) {
+	} else if (guess_option && !case_insensitive_compare(guess_option, "chunk")) {
 		data_type = DATA_TYPE_CHUNK;
 	} else {
 		data_type = DATA_TYPE_IMAGETTE;