pk_set_type() cannot be used to reset key type
diff --git a/library/x509parse.c b/library/x509parse.c
index 12f06ca..c801967 100644
--- a/library/x509parse.c
+++ b/library/x509parse.c
@@ -3120,6 +3120,8 @@
         return( 0 );
     }
 
+    pk_free( ctx );
+
     if ( ( ret = pk_set_type( ctx, POLARSSL_PK_ECKEY ) ) != 0 )
         return( ret );
 
@@ -3128,6 +3130,8 @@
         return( 0 );
     }
 
+    pk_free( ctx );
+
     return( POLARSSL_ERR_X509_CERT_UNKNOWN_FORMAT );
 }
 
@@ -3145,12 +3149,16 @@
     if( ( ret = x509parse_public_key_rsa( ctx->data, key, keylen ) ) == 0 )
         return( 0 );
 
+    pk_free( ctx );
+
     if ( ( ret = pk_set_type( ctx, POLARSSL_PK_ECKEY ) ) != 0 )
         return( ret );
 
     if( ( ret = x509parse_public_key_ec( ctx->data, key, keylen ) ) == 0 )
         return( 0 );
 
+    pk_free( ctx );
+
     return( POLARSSL_ERR_X509_CERT_UNKNOWN_FORMAT );
 }