Merge pull request #5582 from SparkiDev/small_stack_cache_fix

Small Stack Cache: make work again
This commit is contained in:
JacobBarthelmeh
2022-09-12 09:53:10 -06:00
committed by GitHub
2 changed files with 15 additions and 14 deletions

View File

@ -7319,7 +7319,6 @@ int ecc_mul2add(ecc_point* A, mp_int* kA,
}
#endif
#ifdef WOLFSSL_SMALL_STACK
#ifdef WOLFSSL_SMALL_STACK_CACHE
key = (ecc_key *)XMALLOC(sizeof(*key), heap, DYNAMIC_TYPE_ECC_BUFFER);
if (key == NULL) {
@ -7328,6 +7327,7 @@ int ecc_mul2add(ecc_point* A, mp_int* kA,
return GEN_MEM_ERR;
}
#endif
#ifdef WOLFSSL_SMALL_STACK
precomp = (ecc_point**)XMALLOC(sizeof(ecc_point*) * SHAMIR_PRECOMP_SZ, heap,
DYNAMIC_TYPE_ECC_BUFFER);
if (precomp == NULL) {
@ -7343,20 +7343,20 @@ int ecc_mul2add(ecc_point* A, mp_int* kA,
key->t1 = (mp_int*)XMALLOC(sizeof(mp_int), heap, DYNAMIC_TYPE_ECC);
key->t2 = (mp_int*)XMALLOC(sizeof(mp_int), heap, DYNAMIC_TYPE_ECC);
#ifdef ALT_ECC_SIZE
key.x = (mp_int*)XMALLOC(sizeof(mp_int), heap, DYNAMIC_TYPE_ECC);
key.y = (mp_int*)XMALLOC(sizeof(mp_int), heap, DYNAMIC_TYPE_ECC);
key.z = (mp_int*)XMALLOC(sizeof(mp_int), heap, DYNAMIC_TYPE_ECC);
key->x = (mp_int*)XMALLOC(sizeof(mp_int), heap, DYNAMIC_TYPE_ECC);
key->y = (mp_int*)XMALLOC(sizeof(mp_int), heap, DYNAMIC_TYPE_ECC);
key->z = (mp_int*)XMALLOC(sizeof(mp_int), heap, DYNAMIC_TYPE_ECC);
#endif
if (key->t1 == NULL || key->t2 == NULL
#ifdef ALT_ECC_SIZE
|| key.x == NULL || key.y == NULL || key.z == NULL
|| key->x == NULL || key->y == NULL || key->z == NULL
#endif
) {
#ifdef ALT_ECC_SIZE
XFREE(key.z, heap, DYNAMIC_TYPE_ECC);
XFREE(key.y, heap, DYNAMIC_TYPE_ECC);
XFREE(key.x, heap, DYNAMIC_TYPE_ECC);
XFREE(key->z, heap, DYNAMIC_TYPE_ECC);
XFREE(key->y, heap, DYNAMIC_TYPE_ECC);
XFREE(key->x, heap, DYNAMIC_TYPE_ECC);
#endif
XFREE(key->t2, heap, DYNAMIC_TYPE_ECC);
XFREE(key->t1, heap, DYNAMIC_TYPE_ECC);
@ -7575,9 +7575,9 @@ int ecc_mul2add(ecc_point* A, mp_int* kA,
ForceZero(tB, ECC_BUFSIZE);
#ifdef WOLFSSL_SMALL_STACK_CACHE
#ifdef ALT_ECC_SIZE
XFREE(key.z, heap, DYNAMIC_TYPE_ECC);
XFREE(key.y, heap, DYNAMIC_TYPE_ECC);
XFREE(key.x, heap, DYNAMIC_TYPE_ECC);
XFREE(key->z, heap, DYNAMIC_TYPE_ECC);
XFREE(key->y, heap, DYNAMIC_TYPE_ECC);
XFREE(key->x, heap, DYNAMIC_TYPE_ECC);
#endif
XFREE(key->t2, heap, DYNAMIC_TYPE_ECC);
XFREE(key->t1, heap, DYNAMIC_TYPE_ECC);

View File

@ -340,7 +340,8 @@ typedef struct ecc_set_type {
* The ALT_ECC_SIZE option only applies to stack based fast math USE_FAST_MATH.
*/
#ifndef USE_FAST_MATH
#if !defined(USE_FAST_MATH) && !defined(WOLFSSL_SP_MATH_ALL) && \
!defined(WOLFSSL_SP_MATH)
#error USE_FAST_MATH must be defined to use ALT_ECC_SIZE
#endif
#ifdef WOLFSSL_NO_MALLOC