core: Fix memory leaks in sm2 of Mbedtls lib
When enable mbedtls in optee-os , xtest run twice will be fail.
Memory leakage exists in three functions.
1. grp and mpi in sm2_mbedtls_pke_encrypt
2. grp in sm2_mbedtls_dsa_sign
3. grp in sm2_mbedtls_dsa_verify
Fixes: c84eee6397bb ("core: add support for SM2 using MBed TLS")
Reviewed-by: Jerome Forissier <jerome@forissier.org>
Signed-off-by: lubing <lubing@eswin.com>
[jf: cherry-pick commit c04a96a45ffe from master]
Signed-off-by: Jerome Forissier <jerome@forissier.org>
diff --git a/lib/libmbedtls/core/sm2-dsa.c b/lib/libmbedtls/core/sm2-dsa.c
index 4db1de7..6e6e1d3 100644
--- a/lib/libmbedtls/core/sm2-dsa.c
+++ b/lib/libmbedtls/core/sm2-dsa.c
@@ -139,6 +139,7 @@
mbedtls_mpi_free(&r);
mbedtls_mpi_free(&s);
mbedtls_mpi_free(&tmp);
+ mbedtls_ecp_group_free(&grp);
return res;
}
@@ -262,5 +263,6 @@
mbedtls_mpi_free(&t);
mbedtls_mpi_free(&eprime);
mbedtls_mpi_free(&R);
+ mbedtls_ecp_group_free(&grp);
return res;
}
diff --git a/lib/libmbedtls/core/sm2-pke.c b/lib/libmbedtls/core/sm2-pke.c
index 45786e8..e1c3d23 100644
--- a/lib/libmbedtls/core/sm2-pke.c
+++ b/lib/libmbedtls/core/sm2-pke.c
@@ -446,5 +446,7 @@
mbedtls_ecp_point_free(&x2y2p);
mbedtls_ecp_point_free(&PB);
mbedtls_ecp_point_free(&C1);
+ mbedtls_ecp_group_free(&grp);
+ mbedtls_mpi_free(&k);
return res;
}