crypto: drbg - advance output buffer pointer
authorStephan Mueller <smueller@chronox.de>
Fri, 18 Nov 2016 11:27:56 +0000 (12:27 +0100)
committerHerbert Xu <herbert@gondor.apana.org.au>
Mon, 21 Nov 2016 14:50:24 +0000 (22:50 +0800)
The CTR DRBG segments the number of random bytes to be generated into
128 byte blocks. The current code misses the advancement of the output
buffer pointer when the requestor asks for more than 128 bytes of data.
In this case, the next 128 byte block of random numbers is copied to
the beginning of the output buffer again. This implies that only the
first 128 bytes of the output buffer would ever be filled.

The patch adds the advancement of the buffer pointer to fill the entire
buffer.

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

index fb33f7d3b052f5bb016342c1da2ef61b9f74ad8e..9a95b619e19a85e854dc6d6781f596388e89ffd0 100644 (file)
@@ -1766,6 +1766,7 @@ static int drbg_kcapi_sym_ctr(struct drbg_state *drbg,
                init_completion(&drbg->ctr_completion);
 
                outlen -= cryptlen;
+               outbuf += cryptlen;
        }
 
        return 0;