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