mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-30 10:47:28 +02:00
wolfSSL_BN_CTX_get: prepend to list skipping need to traverse the list
This commit is contained in:
21
src/ssl_bn.c
21
src/ssl_bn.c
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user