crypto: drbg - fix failure of generating multiple of 2**16 bytes
authorStephan Mueller <smueller@chronox.de>
Thu, 31 Jul 2014 19:47:33 +0000 (21:47 +0200)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 1 Aug 2014 14:36:14 +0000 (22:36 +0800)
The function drbg_generate_long slices the request into 2**16 byte
or smaller chunks. However, the loop, however invokes the random number
generation function with zero bytes when the request size is a multiple
of 2**16 bytes. The fix prevents zero bytes requests.

Signed-off-by: Stephan Mueller <smueller@chronox.de>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
crypto/drbg.c

index ff975d9e0c2a575c1151117e170e096a7f55aa56..7894db9ca90b1e13c742841e41b309b39584e622 100644 (file)
@@ -1500,7 +1500,7 @@ static int drbg_generate_long(struct drbg_state *drbg,
                if (0 >= tmplen)
                        return tmplen;
                len += tmplen;
-       } while (slice > 0);
+       } while (slice > 0 && (len < buflen));
        return len;
 }