[v1] examples/fips_validation: fix memory leak in sha test

Message ID 2acc661bc1b574166e599957c805d70eee0d3a42.1656773321.git.gmuthukrishn@marvell.com (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers
Series [v1] examples/fips_validation: fix memory leak in sha test |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation warning apply issues

Commit Message

Gowrishankar Muthukrishnan July 2, 2022, 2:51 p.m. UTC
  There is wrong size used for allocation of digest buffer which in
some cases cause memory corruption. Also, fixed places where memory
leak is observed.

Fixes: 93d797d94f1 ("examples/fips_validation: add parsing for sha")

Signed-off-by: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>
---
 examples/fips_validation/fips_validation_sha.c | 10 ++++++++--
 examples/fips_validation/main.c                |  1 +
 2 files changed, 9 insertions(+), 2 deletions(-)
  

Patch

diff --git a/examples/fips_validation/fips_validation_sha.c b/examples/fips_validation/fips_validation_sha.c
index a2928618d7..538cb6647a 100644
--- a/examples/fips_validation/fips_validation_sha.c
+++ b/examples/fips_validation/fips_validation_sha.c
@@ -229,13 +229,19 @@  parse_test_sha_json_algorithm(void)
 	for (i = 0; i < RTE_DIM(phsc); i++) {
 		if (info.interim_info.sha_data.algo == phsc[i].algo) {
 			vec.cipher_auth.digest.len = atoi(phsc[i].str);
-			vec.cipher_auth.digest.val = calloc(0, vec.cipher_auth.digest.len * 8);
+			if (vec.cipher_auth.digest.val)
+				free(vec.cipher_auth.digest.val);
+
+			vec.cipher_auth.digest.val = calloc(1, vec.cipher_auth.digest.len);
 			break;
 		}
 	}
 
-	if (i == RTE_DIM(phsc))
+	if (i == RTE_DIM(phsc)) {
+		free(vec.cipher_auth.digest.val);
+		vec.cipher_auth.digest.val = NULL;
 		return -1;
+	}
 
 	return 0;
 }
diff --git a/examples/fips_validation/main.c b/examples/fips_validation/main.c
index 6d52048b5c..8bd5a66889 100644
--- a/examples/fips_validation/main.c
+++ b/examples/fips_validation/main.c
@@ -2099,6 +2099,7 @@  fips_test_one_json_file(void)
 		json_info.json_vector_set = json_array_get(json_info.json_root, vector_set_idx);
 		fips_test_one_vector_set();
 		json_array_append_new(json_info.json_write_root, json_info.json_write_set);
+		json_incref(json_info.json_write_set);
 	}
 
 	json_dumpf(json_info.json_write_root, info.fp_wr, JSON_INDENT(4));