]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
Fixed memory leaks.
authord-Dudas <david.dudas03@e-uvt.ro>
Mon, 13 Apr 2026 12:39:29 +0000 (15:39 +0300)
committerd-Dudas <david.dudas03@e-uvt.ro>
Sat, 18 Apr 2026 06:26:59 +0000 (09:26 +0300)
Signed-off-by: David Dudas <david.dudas03@e-uvt.ro>
tests/key-import-export.c
tests/utils.h

index 9710cb10f82c8a83c595114432b0dfeb7dc7b7b5..eee184ca6cfbdbd78cb7cde1972a65b25b80b489 100644 (file)
@@ -224,8 +224,6 @@ static int check_x509_privkey(void)
        gnutls_ecc_curve_t curve;
        int ret;
 
-       global_init();
-
        ret = gnutls_x509_privkey_init(&key);
        if (ret < 0)
                fail("error\n");
@@ -335,8 +333,6 @@ static int check_privkey_import_export(void)
        unsigned i;
        int ret;
 
-       global_init();
-
 #ifdef ENABLE_DSA
        ret = gnutls_privkey_init(&key);
        if (ret < 0)
@@ -684,8 +680,6 @@ static int check_dsa(void)
        gnutls_datum_t p, q, g, y, x;
        int ret;
 
-       global_init();
-
        success("Checking DSA key operations\n");
 
        ret = gnutls_privkey_init(&key);
@@ -1269,6 +1263,8 @@ static int check_pubkey_derivation_if_not_provided(void)
 
                        CMP_DATUM(gnutls_ecc_curve_get_name(curve), &x,
                                  test_vectors[i].expected_raw_pk);
+
+                       gnutls_free(x.data);
                        break;
                }
                case GNUTLS_ECC_CURVE_SECP256R1:
@@ -1295,6 +1291,9 @@ static int check_pubkey_derivation_if_not_provided(void)
                                                  1 + x.size + y.size };
                        CMP_DATUM(gnutls_ecc_curve_get_name(curve), &pk_raw,
                                  test_vectors[i].expected_raw_pk);
+
+                       gnutls_free(x.data);
+                       gnutls_free(y.data);
                        break;
                }
                default:
@@ -1310,6 +1309,7 @@ static int check_pubkey_derivation_if_not_provided(void)
 
 void doit(void)
 {
+       global_init();
        if (check_x509_privkey() != 0) {
                fail("error in privkey check\n");
                exit(1);
@@ -1347,4 +1347,6 @@ void doit(void)
        if (check_pubkey_derivation_if_not_provided() != 0) {
                fail("error in pubkey derivation\n");
        }
+
+       global_deinit();
 }
index 92c473fa7fac88ce85ec46dffd587646efd3387f..27f9e019f56fb0e6ce15861f7dba609366beae4b 100644 (file)
@@ -63,6 +63,14 @@ inline static int global_init(void)
        return gnutls_global_init();
 }
 
+inline static void global_deinit(void)
+{
+#ifdef ENABLE_PKCS11
+       gnutls_pkcs11_deinit();
+#endif
+       gnutls_global_deinit();
+}
+
 extern int debug;
 extern int error_count;
 extern int break_on_error;