wolfSSL_BN_CTX_get: prepend to list skipping need to traverse the list

This commit is contained in:
Juliusz Sosinowicz
2025-01-29 10:50:23 +01:00
parent 841d13e81c
commit 91bffeead3

View File

@ -2429,17 +2429,18 @@ WOLFSSL_BIGNUM *wolfSSL_BN_CTX_get(WOLFSSL_BN_CTX *ctx)
WOLFSSL_ENTER("wolfSSL_BN_CTX_get"); WOLFSSL_ENTER("wolfSSL_BN_CTX_get");
if (ctx != NULL) { if (ctx != NULL) {
struct WOLFSSL_BN_CTX_LIST** prev = &ctx->list; struct WOLFSSL_BN_CTX_LIST* node = (struct WOLFSSL_BN_CTX_LIST*)XMALLOC(
while (*prev != NULL)
prev = &(*prev)->next;
*prev = (struct WOLFSSL_BN_CTX_LIST*)XMALLOC(
sizeof(struct WOLFSSL_BN_CTX_LIST), NULL, DYNAMIC_TYPE_OPENSSL); sizeof(struct WOLFSSL_BN_CTX_LIST), NULL, DYNAMIC_TYPE_OPENSSL);
if (*prev != NULL) { if (node != NULL) {
XMEMSET(*prev, 0, sizeof(struct WOLFSSL_BN_CTX_LIST)); XMEMSET(node, 0, sizeof(struct WOLFSSL_BN_CTX_LIST));
bn = (*prev)->bn = wolfSSL_BN_new(); bn = node->bn = wolfSSL_BN_new();
if ((*prev)->bn == NULL) { if (node->bn != NULL) {
XFREE(*prev, NULL, DYNAMIC_TYPE_OPENSSL); node->next = ctx->list;
*prev = NULL; ctx->list = node;
}
else {
XFREE(node, NULL, DYNAMIC_TYPE_OPENSSL);
node = NULL;
} }
} }
} }