ssl_async_set_key: detect if ctx->slots overflows
diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c
index bf50f1d..838f41d 100644
--- a/programs/ssl/ssl_server2.c
+++ b/programs/ssl/ssl_server2.c
@@ -904,15 +904,18 @@
     void *p_rng;
 } ssl_async_key_context_t;
 
-void ssl_async_set_key( ssl_async_key_context_t *ctx,
+int ssl_async_set_key( ssl_async_key_context_t *ctx,
                         mbedtls_x509_crt *cert,
                         mbedtls_pk_context *pk,
                         unsigned delay )
 {
+    if( ctx->slots_used >= sizeof( ctx->slots ) / sizeof( *ctx->slots ) )
+        return( -1 );
     ctx->slots[ctx->slots_used].cert = cert;
     ctx->slots[ctx->slots_used].pk = pk;
     ctx->slots[ctx->slots_used].delay = delay;
     ++ctx->slots_used;
+    return( 0 );
 }
 
 #define SSL_ASYNC_INPUT_MAX_SIZE 512
@@ -2297,8 +2300,14 @@
 #if defined(MBEDTLS_SSL_ASYNC_PRIVATE)
         if( opt.async_private_delay1 >= 0 )
         {
-            ssl_async_set_key( &ssl_async_keys, &srvcert, pk,
-                               opt.async_private_delay1 );
+            ret = ssl_async_set_key( &ssl_async_keys, &srvcert, pk,
+                                     opt.async_private_delay1 );
+            if( ret < 0 )
+            {
+                mbedtls_printf( "  Test error: ssl_async_set_key failed (%d)\n",
+                                ret );
+                goto exit;
+            }
             pk = NULL;
         }
 #endif /* MBEDTLS_SSL_ASYNC_PRIVATE */
@@ -2314,8 +2323,14 @@
 #if defined(MBEDTLS_SSL_ASYNC_PRIVATE)
         if( opt.async_private_delay2 >= 0 )
         {
-            ssl_async_set_key( &ssl_async_keys, &srvcert2, pk,
-                               opt.async_private_delay2 );
+            ret = ssl_async_set_key( &ssl_async_keys, &srvcert2, pk,
+                                     opt.async_private_delay2 );
+            if( ret < 0 )
+            {
+                mbedtls_printf( "  Test error: ssl_async_set_key failed (%d)\n",
+                                ret );
+                goto exit;
+            }
             pk = NULL;
         }
 #endif /* MBEDTLS_SSL_ASYNC_PRIVATE */