pkwrite: add a safety check before calculating the buffer size
diff --git a/library/pkwrite.c b/library/pkwrite.c
index dcd3263..3dfc590 100644
--- a/library/pkwrite.c
+++ b/library/pkwrite.c
@@ -167,8 +167,13 @@
#if defined(MBEDTLS_USE_PSA_CRYPTO)
if( mbedtls_pk_get_type( key ) == MBEDTLS_PK_OPAQUE )
{
- size_t buffer_size = *p - start;
+ size_t buffer_size;
psa_key_slot_t* key_slot = (psa_key_slot_t*) key->pk_ctx;
+
+ if ( *p < start )
+ return( MBEDTLS_ERR_PK_BAD_INPUT_DATA );
+
+ buffer_size = *p - start;
if ( psa_export_public_key( *key_slot, start, buffer_size, &len )
!= PSA_SUCCESS )
{