diff options
Diffstat (limited to 'src/lib/libcrypto/bn/bn_ctx.c')
-rw-r--r-- | src/lib/libcrypto/bn/bn_ctx.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/lib/libcrypto/bn/bn_ctx.c b/src/lib/libcrypto/bn/bn_ctx.c index b1a8d7571e..7daf19eb84 100644 --- a/src/lib/libcrypto/bn/bn_ctx.c +++ b/src/lib/libcrypto/bn/bn_ctx.c | |||
@@ -61,8 +61,9 @@ | |||
61 | 61 | ||
62 | #include <stdio.h> | 62 | #include <stdio.h> |
63 | #include <assert.h> | 63 | #include <assert.h> |
64 | |||
64 | #include "cryptlib.h" | 65 | #include "cryptlib.h" |
65 | #include <openssl/bn.h> | 66 | #include "bn_lcl.h" |
66 | 67 | ||
67 | 68 | ||
68 | BN_CTX *BN_CTX_new(void) | 69 | BN_CTX *BN_CTX_new(void) |
@@ -83,6 +84,7 @@ BN_CTX *BN_CTX_new(void) | |||
83 | 84 | ||
84 | void BN_CTX_init(BN_CTX *ctx) | 85 | void BN_CTX_init(BN_CTX *ctx) |
85 | { | 86 | { |
87 | #if 0 /* explicit version */ | ||
86 | int i; | 88 | int i; |
87 | ctx->tos = 0; | 89 | ctx->tos = 0; |
88 | ctx->flags = 0; | 90 | ctx->flags = 0; |
@@ -90,6 +92,9 @@ void BN_CTX_init(BN_CTX *ctx) | |||
90 | ctx->too_many = 0; | 92 | ctx->too_many = 0; |
91 | for (i = 0; i < BN_CTX_NUM; i++) | 93 | for (i = 0; i < BN_CTX_NUM; i++) |
92 | BN_init(&(ctx->bn[i])); | 94 | BN_init(&(ctx->bn[i])); |
95 | #else | ||
96 | memset(ctx, 0, sizeof *ctx); | ||
97 | #endif | ||
93 | } | 98 | } |
94 | 99 | ||
95 | void BN_CTX_free(BN_CTX *ctx) | 100 | void BN_CTX_free(BN_CTX *ctx) |
@@ -112,8 +117,14 @@ void BN_CTX_start(BN_CTX *ctx) | |||
112 | ctx->depth++; | 117 | ctx->depth++; |
113 | } | 118 | } |
114 | 119 | ||
120 | |||
115 | BIGNUM *BN_CTX_get(BN_CTX *ctx) | 121 | BIGNUM *BN_CTX_get(BN_CTX *ctx) |
116 | { | 122 | { |
123 | /* Note: If BN_CTX_get is ever changed to allocate BIGNUMs dynamically, | ||
124 | * make sure that if BN_CTX_get fails once it will return NULL again | ||
125 | * until BN_CTX_end is called. (This is so that callers have to check | ||
126 | * only the last return value.) | ||
127 | */ | ||
117 | if (ctx->depth > BN_CTX_NUM_POS || ctx->tos >= BN_CTX_NUM) | 128 | if (ctx->depth > BN_CTX_NUM_POS || ctx->tos >= BN_CTX_NUM) |
118 | { | 129 | { |
119 | if (!ctx->too_many) | 130 | if (!ctx->too_many) |