diff --git a/library/hmac_drbg.c b/library/hmac_drbg.c
index 7e361f4..4195bf1 100644
--- a/library/hmac_drbg.c
+++ b/library/hmac_drbg.c
@@ -85,7 +85,7 @@
 }
 
 /*
- * HMAC_DRBG reseeding (10.1.2.4)
+ * HMAC_DRBG reseeding: 10.1.2.4 (arabic) + 9.2 (Roman)
  */
 int hmac_drbg_reseed( hmac_drbg_context *ctx,
                       const unsigned char *additional, size_t len )
@@ -93,18 +93,22 @@
     unsigned char seed[HMAC_DRBG_MAX_SEED_INPUT];
     size_t seedlen;
 
-    if( ctx->entropy_len + len > HMAC_DRBG_MAX_SEED_INPUT )
+    /* III. Check input length */
+    if( len > HMAC_DRBG_MAX_INPUT ||
+        ctx->entropy_len + len > HMAC_DRBG_MAX_SEED_INPUT )
+    {
         return( POLARSSL_ERR_HMAC_DRBG_INPUT_TOO_BIG );
+    }
 
     memset( seed, 0, HMAC_DRBG_MAX_SEED_INPUT );
 
-    /* 1a. Gather entropy_len bytes of entropy for the seed */
+    /* IV. Gather entropy_len bytes of entropy for the seed */
     if( ctx->f_entropy( ctx->p_entropy, seed, ctx->entropy_len ) != 0 )
         return( POLARSSL_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED );
 
     seedlen = ctx->entropy_len;
 
-    /* 1b. Append additional data if any */
+    /* 1. Concatenate entropy and additional data if any */
     if( additional != NULL && len != 0 )
     {
         memcpy( seed + seedlen, additional, len );
@@ -122,7 +126,7 @@
 }
 
 /*
- * HMAC_DRBG initialisation
+ * HMAC_DRBG initialisation (10.1.2.3 + 9.1)
  */
 int hmac_drbg_init( hmac_drbg_context *ctx,
                     const md_info_t * md_info,
@@ -199,7 +203,8 @@
 }
 
 /*
- * HMAC_DRBG random function with optional additional data (10.1.2.5)
+ * HMAC_DRBG random function with optional additional data:
+ * 10.1.2.5 (arabic) + 9.3 (Roman)
  */
 int hmac_drbg_random_with_add( void *p_rng,
                                unsigned char *output, size_t out_len,
@@ -211,13 +216,23 @@
     size_t left = out_len;
     unsigned char *out = output;
 
-    /* 1. Check reseed counter and PR */
+    /* II. Check request length */
+    if( out_len > HMAC_DRBG_MAX_REQUEST )
+        return( POLARSSL_ERR_HMAC_DRBG_REQUEST_TOO_BIG );
+
+    /* III. Check input length */
+    if( add_len > HMAC_DRBG_MAX_INPUT )
+        return( POLARSSL_ERR_HMAC_DRBG_INPUT_TOO_BIG );
+
+    /* 1. (aka VII and IX) Check reseed counter and PR */
     if( ctx->f_entropy != NULL &&
         ( ctx->prediction_resistance == HMAC_DRBG_PR_ON ||
           ctx->reseed_counter > ctx->reseed_interval ) )
     {
         if( ( ret = hmac_drbg_reseed( ctx, additional, add_len ) ) != 0 )
             return( ret );
+
+        add_len = 0; /* VII.4 */
     }
 
     /* 2. Use additional data if any */
