From 6f405478b49190d354750a63cd7c68fece5b5501 Mon Sep 17 00:00:00 2001
From: Dominik Loidolt <dominik.loidolt@univie.ac.at>
Date: Thu, 18 Apr 2024 14:23:15 +0200
Subject: [PATCH] Add new error code if the max_used_bits parameters are
 invalid

---
 lib/common/cmp_error.c      | 2 ++
 lib/common/cmp_error_list.h | 1 +
 lib/icu_compress/cmp_icu.c  | 4 ++--
 3 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/lib/common/cmp_error.c b/lib/common/cmp_error.c
index b81e595..1579151 100644
--- a/lib/common/cmp_error.c
+++ b/lib/common/cmp_error.c
@@ -86,6 +86,8 @@ const char* cmp_get_error_string(enum cmp_error code)
 		return "Specific compression parameters or combination is unsupported";
 	case CMP_ERROR_PAR_BUFFERS:
 		return "Buffer related parameter is not valid";
+	case CMP_ERROR_PAR_MAX_USED_BITS:
+		return "Maximum used bits parameters are not valid";
 
 	case CMP_ERROR_CHUNK_NULL:
 		return "Pointer to the chunk is NULL. No data, no compression";
diff --git a/lib/common/cmp_error_list.h b/lib/common/cmp_error_list.h
index f2f8bff..e28eb94 100644
--- a/lib/common/cmp_error_list.h
+++ b/lib/common/cmp_error_list.h
@@ -34,6 +34,7 @@ enum cmp_error {
 	CMP_ERROR_PAR_GENERIC = 20,
 	CMP_ERROR_PAR_SPECIFIC = 21,
 	CMP_ERROR_PAR_BUFFERS = 22,
+	CMP_ERROR_PAR_MAX_USED_BITS = 23,
 	/* chunk errors */
 	CMP_ERROR_CHUNK_NULL = 40,
 	CMP_ERROR_CHUNK_TOO_LARGE = 41,
diff --git a/lib/icu_compress/cmp_icu.c b/lib/icu_compress/cmp_icu.c
index 7df32bf..b0fd6cd 100644
--- a/lib/icu_compress/cmp_icu.c
+++ b/lib/icu_compress/cmp_icu.c
@@ -2031,7 +2031,7 @@ static uint32_t cmp_cfg_icu_is_invalid_error_code(const struct cmp_cfg *cfg)
 	RETURN_ERROR_IF(cmp_cfg_icu_buffers_is_invalid(cfg), PAR_BUFFERS, "");
 
 	if (cfg->cmp_mode != CMP_MODE_RAW)
-		RETURN_ERROR_IF(cmp_cfg_icu_max_used_bits_out_of_limit(cfg->max_used_bits), GENERIC, "");
+		RETURN_ERROR_IF(cmp_cfg_icu_max_used_bits_out_of_limit(cfg->max_used_bits), PAR_MAX_USED_BITS, "");
 
 	if (cmp_imagette_data_type_is_used(cfg->data_type)) {
 		RETURN_ERROR_IF(cmp_cfg_imagette_is_invalid(cfg, ICU_CHECK), PAR_SPECIFIC, "");
@@ -2777,7 +2777,7 @@ uint32_t compress_chunk_cmp_size_bound(const void *chunk, size_t chunk_size)
 
 	/* count the number of collections in the chunk */
 	for (read_bytes = 0;
-	     read_bytes <= (int32_t)chunk_size-COLLECTION_HDR_SIZE;
+	     read_bytes <= (int32_t)(chunk_size-COLLECTION_HDR_SIZE);
 	     read_bytes += cmp_col_get_size((const struct collection_hdr *)((const uint8_t *)chunk + read_bytes)))
 		num_col++;
 
-- 
GitLab