forked from wolfSSL/wolfssl
Return MEMORY_E from wc_scrypt if allocation fails
This commit is contained in:
@ -721,16 +721,22 @@ int wc_scrypt(byte* output, const byte* passwd, int passLen,
|
|||||||
bSz = 128 * blockSize;
|
bSz = 128 * blockSize;
|
||||||
blocksSz = bSz * parallel;
|
blocksSz = bSz * parallel;
|
||||||
blocks = (byte*)XMALLOC(blocksSz, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
blocks = (byte*)XMALLOC(blocksSz, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
||||||
if (blocks == NULL)
|
if (blocks == NULL) {
|
||||||
|
ret = MEMORY_E;
|
||||||
goto end;
|
goto end;
|
||||||
|
}
|
||||||
/* Temporary for scryptROMix. */
|
/* Temporary for scryptROMix. */
|
||||||
v = (byte*)XMALLOC((1 << cost) * bSz, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
v = (byte*)XMALLOC((1 << cost) * bSz, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
||||||
if (v == NULL)
|
if (v == NULL) {
|
||||||
|
ret = MEMORY_E;
|
||||||
goto end;
|
goto end;
|
||||||
|
}
|
||||||
/* Temporary for scryptBlockMix. */
|
/* Temporary for scryptBlockMix. */
|
||||||
y = (byte*)XMALLOC(blockSize * 128, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
y = (byte*)XMALLOC(blockSize * 128, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
||||||
if (y == NULL)
|
if (y == NULL) {
|
||||||
|
ret = MEMORY_E;
|
||||||
goto end;
|
goto end;
|
||||||
|
}
|
||||||
|
|
||||||
/* Step 1. */
|
/* Step 1. */
|
||||||
ret = wc_PBKDF2(blocks, passwd, passLen, salt, saltLen, 1, blocksSz,
|
ret = wc_PBKDF2(blocks, passwd, passLen, salt, saltLen, 1, blocksSz,
|
||||||
|
Reference in New Issue
Block a user