From a4966aaae343a03c39a1b5ed368b6b05ba8f5ca5 Mon Sep 17 00:00:00 2001
From: Dominik Loidolt <dominik.loidolt@univie.ac.at>
Date: Wed, 22 Jan 2025 12:07:02 +0100
Subject: [PATCH] Fix: Add null checks for guess_option

- Added null checks to case_insensitive_compare in cmp_io.c
---
 programs/cmp_io.c   | 6 ++++++
 programs/cmp_tool.c | 4 ++--
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/programs/cmp_io.c b/programs/cmp_io.c
index ba6413e..32eb996 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 89df5ec..20e2fb9 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;
-- 
GitLab