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 <gmuthukri...@marvell.com>
---
 examples/fips_validation/fips_validation_sha.c | 10 ++++++++--
 examples/fips_validation/main.c                |  1 +
 2 files changed, 9 insertions(+), 2 deletions(-)

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));
-- 
2.25.1

Reply via email to