fortuna_import() shouldn't ignore additional input

(cherry picked from commit 0c05e5386f836a8cbf4bfbc12bc9113f974b6d61)
This commit is contained in:
Steffen Jaeckel 2017-12-07 11:09:43 +01:00
parent 67d8ca19f5
commit b9fa4c063a

View File

@ -413,6 +413,7 @@ LBL_UNLOCK:
int fortuna_import(const unsigned char *in, unsigned long inlen, prng_state *prng) int fortuna_import(const unsigned char *in, unsigned long inlen, prng_state *prng)
{ {
int err, x; int err, x;
unsigned long len;
LTC_ARGCHK(in != NULL); LTC_ARGCHK(in != NULL);
LTC_ARGCHK(prng != NULL); LTC_ARGCHK(prng != NULL);
@ -424,10 +425,14 @@ int fortuna_import(const unsigned char *in, unsigned long inlen, prng_state *prn
if ((err = fortuna_start(prng)) != CRYPT_OK) { if ((err = fortuna_start(prng)) != CRYPT_OK) {
return err; return err;
} }
for (x = 0; x < LTC_FORTUNA_POOLS; x++) { x = 0;
if ((err = fortuna_add_entropy(in+x*32, 32, prng)) != CRYPT_OK) { while (inlen > 0) {
len = MIN(inlen, 32);
if ((err = fortuna_add_entropy(in+x*32, len, prng)) != CRYPT_OK) {
return err; return err;
} }
x++;
inlen -= len;
} }
return CRYPT_OK; return CRYPT_OK;
} }