Simplify the chunk loop in psa_generate_random

Make the code slightly more readable and slightly smaller.

Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
diff --git a/library/psa_crypto.c b/library/psa_crypto.c
index 79b0633..4d32da7 100644
--- a/library/psa_crypto.c
+++ b/library/psa_crypto.c
@@ -6394,21 +6394,18 @@
 
 #else /* MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG */
 
-    int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
-
-    while( output_size > MBEDTLS_PSA_RANDOM_MAX_REQUEST )
+    int ret = 0;
+    while( output_size > 0 )
     {
-        ret = mbedtls_psa_get_random(
-            MBEDTLS_PSA_RANDOM_STATE,
-            output, MBEDTLS_PSA_RANDOM_MAX_REQUEST );
-        if( ret != 0 )
-            return( mbedtls_to_psa_error( ret ) );
-        output += MBEDTLS_PSA_RANDOM_MAX_REQUEST;
-        output_size -= MBEDTLS_PSA_RANDOM_MAX_REQUEST;
+        size_t request_size =
+            ( output_size > MBEDTLS_PSA_RANDOM_MAX_REQUEST ?
+              MBEDTLS_PSA_RANDOM_MAX_REQUEST :
+              output_size );
+        ret = mbedtls_psa_get_random( MBEDTLS_PSA_RANDOM_STATE,
+                                      output, request_size );
+        output_size -= request_size;
+        output += request_size;
     }
-
-    ret = mbedtls_psa_get_random( MBEDTLS_PSA_RANDOM_STATE,
-                                  output, output_size );
     return( mbedtls_to_psa_error( ret ) );
 #endif /* MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG */
 }