summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjsing <>2015-02-14 06:40:04 +0000
committerjsing <>2015-02-14 06:40:04 +0000
commitd18f9324ae82e670faf7e01361779f8b667bce93 (patch)
tree2d9af56b6e77fbd7e0b88f6dfb12cb622bc4a627
parent1f8b585ef49501b9fcbd6f739862f7934d19a184 (diff)
downloadopenbsd-d18f9324ae82e670faf7e01361779f8b667bce93.tar.gz
openbsd-d18f9324ae82e670faf7e01361779f8b667bce93.tar.bz2
openbsd-d18f9324ae82e670faf7e01361779f8b667bce93.zip
Consistently check the return value from BN_CTX_get() on assignment.
This is the same as the previous larger commit, however it would seem the GOST part got missed. ok beck@ doug@
-rw-r--r--src/lib/libcrypto/gost/gostr341001.c59
-rw-r--r--src/lib/libcrypto/gost/gostr341001_ameth.c8
-rw-r--r--src/lib/libcrypto/gost/gostr341001_key.c8
-rw-r--r--src/lib/libcrypto/gost/gostr341001_pmeth.c11
-rw-r--r--src/lib/libssl/src/crypto/gost/gostr341001.c59
-rw-r--r--src/lib/libssl/src/crypto/gost/gostr341001_ameth.c8
-rw-r--r--src/lib/libssl/src/crypto/gost/gostr341001_key.c8
-rw-r--r--src/lib/libssl/src/crypto/gost/gostr341001_pmeth.c11
8 files changed, 88 insertions, 84 deletions
diff --git a/src/lib/libcrypto/gost/gostr341001.c b/src/lib/libcrypto/gost/gostr341001.c
index bc553e1083..c6221e4a01 100644
--- a/src/lib/libcrypto/gost/gostr341001.c
+++ b/src/lib/libcrypto/gost/gostr341001.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: gostr341001.c,v 1.3 2015/02/11 03:19:37 doug Exp $ */ 1/* $OpenBSD: gostr341001.c,v 1.4 2015/02/14 06:40:04 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> 3 * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
4 * Copyright (c) 2005-2006 Cryptocom LTD 4 * Copyright (c) 2005-2006 Cryptocom LTD
@@ -168,23 +168,22 @@ gost2001_do_sign(BIGNUM *md, GOST_KEY *eckey)
168 s = newsig->s; 168 s = newsig->s;
169 r = newsig->r; 169 r = newsig->r;
170 group = GOST_KEY_get0_group(eckey); 170 group = GOST_KEY_get0_group(eckey);
171 order = BN_CTX_get(ctx); 171 if ((order = BN_CTX_get(ctx)) == NULL)
172 if (order == NULL)
173 goto err; 172 goto err;
174 if (EC_GROUP_get_order(group, order, ctx) == 0) 173 if (EC_GROUP_get_order(group, order, ctx) == 0)
175 goto err; 174 goto err;
176 priv_key = GOST_KEY_get0_private_key(eckey); 175 priv_key = GOST_KEY_get0_private_key(eckey);
177 e = BN_CTX_get(ctx); 176 if ((e = BN_CTX_get(ctx)) == NULL)
178 if (e == NULL)
179 goto err; 177 goto err;
180 if (BN_mod(e, md, order, ctx) == 0) 178 if (BN_mod(e, md, order, ctx) == 0)
181 goto err; 179 goto err;
182 if (BN_is_zero(e)) 180 if (BN_is_zero(e))
183 BN_one(e); 181 BN_one(e);
184 k = BN_CTX_get(ctx); 182 if ((k = BN_CTX_get(ctx)) == NULL)
185 X = BN_CTX_get(ctx); 183 goto err;
186 C = EC_POINT_new(group); 184 if ((X = BN_CTX_get(ctx)) == NULL)
187 if (C == NULL) 185 goto err;
186 if ((C = EC_POINT_new(group)) == NULL)
188 goto err; 187 goto err;
189 do { 188 do {
190 do { 189 do {
@@ -218,15 +217,13 @@ gost2001_do_sign(BIGNUM *md, GOST_KEY *eckey)
218 } while (BN_is_zero(r)); 217 } while (BN_is_zero(r));
219 /* s = (r*priv_key+k*e) mod order */ 218 /* s = (r*priv_key+k*e) mod order */
220 if (tmp == NULL) { 219 if (tmp == NULL) {
221 tmp = BN_CTX_get(ctx); 220 if ((tmp = BN_CTX_get(ctx)) == NULL)
222 if (tmp == NULL)
223 goto err; 221 goto err;
224 } 222 }
225 if (BN_mod_mul(tmp, priv_key, r, order, ctx) == 0) 223 if (BN_mod_mul(tmp, priv_key, r, order, ctx) == 0)
226 goto err; 224 goto err;
227 if (tmp2 == NULL) { 225 if (tmp2 == NULL) {
228 tmp2 = BN_CTX_get(ctx); 226 if ((tmp2 = BN_CTX_get(ctx)) == NULL)
229 if (tmp2 == NULL)
230 goto err; 227 goto err;
231 } 228 }
232 if (BN_mod_mul(tmp2, k, e, order, ctx) == 0) 229 if (BN_mod_mul(tmp2, k, e, order, ctx) == 0)
@@ -264,15 +261,21 @@ gost2001_do_verify(BIGNUM *md, ECDSA_SIG *sig, GOST_KEY *ec)
264 if (ctx == NULL) 261 if (ctx == NULL)
265 goto err; 262 goto err;
266 BN_CTX_start(ctx); 263 BN_CTX_start(ctx);
267 order = BN_CTX_get(ctx); 264 if ((order = BN_CTX_get(ctx)) == NULL)
268 e = BN_CTX_get(ctx); 265 goto err;
269 z1 = BN_CTX_get(ctx); 266 if ((e = BN_CTX_get(ctx)) == NULL)
270 z2 = BN_CTX_get(ctx); 267 goto err;
271 tmp = BN_CTX_get(ctx); 268 if ((z1 = BN_CTX_get(ctx)) == NULL)
272 X = BN_CTX_get(ctx); 269 goto err;
273 R = BN_CTX_get(ctx); 270 if ((z2 = BN_CTX_get(ctx)) == NULL)
274 v = BN_CTX_get(ctx); 271 goto err;
275 if (v == NULL) 272 if ((tmp = BN_CTX_get(ctx)) == NULL)
273 goto err;
274 if ((X = BN_CTX_get(ctx)) == NULL)
275 goto err;
276 if ((R = BN_CTX_get(ctx)) == NULL)
277 goto err;
278 if ((v = BN_CTX_get(ctx)) == NULL)
276 goto err; 279 goto err;
277 280
278 if (EC_GROUP_get_order(group, order, ctx) == 0) 281 if (EC_GROUP_get_order(group, order, ctx) == 0)
@@ -289,8 +292,7 @@ gost2001_do_verify(BIGNUM *md, ECDSA_SIG *sig, GOST_KEY *ec)
289 goto err; 292 goto err;
290 if (BN_is_zero(e)) 293 if (BN_is_zero(e))
291 BN_one(e); 294 BN_one(e);
292 v = BN_mod_inverse(v, e, order, ctx); 295 if ((v = BN_mod_inverse(v, e, order, ctx)) == NULL)
293 if (v == NULL)
294 goto err; 296 goto err;
295 if (BN_mod_mul(z1, sig->s, v, order, ctx) == 0) 297 if (BN_mod_mul(z1, sig->s, v, order, ctx) == 0)
296 goto err; 298 goto err;
@@ -298,8 +300,7 @@ gost2001_do_verify(BIGNUM *md, ECDSA_SIG *sig, GOST_KEY *ec)
298 goto err; 300 goto err;
299 if (BN_mod_mul(z2, tmp, v, order, ctx) == 0) 301 if (BN_mod_mul(z2, tmp, v, order, ctx) == 0)
300 goto err; 302 goto err;
301 C = EC_POINT_new(group); 303 if ((C = EC_POINT_new(group)) == NULL)
302 if (C == NULL)
303 goto err; 304 goto err;
304 if (EC_POINT_mul(group, C, z1, pub_key, z2, ctx) == 0) { 305 if (EC_POINT_mul(group, C, z1, pub_key, z2, ctx) == 0) {
305 GOSTerr(GOST_F_GOST2001_DO_VERIFY, ERR_R_EC_LIB); 306 GOSTerr(GOST_F_GOST2001_DO_VERIFY, ERR_R_EC_LIB);
@@ -345,9 +346,9 @@ VKO_compute_key(BIGNUM *X, BIGNUM *Y, const GOST_KEY *pkey, GOST_KEY *priv_key,
345 if (ctx == NULL) 346 if (ctx == NULL)
346 goto err; 347 goto err;
347 BN_CTX_start(ctx); 348 BN_CTX_start(ctx);
348 p = BN_CTX_get(ctx); 349 if ((p = BN_CTX_get(ctx)) == NULL)
349 order = BN_CTX_get(ctx); 350 goto err;
350 if (order == NULL) 351 if ((order = BN_CTX_get(ctx)) == NULL)
351 goto err; 352 goto err;
352 if (EC_GROUP_get_order(group, order, ctx) == 0) 353 if (EC_GROUP_get_order(group, order, ctx) == 0)
353 goto err; 354 goto err;
diff --git a/src/lib/libcrypto/gost/gostr341001_ameth.c b/src/lib/libcrypto/gost/gostr341001_ameth.c
index 45ddd44e42..3153d2f2eb 100644
--- a/src/lib/libcrypto/gost/gostr341001_ameth.c
+++ b/src/lib/libcrypto/gost/gostr341001_ameth.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: gostr341001_ameth.c,v 1.8 2015/02/11 04:05:14 beck Exp $ */ 1/* $OpenBSD: gostr341001_ameth.c,v 1.9 2015/02/14 06:40:04 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> 3 * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
4 * Copyright (c) 2005-2006 Cryptocom LTD 4 * Copyright (c) 2005-2006 Cryptocom LTD
@@ -347,9 +347,9 @@ pub_print_gost01(BIO *out, const EVP_PKEY *pkey, int indent, ASN1_PCTX *pctx)
347 return 0; 347 return 0;
348 } 348 }
349 BN_CTX_start(ctx); 349 BN_CTX_start(ctx);
350 X = BN_CTX_get(ctx); 350 if ((X = BN_CTX_get(ctx)) == NULL)
351 Y = BN_CTX_get(ctx); 351 goto err;
352 if (X == NULL || Y == NULL) 352 if ((Y = BN_CTX_get(ctx)) == NULL)
353 goto err; 353 goto err;
354 pubkey = GOST_KEY_get0_public_key(pkey->pkey.gost); 354 pubkey = GOST_KEY_get0_public_key(pkey->pkey.gost);
355 group = GOST_KEY_get0_group(pkey->pkey.gost); 355 group = GOST_KEY_get0_group(pkey->pkey.gost);
diff --git a/src/lib/libcrypto/gost/gostr341001_key.c b/src/lib/libcrypto/gost/gostr341001_key.c
index f00d361d3f..dbe360620a 100644
--- a/src/lib/libcrypto/gost/gostr341001_key.c
+++ b/src/lib/libcrypto/gost/gostr341001_key.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: gostr341001_key.c,v 1.4 2015/02/11 03:19:37 doug Exp $ */ 1/* $OpenBSD: gostr341001_key.c,v 1.5 2015/02/14 06:40:04 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> 3 * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
4 * Copyright (c) 2005-2006 Cryptocom LTD 4 * Copyright (c) 2005-2006 Cryptocom LTD
@@ -198,9 +198,9 @@ GOST_KEY_set_public_key_affine_coordinates(GOST_KEY *key, BIGNUM *x, BIGNUM *y)
198 if (point == NULL) 198 if (point == NULL)
199 goto err; 199 goto err;
200 200
201 tx = BN_CTX_get(ctx); 201 if ((tx = BN_CTX_get(ctx)) == NULL)
202 ty = BN_CTX_get(ctx); 202 goto err;
203 if (ty == NULL) 203 if ((ty = BN_CTX_get(ctx)) == NULL)
204 goto err; 204 goto err;
205 if (EC_POINT_set_affine_coordinates_GFp(key->group, point, x, y, 205 if (EC_POINT_set_affine_coordinates_GFp(key->group, point, x, y,
206 ctx) == 0) 206 ctx) == 0)
diff --git a/src/lib/libcrypto/gost/gostr341001_pmeth.c b/src/lib/libcrypto/gost/gostr341001_pmeth.c
index 0157996a40..a297587c62 100644
--- a/src/lib/libcrypto/gost/gostr341001_pmeth.c
+++ b/src/lib/libcrypto/gost/gostr341001_pmeth.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: gostr341001_pmeth.c,v 1.10 2015/02/11 04:05:14 beck Exp $ */ 1/* $OpenBSD: gostr341001_pmeth.c,v 1.11 2015/02/14 06:40:04 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> 3 * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
4 * Copyright (c) 2005-2006 Cryptocom LTD 4 * Copyright (c) 2005-2006 Cryptocom LTD
@@ -324,10 +324,11 @@ gost01_VKO_key(EVP_PKEY *pub_key, EVP_PKEY *priv_key, const unsigned char *ukm,
324 return 0; 324 return 0;
325 325
326 BN_CTX_start(ctx); 326 BN_CTX_start(ctx);
327 UKM = BN_CTX_get(ctx); 327 if ((UKM = BN_CTX_get(ctx)) == NULL)
328 X = BN_CTX_get(ctx); 328 goto err;
329 Y = BN_CTX_get(ctx); 329 if ((X = BN_CTX_get(ctx)) == NULL)
330 if (Y == NULL) 330 goto err;
331 if ((Y = BN_CTX_get(ctx)) == NULL)
331 goto err; 332 goto err;
332 333
333 GOST_le2bn(ukm, 8, UKM); 334 GOST_le2bn(ukm, 8, UKM);
diff --git a/src/lib/libssl/src/crypto/gost/gostr341001.c b/src/lib/libssl/src/crypto/gost/gostr341001.c
index bc553e1083..c6221e4a01 100644
--- a/src/lib/libssl/src/crypto/gost/gostr341001.c
+++ b/src/lib/libssl/src/crypto/gost/gostr341001.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: gostr341001.c,v 1.3 2015/02/11 03:19:37 doug Exp $ */ 1/* $OpenBSD: gostr341001.c,v 1.4 2015/02/14 06:40:04 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> 3 * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
4 * Copyright (c) 2005-2006 Cryptocom LTD 4 * Copyright (c) 2005-2006 Cryptocom LTD
@@ -168,23 +168,22 @@ gost2001_do_sign(BIGNUM *md, GOST_KEY *eckey)
168 s = newsig->s; 168 s = newsig->s;
169 r = newsig->r; 169 r = newsig->r;
170 group = GOST_KEY_get0_group(eckey); 170 group = GOST_KEY_get0_group(eckey);
171 order = BN_CTX_get(ctx); 171 if ((order = BN_CTX_get(ctx)) == NULL)
172 if (order == NULL)
173 goto err; 172 goto err;
174 if (EC_GROUP_get_order(group, order, ctx) == 0) 173 if (EC_GROUP_get_order(group, order, ctx) == 0)
175 goto err; 174 goto err;
176 priv_key = GOST_KEY_get0_private_key(eckey); 175 priv_key = GOST_KEY_get0_private_key(eckey);
177 e = BN_CTX_get(ctx); 176 if ((e = BN_CTX_get(ctx)) == NULL)
178 if (e == NULL)
179 goto err; 177 goto err;
180 if (BN_mod(e, md, order, ctx) == 0) 178 if (BN_mod(e, md, order, ctx) == 0)
181 goto err; 179 goto err;
182 if (BN_is_zero(e)) 180 if (BN_is_zero(e))
183 BN_one(e); 181 BN_one(e);
184 k = BN_CTX_get(ctx); 182 if ((k = BN_CTX_get(ctx)) == NULL)
185 X = BN_CTX_get(ctx); 183 goto err;
186 C = EC_POINT_new(group); 184 if ((X = BN_CTX_get(ctx)) == NULL)
187 if (C == NULL) 185 goto err;
186 if ((C = EC_POINT_new(group)) == NULL)
188 goto err; 187 goto err;
189 do { 188 do {
190 do { 189 do {
@@ -218,15 +217,13 @@ gost2001_do_sign(BIGNUM *md, GOST_KEY *eckey)
218 } while (BN_is_zero(r)); 217 } while (BN_is_zero(r));
219 /* s = (r*priv_key+k*e) mod order */ 218 /* s = (r*priv_key+k*e) mod order */
220 if (tmp == NULL) { 219 if (tmp == NULL) {
221 tmp = BN_CTX_get(ctx); 220 if ((tmp = BN_CTX_get(ctx)) == NULL)
222 if (tmp == NULL)
223 goto err; 221 goto err;
224 } 222 }
225 if (BN_mod_mul(tmp, priv_key, r, order, ctx) == 0) 223 if (BN_mod_mul(tmp, priv_key, r, order, ctx) == 0)
226 goto err; 224 goto err;
227 if (tmp2 == NULL) { 225 if (tmp2 == NULL) {
228 tmp2 = BN_CTX_get(ctx); 226 if ((tmp2 = BN_CTX_get(ctx)) == NULL)
229 if (tmp2 == NULL)
230 goto err; 227 goto err;
231 } 228 }
232 if (BN_mod_mul(tmp2, k, e, order, ctx) == 0) 229 if (BN_mod_mul(tmp2, k, e, order, ctx) == 0)
@@ -264,15 +261,21 @@ gost2001_do_verify(BIGNUM *md, ECDSA_SIG *sig, GOST_KEY *ec)
264 if (ctx == NULL) 261 if (ctx == NULL)
265 goto err; 262 goto err;
266 BN_CTX_start(ctx); 263 BN_CTX_start(ctx);
267 order = BN_CTX_get(ctx); 264 if ((order = BN_CTX_get(ctx)) == NULL)
268 e = BN_CTX_get(ctx); 265 goto err;
269 z1 = BN_CTX_get(ctx); 266 if ((e = BN_CTX_get(ctx)) == NULL)
270 z2 = BN_CTX_get(ctx); 267 goto err;
271 tmp = BN_CTX_get(ctx); 268 if ((z1 = BN_CTX_get(ctx)) == NULL)
272 X = BN_CTX_get(ctx); 269 goto err;
273 R = BN_CTX_get(ctx); 270 if ((z2 = BN_CTX_get(ctx)) == NULL)
274 v = BN_CTX_get(ctx); 271 goto err;
275 if (v == NULL) 272 if ((tmp = BN_CTX_get(ctx)) == NULL)
273 goto err;
274 if ((X = BN_CTX_get(ctx)) == NULL)
275 goto err;
276 if ((R = BN_CTX_get(ctx)) == NULL)
277 goto err;
278 if ((v = BN_CTX_get(ctx)) == NULL)
276 goto err; 279 goto err;
277 280
278 if (EC_GROUP_get_order(group, order, ctx) == 0) 281 if (EC_GROUP_get_order(group, order, ctx) == 0)
@@ -289,8 +292,7 @@ gost2001_do_verify(BIGNUM *md, ECDSA_SIG *sig, GOST_KEY *ec)
289 goto err; 292 goto err;
290 if (BN_is_zero(e)) 293 if (BN_is_zero(e))
291 BN_one(e); 294 BN_one(e);
292 v = BN_mod_inverse(v, e, order, ctx); 295 if ((v = BN_mod_inverse(v, e, order, ctx)) == NULL)
293 if (v == NULL)
294 goto err; 296 goto err;
295 if (BN_mod_mul(z1, sig->s, v, order, ctx) == 0) 297 if (BN_mod_mul(z1, sig->s, v, order, ctx) == 0)
296 goto err; 298 goto err;
@@ -298,8 +300,7 @@ gost2001_do_verify(BIGNUM *md, ECDSA_SIG *sig, GOST_KEY *ec)
298 goto err; 300 goto err;
299 if (BN_mod_mul(z2, tmp, v, order, ctx) == 0) 301 if (BN_mod_mul(z2, tmp, v, order, ctx) == 0)
300 goto err; 302 goto err;
301 C = EC_POINT_new(group); 303 if ((C = EC_POINT_new(group)) == NULL)
302 if (C == NULL)
303 goto err; 304 goto err;
304 if (EC_POINT_mul(group, C, z1, pub_key, z2, ctx) == 0) { 305 if (EC_POINT_mul(group, C, z1, pub_key, z2, ctx) == 0) {
305 GOSTerr(GOST_F_GOST2001_DO_VERIFY, ERR_R_EC_LIB); 306 GOSTerr(GOST_F_GOST2001_DO_VERIFY, ERR_R_EC_LIB);
@@ -345,9 +346,9 @@ VKO_compute_key(BIGNUM *X, BIGNUM *Y, const GOST_KEY *pkey, GOST_KEY *priv_key,
345 if (ctx == NULL) 346 if (ctx == NULL)
346 goto err; 347 goto err;
347 BN_CTX_start(ctx); 348 BN_CTX_start(ctx);
348 p = BN_CTX_get(ctx); 349 if ((p = BN_CTX_get(ctx)) == NULL)
349 order = BN_CTX_get(ctx); 350 goto err;
350 if (order == NULL) 351 if ((order = BN_CTX_get(ctx)) == NULL)
351 goto err; 352 goto err;
352 if (EC_GROUP_get_order(group, order, ctx) == 0) 353 if (EC_GROUP_get_order(group, order, ctx) == 0)
353 goto err; 354 goto err;
diff --git a/src/lib/libssl/src/crypto/gost/gostr341001_ameth.c b/src/lib/libssl/src/crypto/gost/gostr341001_ameth.c
index 45ddd44e42..3153d2f2eb 100644
--- a/src/lib/libssl/src/crypto/gost/gostr341001_ameth.c
+++ b/src/lib/libssl/src/crypto/gost/gostr341001_ameth.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: gostr341001_ameth.c,v 1.8 2015/02/11 04:05:14 beck Exp $ */ 1/* $OpenBSD: gostr341001_ameth.c,v 1.9 2015/02/14 06:40:04 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> 3 * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
4 * Copyright (c) 2005-2006 Cryptocom LTD 4 * Copyright (c) 2005-2006 Cryptocom LTD
@@ -347,9 +347,9 @@ pub_print_gost01(BIO *out, const EVP_PKEY *pkey, int indent, ASN1_PCTX *pctx)
347 return 0; 347 return 0;
348 } 348 }
349 BN_CTX_start(ctx); 349 BN_CTX_start(ctx);
350 X = BN_CTX_get(ctx); 350 if ((X = BN_CTX_get(ctx)) == NULL)
351 Y = BN_CTX_get(ctx); 351 goto err;
352 if (X == NULL || Y == NULL) 352 if ((Y = BN_CTX_get(ctx)) == NULL)
353 goto err; 353 goto err;
354 pubkey = GOST_KEY_get0_public_key(pkey->pkey.gost); 354 pubkey = GOST_KEY_get0_public_key(pkey->pkey.gost);
355 group = GOST_KEY_get0_group(pkey->pkey.gost); 355 group = GOST_KEY_get0_group(pkey->pkey.gost);
diff --git a/src/lib/libssl/src/crypto/gost/gostr341001_key.c b/src/lib/libssl/src/crypto/gost/gostr341001_key.c
index f00d361d3f..dbe360620a 100644
--- a/src/lib/libssl/src/crypto/gost/gostr341001_key.c
+++ b/src/lib/libssl/src/crypto/gost/gostr341001_key.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: gostr341001_key.c,v 1.4 2015/02/11 03:19:37 doug Exp $ */ 1/* $OpenBSD: gostr341001_key.c,v 1.5 2015/02/14 06:40:04 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> 3 * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
4 * Copyright (c) 2005-2006 Cryptocom LTD 4 * Copyright (c) 2005-2006 Cryptocom LTD
@@ -198,9 +198,9 @@ GOST_KEY_set_public_key_affine_coordinates(GOST_KEY *key, BIGNUM *x, BIGNUM *y)
198 if (point == NULL) 198 if (point == NULL)
199 goto err; 199 goto err;
200 200
201 tx = BN_CTX_get(ctx); 201 if ((tx = BN_CTX_get(ctx)) == NULL)
202 ty = BN_CTX_get(ctx); 202 goto err;
203 if (ty == NULL) 203 if ((ty = BN_CTX_get(ctx)) == NULL)
204 goto err; 204 goto err;
205 if (EC_POINT_set_affine_coordinates_GFp(key->group, point, x, y, 205 if (EC_POINT_set_affine_coordinates_GFp(key->group, point, x, y,
206 ctx) == 0) 206 ctx) == 0)
diff --git a/src/lib/libssl/src/crypto/gost/gostr341001_pmeth.c b/src/lib/libssl/src/crypto/gost/gostr341001_pmeth.c
index 0157996a40..a297587c62 100644
--- a/src/lib/libssl/src/crypto/gost/gostr341001_pmeth.c
+++ b/src/lib/libssl/src/crypto/gost/gostr341001_pmeth.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: gostr341001_pmeth.c,v 1.10 2015/02/11 04:05:14 beck Exp $ */ 1/* $OpenBSD: gostr341001_pmeth.c,v 1.11 2015/02/14 06:40:04 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> 3 * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
4 * Copyright (c) 2005-2006 Cryptocom LTD 4 * Copyright (c) 2005-2006 Cryptocom LTD
@@ -324,10 +324,11 @@ gost01_VKO_key(EVP_PKEY *pub_key, EVP_PKEY *priv_key, const unsigned char *ukm,
324 return 0; 324 return 0;
325 325
326 BN_CTX_start(ctx); 326 BN_CTX_start(ctx);
327 UKM = BN_CTX_get(ctx); 327 if ((UKM = BN_CTX_get(ctx)) == NULL)
328 X = BN_CTX_get(ctx); 328 goto err;
329 Y = BN_CTX_get(ctx); 329 if ((X = BN_CTX_get(ctx)) == NULL)
330 if (Y == NULL) 330 goto err;
331 if ((Y = BN_CTX_get(ctx)) == NULL)
331 goto err; 332 goto err;
332 333
333 GOST_le2bn(ukm, 8, UKM); 334 GOST_le2bn(ukm, 8, UKM);