diff --git a/programs/cmp_guess.c b/programs/cmp_guess.c
index c76d1da39660bc2686d307b793deef727e931194..7c0f7fca365ba3bdc4d2993881c7bb3eb52697d3 100644
--- a/programs/cmp_guess.c
+++ b/programs/cmp_guess.c
@@ -35,6 +35,13 @@
 
 #define CMP_GUESS_MAX_CAL_STEPS 20274
 
+#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
+/* Redefine (f)printf to do nothing */
+__extension__
+#define printf(...) do {} while (0)
+#define fprintf(...) do {} while (0)
+#endif
+
 
 /* how often the model is updated before it is rested */
 static int num_model_updates = CMP_GUESS_N_MODEL_UPDATE_DEF;
diff --git a/programs/cmp_io.c b/programs/cmp_io.c
index 8cad7b04cec575874fd7e31a7a3074aa11a3f078..32eb9967aebdcbaf3a8124cf5ac34ccb8524bf1a 100644
--- a/programs/cmp_io.c
+++ b/programs/cmp_io.c
@@ -292,9 +292,11 @@ int write_data_to_file(const void *buf, uint32_t buf_size, const char *output_pr
 	}
 
 	if (flags & CMP_IO_VERBOSE_EXTRA && !(flags & CMP_IO_BINARY)) {
+#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
 		printf("\n");
 		fwrite(output_file_data, 1, output_file_size, stdout);
 		printf("\n");
+#endif
 	}
 
 	free(tmp_buf);
@@ -499,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 6abf0e95adb3b194851f17039e110d47716aae2d..522fbd1758c4ada98df2095904de3e99802311ca 100644
--- a/programs/cmp_tool.c
+++ b/programs/cmp_tool.c
@@ -153,6 +153,7 @@ static uint32_t model_counter;
 __extension__
 #define printf(...) do {} while (0)
 #define fprintf(...) do {} while (0)
+#define fflush(...) do {} while (0)
 
 int CMP_MAIN(int argc, char **argv);
 
@@ -649,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
@@ -658,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;