Merge pull request #2578 from cariepointer/ZD-9478-and-9479

Add sanity checks for parameters in wc_scrypt and wc_Arc4SetKey
pull/2715/head
toddouska 2019-12-19 10:59:05 -08:00 committed by GitHub
commit 3342a19e29
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 9 additions and 10 deletions

View File

@ -11428,15 +11428,14 @@ static int test_wc_Arc4SetKey (void)
/* Test bad args. */
if (ret == 0) {
ret = wc_Arc4SetKey(NULL, (byte*)key, keyLen);
if (ret == BAD_FUNC_ARG) {
ret = wc_Arc4SetKey(&arc, NULL, keyLen);
}
if (ret == BAD_FUNC_ARG) {
/* Exits normally if keyLen is incorrect. */
ret = wc_Arc4SetKey(&arc, (byte*)key, 0);
} else {
if (ret == BAD_FUNC_ARG)
ret = wc_Arc4SetKey(&arc, NULL, keyLen); /* NULL key */
if (ret == BAD_FUNC_ARG)
ret = wc_Arc4SetKey(&arc, (byte*)key, 0); /* length == 0 */
if (ret == BAD_FUNC_ARG)
ret = WOLFSSL_ERROR_NONE;
else
ret = WOLFSSL_FATAL_ERROR;
}
} /* END test bad args. */
printf(resultFmt, ret == 0 ? passed : failed);

View File

@ -38,7 +38,7 @@ int wc_Arc4SetKey(Arc4* arc4, const byte* key, word32 length)
word32 i;
word32 keyIndex = 0, stateIndex = 0;
if (arc4 == NULL || key == NULL) {
if (arc4 == NULL || key == NULL || length == 0) {
return BAD_FUNC_ARG;
}

View File

@ -715,7 +715,7 @@ int wc_scrypt(byte* output, const byte* passwd, int passLen,
if (blockSize > 8)
return BAD_FUNC_ARG;
if (cost < 1 || cost >= 128 * blockSize / 8)
if (cost < 1 || cost >= 128 * blockSize / 8 || parallel < 1 || dkLen < 1)
return BAD_FUNC_ARG;
bSz = 128 * blockSize;