Memory-allocation abstraction layer and buffer-based allocator added
diff --git a/library/ssl_cache.c b/library/ssl_cache.c
index 93d5d8b..bc4326a 100644
--- a/library/ssl_cache.c
+++ b/library/ssl_cache.c
@@ -33,6 +33,13 @@
 
 #include "polarssl/ssl_cache.h"
 
+#if defined(POLARSSL_MEMORY_C)
+#include "polarssl/memory.h"
+#else
+#define polarssl_malloc     malloc
+#define polarssl_free       free
+#endif
+
 #include <stdlib.h>
 
 void ssl_cache_init( ssl_cache_context *cache )
@@ -78,7 +85,7 @@
          */
         if( entry->peer_cert.p != NULL )
         {
-            session->peer_cert = (x509_cert *) malloc( sizeof(x509_cert) );
+            session->peer_cert = (x509_cert *) polarssl_malloc( sizeof(x509_cert) );
             if( session->peer_cert == NULL )
                 return( 1 );
 
@@ -86,7 +93,7 @@
             if( x509parse_crt( session->peer_cert, entry->peer_cert.p,
                                entry->peer_cert.len ) != 0 )
             {
-                free( session->peer_cert );
+                polarssl_free( session->peer_cert );
                 session->peer_cert = NULL;
                 return( 1 );
             }
@@ -145,14 +152,14 @@
 #if defined(POLARSSL_X509_PARSE_C)
             if( cur->peer_cert.p != NULL )
             {
-                free( cur->peer_cert.p );
+                polarssl_free( cur->peer_cert.p );
                 memset( &cur->peer_cert, 0, sizeof(x509_buf) );
             }
 #endif /* POLARSSL_X509_PARSE_C */
         }
         else
         {
-            cur = (ssl_cache_entry *) malloc( sizeof(ssl_cache_entry) );
+            cur = (ssl_cache_entry *) polarssl_malloc( sizeof(ssl_cache_entry) );
             if( cur == NULL )
                 return( 1 );
 
@@ -175,7 +182,7 @@
      */
     if( session->peer_cert != NULL )
     {
-        cur->peer_cert.p = (unsigned char *) malloc( session->peer_cert->raw.len );
+        cur->peer_cert.p = (unsigned char *) polarssl_malloc( session->peer_cert->raw.len );
         if( cur->peer_cert.p == NULL )
             return( 1 );
 
@@ -219,10 +226,10 @@
 
 #if defined(POLARSSL_X509_PARSE_C)
         if( prv->peer_cert.p != NULL )
-            free( prv->peer_cert.p );
+            polarssl_free( prv->peer_cert.p );
 #endif /* POLARSSL_X509_PARSE_C */
 
-        free( prv );
+        polarssl_free( prv );
     }
 }