Cleaner test-memory cleanups
diff --git a/tests/suites/test_suite_debug.function b/tests/suites/test_suite_debug.function
index 02381ca..05cc630 100644
--- a/tests/suites/test_suite_debug.function
+++ b/tests/suites/test_suite_debug.function
@@ -39,6 +39,8 @@
     debug_print_crt( &ssl, 0, {file}, {line}, {prefix}, &crt);
 
     TEST_ASSERT( strcmp( buffer.buf, {result_str} ) == 0 );
+
+    x509_free( &crt );
 }
 END_CASE
 
diff --git a/tests/suites/test_suite_pkcs1_v21.function b/tests/suites/test_suite_pkcs1_v21.function
index b7d3813..0c5db1a 100644
--- a/tests/suites/test_suite_pkcs1_v21.function
+++ b/tests/suites/test_suite_pkcs1_v21.function
@@ -47,6 +47,8 @@
 
         TEST_ASSERT( strcasecmp( (char *) output_str, {result_hex_str} ) == 0 );
     }
+
+    rsa_free( &ctx );
 }
 END_CASE
 
@@ -95,6 +97,7 @@
     }
 
     mpi_free( &P1 ); mpi_free( &Q1 ); mpi_free( &H ); mpi_free( &G );
+    rsa_free( &ctx );
 }
 END_CASE
 
@@ -190,6 +193,7 @@
     }
 
     mpi_free( &P1 ); mpi_free( &Q1 ); mpi_free( &H ); mpi_free( &G );
+    rsa_free( &ctx );
 }
 END_CASE
 
@@ -257,5 +261,7 @@
     }
 
     TEST_ASSERT( rsa_pkcs1_verify( &ctx, RSA_PUBLIC, {digest}, 0, hash_result, result_str ) == {result} );
+
+    rsa_free( &ctx );
 }
 END_CASE
diff --git a/tests/suites/test_suite_rsa.function b/tests/suites/test_suite_rsa.function
index 312f451..6c9c434 100644
--- a/tests/suites/test_suite_rsa.function
+++ b/tests/suites/test_suite_rsa.function
@@ -101,6 +101,7 @@
     }
 
     mpi_free( &P1 ); mpi_free( &Q1 ); mpi_free( &H ); mpi_free( &G );
+    rsa_free( &ctx );
 }
 END_CASE
 
@@ -168,6 +169,8 @@
     }
 
     TEST_ASSERT( rsa_pkcs1_verify( &ctx, RSA_PUBLIC, {digest}, 0, hash_result, result_str ) == {result} );
+
+    rsa_free( &ctx );
 }
 END_CASE
 
@@ -218,6 +221,7 @@
     TEST_ASSERT( strcasecmp( (char *) output_str, {result_hex_str} ) == 0 );
 
     mpi_free( &P1 ); mpi_free( &Q1 ); mpi_free( &H ); mpi_free( &G );
+    rsa_free( &ctx );
 }
 END_CASE
 
@@ -246,6 +250,8 @@
     unhexify( result_str, {result_hex_str} );
 
     TEST_ASSERT( rsa_pkcs1_verify( &ctx, RSA_PUBLIC, SIG_RSA_RAW, hash_len, hash_result, result_str ) == {correct} );
+
+    rsa_free( &ctx );
 }
 END_CASE
 
@@ -281,6 +287,8 @@
 
         TEST_ASSERT( strcasecmp( (char *) output_str, {result_hex_str} ) == 0 );
     }
+
+    rsa_free( &ctx );
 }
 END_CASE
 
@@ -313,6 +321,8 @@
 
         TEST_ASSERT( strcasecmp( (char *) output_str, {result_hex_str} ) == 0 );
     }
+
+    rsa_free( &ctx );
 }
 END_CASE
 
@@ -362,6 +372,7 @@
     }
 
     mpi_free( &P1 ); mpi_free( &Q1 ); mpi_free( &H ); mpi_free( &G );
+    rsa_free( &ctx );
 }
 END_CASE
 
@@ -393,6 +404,8 @@
 
         TEST_ASSERT( strcasecmp( (char *) output_str, {result_hex_str} ) == 0 );
     }
+
+    rsa_free( &ctx );
 }
 END_CASE
 
@@ -440,6 +453,7 @@
     }
 
     mpi_free( &P1 ); mpi_free( &Q1 ); mpi_free( &H ); mpi_free( &G );
+    rsa_free( &ctx );
 }
 END_CASE
 
@@ -470,6 +484,8 @@
     }
 
     TEST_ASSERT( rsa_check_pubkey( &ctx ) == {result} );
+
+    rsa_free( &ctx );
 }
 END_CASE
 
@@ -515,6 +531,8 @@
     }
 
     TEST_ASSERT( rsa_check_privkey( &ctx ) == {result} );
+
+    rsa_free( &ctx );
 }
 END_CASE
 
@@ -537,6 +555,8 @@
     {
         TEST_ASSERT( rsa_check_privkey( &ctx ) == 0 );
     }
+
+    rsa_free( &ctx );
 }
 END_CASE
 
diff --git a/tests/suites/test_suite_x509write.function b/tests/suites/test_suite_x509write.function
index 984a346..2cf98f1 100644
--- a/tests/suites/test_suite_x509write.function
+++ b/tests/suites/test_suite_x509write.function
@@ -60,5 +60,14 @@
 
     TEST_ASSERT( memcmp( c, pem.buf, pem.buflen ) == 0 );
     TEST_ASSERT( pem.buflen == (size_t) ret );
+
+    while( ( cur = req_name.next ) != NULL )
+    {
+        req_name.next = cur->next;
+        free( cur );
+    }
+
+    rsa_free( &rsa );
+    pem_free( &pem );
 }
 END_CASE