diff options
Diffstat (limited to 'src/lib/libcrypto/ec')
| -rw-r--r-- | src/lib/libcrypto/ec/ec2_mult.c | 11 | ||||
| -rw-r--r-- | src/lib/libcrypto/ec/ec2_oct.c | 14 | ||||
| -rw-r--r-- | src/lib/libcrypto/ec/ec2_smpl.c | 17 | ||||
| -rw-r--r-- | src/lib/libcrypto/ec/ec_ameth.c | 11 | ||||
| -rw-r--r-- | src/lib/libcrypto/ec/ec_asn1.c | 45 | ||||
| -rw-r--r-- | src/lib/libcrypto/ec/ec_check.c | 8 | ||||
| -rw-r--r-- | src/lib/libcrypto/ec/ec_curve.c | 26 | ||||
| -rw-r--r-- | src/lib/libcrypto/ec/ec_key.c | 44 | ||||
| -rw-r--r-- | src/lib/libcrypto/ec/ec_lib.c | 17 | ||||
| -rw-r--r-- | src/lib/libcrypto/ec/ec_mult.c | 20 | ||||
| -rw-r--r-- | src/lib/libcrypto/ec/ec_pmeth.c | 8 | ||||
| -rw-r--r-- | src/lib/libcrypto/ec/eck_prn.c | 23 | ||||
| -rw-r--r-- | src/lib/libcrypto/ec/ecp_mont.c | 57 | ||||
| -rw-r--r-- | src/lib/libcrypto/ec/ecp_nist.c | 11 | ||||
| -rw-r--r-- | src/lib/libcrypto/ec/ecp_nistp224.c | 20 | ||||
| -rw-r--r-- | src/lib/libcrypto/ec/ecp_nistp256.c | 20 | ||||
| -rw-r--r-- | src/lib/libcrypto/ec/ecp_nistp521.c | 20 | ||||
| -rw-r--r-- | src/lib/libcrypto/ec/ecp_oct.c | 14 | ||||
| -rw-r--r-- | src/lib/libcrypto/ec/ecp_smpl.c | 41 |
19 files changed, 151 insertions, 276 deletions
diff --git a/src/lib/libcrypto/ec/ec2_mult.c b/src/lib/libcrypto/ec/ec2_mult.c index 6c3a759dc8..c74571f88c 100644 --- a/src/lib/libcrypto/ec/ec2_mult.c +++ b/src/lib/libcrypto/ec/ec2_mult.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ec2_mult.c,v 1.4 2014/07/10 22:45:56 jsing Exp $ */ | 1 | /* $OpenBSD: ec2_mult.c,v 1.5 2014/07/12 16:03:37 miod Exp $ */ |
| 2 | /* ==================================================================== | 2 | /* ==================================================================== |
| 3 | * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. | 3 | * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. |
| 4 | * | 4 | * |
| @@ -421,12 +421,9 @@ ec_GF2m_simple_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *scalar, | |||
| 421 | ret = 1; | 421 | ret = 1; |
| 422 | 422 | ||
| 423 | err: | 423 | err: |
| 424 | if (p) | 424 | EC_POINT_free(p); |
| 425 | EC_POINT_free(p); | 425 | EC_POINT_free(acc); |
| 426 | if (acc) | 426 | BN_CTX_free(new_ctx); |
| 427 | EC_POINT_free(acc); | ||
| 428 | if (new_ctx != NULL) | ||
| 429 | BN_CTX_free(new_ctx); | ||
| 430 | return ret; | 427 | return ret; |
| 431 | } | 428 | } |
| 432 | 429 | ||
diff --git a/src/lib/libcrypto/ec/ec2_oct.c b/src/lib/libcrypto/ec/ec2_oct.c index 5150423b99..3b8039af6e 100644 --- a/src/lib/libcrypto/ec/ec2_oct.c +++ b/src/lib/libcrypto/ec/ec2_oct.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ec2_oct.c,v 1.4 2014/07/10 22:45:56 jsing Exp $ */ | 1 | /* $OpenBSD: ec2_oct.c,v 1.5 2014/07/12 16:03:37 miod Exp $ */ |
| 2 | /* ==================================================================== | 2 | /* ==================================================================== |
| 3 | * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. | 3 | * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. |
| 4 | * | 4 | * |
| @@ -157,8 +157,7 @@ ec_GF2m_simple_set_compressed_coordinates(const EC_GROUP *group, EC_POINT *point | |||
| 157 | 157 | ||
| 158 | err: | 158 | err: |
| 159 | BN_CTX_end(ctx); | 159 | BN_CTX_end(ctx); |
| 160 | if (new_ctx != NULL) | 160 | BN_CTX_free(new_ctx); |
| 161 | BN_CTX_free(new_ctx); | ||
| 162 | return ret; | 161 | return ret; |
| 163 | } | 162 | } |
| 164 | 163 | ||
| @@ -267,15 +266,13 @@ ec_GF2m_simple_point2oct(const EC_GROUP *group, const EC_POINT *point, | |||
| 267 | } | 266 | } |
| 268 | if (used_ctx) | 267 | if (used_ctx) |
| 269 | BN_CTX_end(ctx); | 268 | BN_CTX_end(ctx); |
| 270 | if (new_ctx != NULL) | 269 | BN_CTX_free(new_ctx); |
| 271 | BN_CTX_free(new_ctx); | ||
| 272 | return ret; | 270 | return ret; |
| 273 | 271 | ||
| 274 | err: | 272 | err: |
| 275 | if (used_ctx) | 273 | if (used_ctx) |
| 276 | BN_CTX_end(ctx); | 274 | BN_CTX_end(ctx); |
| 277 | if (new_ctx != NULL) | 275 | BN_CTX_free(new_ctx); |
| 278 | BN_CTX_free(new_ctx); | ||
| 279 | return 0; | 276 | return 0; |
| 280 | } | 277 | } |
| 281 | 278 | ||
| @@ -375,8 +372,7 @@ ec_GF2m_simple_oct2point(const EC_GROUP *group, EC_POINT *point, | |||
| 375 | 372 | ||
| 376 | err: | 373 | err: |
| 377 | BN_CTX_end(ctx); | 374 | BN_CTX_end(ctx); |
| 378 | if (new_ctx != NULL) | 375 | BN_CTX_free(new_ctx); |
| 379 | BN_CTX_free(new_ctx); | ||
| 380 | return ret; | 376 | return ret; |
| 381 | } | 377 | } |
| 382 | #endif | 378 | #endif |
diff --git a/src/lib/libcrypto/ec/ec2_smpl.c b/src/lib/libcrypto/ec/ec2_smpl.c index 001ffcc077..0031a161c7 100644 --- a/src/lib/libcrypto/ec/ec2_smpl.c +++ b/src/lib/libcrypto/ec/ec2_smpl.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ec2_smpl.c,v 1.11 2014/07/10 22:45:56 jsing Exp $ */ | 1 | /* $OpenBSD: ec2_smpl.c,v 1.12 2014/07/12 16:03:37 miod Exp $ */ |
| 2 | /* ==================================================================== | 2 | /* ==================================================================== |
| 3 | * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. | 3 | * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. |
| 4 | * | 4 | * |
| @@ -310,8 +310,7 @@ ec_GF2m_simple_group_check_discriminant(const EC_GROUP * group, BN_CTX * ctx) | |||
| 310 | err: | 310 | err: |
| 311 | if (ctx != NULL) | 311 | if (ctx != NULL) |
| 312 | BN_CTX_end(ctx); | 312 | BN_CTX_end(ctx); |
| 313 | if (new_ctx != NULL) | 313 | BN_CTX_free(new_ctx); |
| 314 | BN_CTX_free(new_ctx); | ||
| 315 | return ret; | 314 | return ret; |
| 316 | } | 315 | } |
| 317 | 316 | ||
| @@ -547,8 +546,7 @@ ec_GF2m_simple_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, | |||
| 547 | 546 | ||
| 548 | err: | 547 | err: |
| 549 | BN_CTX_end(ctx); | 548 | BN_CTX_end(ctx); |
| 550 | if (new_ctx != NULL) | 549 | BN_CTX_free(new_ctx); |
| 551 | BN_CTX_free(new_ctx); | ||
| 552 | return ret; | 550 | return ret; |
| 553 | } | 551 | } |
| 554 | 552 | ||
| @@ -641,8 +639,7 @@ ec_GF2m_simple_is_on_curve(const EC_GROUP *group, const EC_POINT *point, BN_CTX | |||
| 641 | err: | 639 | err: |
| 642 | if (ctx) | 640 | if (ctx) |
| 643 | BN_CTX_end(ctx); | 641 | BN_CTX_end(ctx); |
| 644 | if (new_ctx) | 642 | BN_CTX_free(new_ctx); |
| 645 | BN_CTX_free(new_ctx); | ||
| 646 | return ret; | 643 | return ret; |
| 647 | } | 644 | } |
| 648 | 645 | ||
| @@ -691,8 +688,7 @@ ec_GF2m_simple_cmp(const EC_GROUP * group, const EC_POINT * a, const EC_POINT * | |||
| 691 | err: | 688 | err: |
| 692 | if (ctx) | 689 | if (ctx) |
| 693 | BN_CTX_end(ctx); | 690 | BN_CTX_end(ctx); |
| 694 | if (new_ctx) | 691 | BN_CTX_free(new_ctx); |
| 695 | BN_CTX_free(new_ctx); | ||
| 696 | return ret; | 692 | return ret; |
| 697 | } | 693 | } |
| 698 | 694 | ||
| @@ -733,8 +729,7 @@ ec_GF2m_simple_make_affine(const EC_GROUP * group, EC_POINT * point, BN_CTX * ct | |||
| 733 | err: | 729 | err: |
| 734 | if (ctx) | 730 | if (ctx) |
| 735 | BN_CTX_end(ctx); | 731 | BN_CTX_end(ctx); |
| 736 | if (new_ctx) | 732 | BN_CTX_free(new_ctx); |
| 737 | BN_CTX_free(new_ctx); | ||
| 738 | return ret; | 733 | return ret; |
| 739 | } | 734 | } |
| 740 | 735 | ||
diff --git a/src/lib/libcrypto/ec/ec_ameth.c b/src/lib/libcrypto/ec/ec_ameth.c index 93e305b71a..c201815621 100644 --- a/src/lib/libcrypto/ec/ec_ameth.c +++ b/src/lib/libcrypto/ec/ec_ameth.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ec_ameth.c,v 1.11 2014/07/11 08:44:48 jsing Exp $ */ | 1 | /* $OpenBSD: ec_ameth.c,v 1.12 2014/07/12 16:03:37 miod Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 2006. | 3 | * project 2006. |
| 4 | */ | 4 | */ |
| @@ -492,12 +492,9 @@ do_EC_KEY_print(BIO * bp, const EC_KEY * x, int off, int ktype) | |||
| 492 | err: | 492 | err: |
| 493 | if (!ret) | 493 | if (!ret) |
| 494 | ECerr(EC_F_DO_EC_KEY_PRINT, reason); | 494 | ECerr(EC_F_DO_EC_KEY_PRINT, reason); |
| 495 | if (pub_key) | 495 | BN_free(pub_key); |
| 496 | BN_free(pub_key); | 496 | BN_free(order); |
| 497 | if (order) | 497 | BN_CTX_free(ctx); |
| 498 | BN_free(order); | ||
| 499 | if (ctx) | ||
| 500 | BN_CTX_free(ctx); | ||
| 501 | free(buffer); | 498 | free(buffer); |
| 502 | return (ret); | 499 | return (ret); |
| 503 | } | 500 | } |
diff --git a/src/lib/libcrypto/ec/ec_asn1.c b/src/lib/libcrypto/ec/ec_asn1.c index ef87b599f2..c54f6593d5 100644 --- a/src/lib/libcrypto/ec/ec_asn1.c +++ b/src/lib/libcrypto/ec/ec_asn1.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ec_asn1.c,v 1.9 2014/07/10 22:45:57 jsing Exp $ */ | 1 | /* $OpenBSD: ec_asn1.c,v 1.10 2014/07/12 16:03:37 miod Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Written by Nils Larsch for the OpenSSL project. | 3 | * Written by Nils Larsch for the OpenSSL project. |
| 4 | */ | 4 | */ |
| @@ -404,8 +404,8 @@ ec_asn1_group2fieldid(const EC_GROUP * group, X9_62_FIELDID * field) | |||
| 404 | 404 | ||
| 405 | ok = 1; | 405 | ok = 1; |
| 406 | 406 | ||
| 407 | err: if (tmp) | 407 | err: |
| 408 | BN_free(tmp); | 408 | BN_free(tmp); |
| 409 | return (ok); | 409 | return (ok); |
| 410 | } | 410 | } |
| 411 | 411 | ||
| @@ -509,12 +509,11 @@ ec_asn1_group2curve(const EC_GROUP * group, X9_62_CURVE * curve) | |||
| 509 | 509 | ||
| 510 | ok = 1; | 510 | ok = 1; |
| 511 | 511 | ||
| 512 | err: free(buffer_1); | 512 | err: |
| 513 | free(buffer_1); | ||
| 513 | free(buffer_2); | 514 | free(buffer_2); |
| 514 | if (tmp_1) | 515 | BN_free(tmp_1); |
| 515 | BN_free(tmp_1); | 516 | BN_free(tmp_2); |
| 516 | if (tmp_2) | ||
| 517 | BN_free(tmp_2); | ||
| 518 | return (ok); | 517 | return (ok); |
| 519 | } | 518 | } |
| 520 | 519 | ||
| @@ -608,8 +607,7 @@ err: if (!ok) { | |||
| 608 | ECPARAMETERS_free(ret); | 607 | ECPARAMETERS_free(ret); |
| 609 | ret = NULL; | 608 | ret = NULL; |
| 610 | } | 609 | } |
| 611 | if (tmp) | 610 | BN_free(tmp); |
| 612 | BN_free(tmp); | ||
| 613 | free(buffer); | 611 | free(buffer); |
| 614 | return (ret); | 612 | return (ret); |
| 615 | } | 613 | } |
| @@ -849,10 +847,8 @@ ec_asn1_parameters2group(const ECPARAMETERS * params) | |||
| 849 | } | 847 | } |
| 850 | /* extract the cofactor (optional) */ | 848 | /* extract the cofactor (optional) */ |
| 851 | if (params->cofactor == NULL) { | 849 | if (params->cofactor == NULL) { |
| 852 | if (b) { | 850 | BN_free(b); |
| 853 | BN_free(b); | 851 | b = NULL; |
| 854 | b = NULL; | ||
| 855 | } | ||
| 856 | } else if ((b = ASN1_INTEGER_to_BN(params->cofactor, b)) == NULL) { | 852 | } else if ((b = ASN1_INTEGER_to_BN(params->cofactor, b)) == NULL) { |
| 857 | ECerr(EC_F_EC_ASN1_PARAMETERS2GROUP, ERR_R_ASN1_LIB); | 853 | ECerr(EC_F_EC_ASN1_PARAMETERS2GROUP, ERR_R_ASN1_LIB); |
| 858 | goto err; | 854 | goto err; |
| @@ -865,18 +861,13 @@ ec_asn1_parameters2group(const ECPARAMETERS * params) | |||
| 865 | ok = 1; | 861 | ok = 1; |
| 866 | 862 | ||
| 867 | err: if (!ok) { | 863 | err: if (!ok) { |
| 868 | if (ret) | 864 | EC_GROUP_clear_free(ret); |
| 869 | EC_GROUP_clear_free(ret); | ||
| 870 | ret = NULL; | 865 | ret = NULL; |
| 871 | } | 866 | } |
| 872 | if (p) | 867 | BN_free(p); |
| 873 | BN_free(p); | 868 | BN_free(a); |
| 874 | if (a) | 869 | BN_free(b); |
| 875 | BN_free(a); | 870 | EC_POINT_free(point); |
| 876 | if (b) | ||
| 877 | BN_free(b); | ||
| 878 | if (point) | ||
| 879 | EC_POINT_free(point); | ||
| 880 | return (ret); | 871 | return (ret); |
| 881 | } | 872 | } |
| 882 | 873 | ||
| @@ -992,8 +983,7 @@ d2i_ECPrivateKey(EC_KEY ** a, const unsigned char **in, long len) | |||
| 992 | ret = *a; | 983 | ret = *a; |
| 993 | 984 | ||
| 994 | if (priv_key->parameters) { | 985 | if (priv_key->parameters) { |
| 995 | if (ret->group) | 986 | EC_GROUP_clear_free(ret->group); |
| 996 | EC_GROUP_clear_free(ret->group); | ||
| 997 | ret->group = ec_asn1_pkparameters2group(priv_key->parameters); | 987 | ret->group = ec_asn1_pkparameters2group(priv_key->parameters); |
| 998 | } | 988 | } |
| 999 | if (ret->group == NULL) { | 989 | if (ret->group == NULL) { |
| @@ -1022,8 +1012,7 @@ d2i_ECPrivateKey(EC_KEY ** a, const unsigned char **in, long len) | |||
| 1022 | const unsigned char *pub_oct; | 1012 | const unsigned char *pub_oct; |
| 1023 | size_t pub_oct_len; | 1013 | size_t pub_oct_len; |
| 1024 | 1014 | ||
| 1025 | if (ret->pub_key) | 1015 | EC_POINT_clear_free(ret->pub_key); |
| 1026 | EC_POINT_clear_free(ret->pub_key); | ||
| 1027 | ret->pub_key = EC_POINT_new(ret->group); | 1016 | ret->pub_key = EC_POINT_new(ret->group); |
| 1028 | if (ret->pub_key == NULL) { | 1017 | if (ret->pub_key == NULL) { |
| 1029 | ECerr(EC_F_D2I_ECPRIVATEKEY, ERR_R_EC_LIB); | 1018 | ECerr(EC_F_D2I_ECPRIVATEKEY, ERR_R_EC_LIB); |
diff --git a/src/lib/libcrypto/ec/ec_check.c b/src/lib/libcrypto/ec/ec_check.c index 585590514f..779e03cc2b 100644 --- a/src/lib/libcrypto/ec/ec_check.c +++ b/src/lib/libcrypto/ec/ec_check.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ec_check.c,v 1.3 2014/06/12 15:49:29 deraadt Exp $ */ | 1 | /* $OpenBSD: ec_check.c,v 1.4 2014/07/12 16:03:37 miod Exp $ */ |
| 2 | /* ==================================================================== | 2 | /* ==================================================================== |
| 3 | * Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved. | 3 | * Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved. |
| 4 | * | 4 | * |
| @@ -109,9 +109,7 @@ EC_GROUP_check(const EC_GROUP * group, BN_CTX * ctx) | |||
| 109 | err: | 109 | err: |
| 110 | if (ctx != NULL) | 110 | if (ctx != NULL) |
| 111 | BN_CTX_end(ctx); | 111 | BN_CTX_end(ctx); |
| 112 | if (new_ctx != NULL) | 112 | BN_CTX_free(new_ctx); |
| 113 | BN_CTX_free(new_ctx); | 113 | EC_POINT_free(point); |
| 114 | if (point) | ||
| 115 | EC_POINT_free(point); | ||
| 116 | return ret; | 114 | return ret; |
| 117 | } | 115 | } |
diff --git a/src/lib/libcrypto/ec/ec_curve.c b/src/lib/libcrypto/ec/ec_curve.c index baac8c7156..9d36d0bf22 100644 --- a/src/lib/libcrypto/ec/ec_curve.c +++ b/src/lib/libcrypto/ec/ec_curve.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ec_curve.c,v 1.6 2014/07/10 22:45:57 jsing Exp $ */ | 1 | /* $OpenBSD: ec_curve.c,v 1.7 2014/07/12 16:03:37 miod Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Written by Nils Larsch for the OpenSSL project. | 3 | * Written by Nils Larsch for the OpenSSL project. |
| 4 | */ | 4 | */ |
| @@ -2981,22 +2981,14 @@ err: | |||
| 2981 | EC_GROUP_free(group); | 2981 | EC_GROUP_free(group); |
| 2982 | group = NULL; | 2982 | group = NULL; |
| 2983 | } | 2983 | } |
| 2984 | if (P) | 2984 | EC_POINT_free(P); |
| 2985 | EC_POINT_free(P); | 2985 | BN_CTX_free(ctx); |
| 2986 | if (ctx) | 2986 | BN_free(p); |
| 2987 | BN_CTX_free(ctx); | 2987 | BN_free(a); |
| 2988 | if (p) | 2988 | BN_free(b); |
| 2989 | BN_free(p); | 2989 | BN_free(order); |
| 2990 | if (a) | 2990 | BN_free(x); |
| 2991 | BN_free(a); | 2991 | BN_free(y); |
| 2992 | if (b) | ||
| 2993 | BN_free(b); | ||
| 2994 | if (order) | ||
| 2995 | BN_free(order); | ||
| 2996 | if (x) | ||
| 2997 | BN_free(x); | ||
| 2998 | if (y) | ||
| 2999 | BN_free(y); | ||
| 3000 | return group; | 2992 | return group; |
| 3001 | } | 2993 | } |
| 3002 | 2994 | ||
diff --git a/src/lib/libcrypto/ec/ec_key.c b/src/lib/libcrypto/ec/ec_key.c index 7067a949da..1154c4dbf5 100644 --- a/src/lib/libcrypto/ec/ec_key.c +++ b/src/lib/libcrypto/ec/ec_key.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ec_key.c,v 1.8 2014/07/10 22:45:57 jsing Exp $ */ | 1 | /* $OpenBSD: ec_key.c,v 1.9 2014/07/12 16:03:37 miod Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Written by Nils Larsch for the OpenSSL project. | 3 | * Written by Nils Larsch for the OpenSSL project. |
| 4 | */ | 4 | */ |
| @@ -116,12 +116,9 @@ EC_KEY_free(EC_KEY * r) | |||
| 116 | if (i > 0) | 116 | if (i > 0) |
| 117 | return; | 117 | return; |
| 118 | 118 | ||
| 119 | if (r->group != NULL) | 119 | EC_GROUP_free(r->group); |
| 120 | EC_GROUP_free(r->group); | 120 | EC_POINT_free(r->pub_key); |
| 121 | if (r->pub_key != NULL) | 121 | BN_clear_free(r->priv_key); |
| 122 | EC_POINT_free(r->pub_key); | ||
| 123 | if (r->priv_key != NULL) | ||
| 124 | BN_clear_free(r->priv_key); | ||
| 125 | 122 | ||
| 126 | EC_EX_DATA_free_all_data(&r->method_data); | 123 | EC_EX_DATA_free_all_data(&r->method_data); |
| 127 | 124 | ||
| @@ -143,8 +140,7 @@ EC_KEY_copy(EC_KEY * dest, const EC_KEY * src) | |||
| 143 | if (src->group) { | 140 | if (src->group) { |
| 144 | const EC_METHOD *meth = EC_GROUP_method_of(src->group); | 141 | const EC_METHOD *meth = EC_GROUP_method_of(src->group); |
| 145 | /* clear the old group */ | 142 | /* clear the old group */ |
| 146 | if (dest->group) | 143 | EC_GROUP_free(dest->group); |
| 147 | EC_GROUP_free(dest->group); | ||
| 148 | dest->group = EC_GROUP_new(meth); | 144 | dest->group = EC_GROUP_new(meth); |
| 149 | if (dest->group == NULL) | 145 | if (dest->group == NULL) |
| 150 | return NULL; | 146 | return NULL; |
| @@ -153,8 +149,7 @@ EC_KEY_copy(EC_KEY * dest, const EC_KEY * src) | |||
| 153 | } | 149 | } |
| 154 | /* copy the public key */ | 150 | /* copy the public key */ |
| 155 | if (src->pub_key && src->group) { | 151 | if (src->pub_key && src->group) { |
| 156 | if (dest->pub_key) | 152 | EC_POINT_free(dest->pub_key); |
| 157 | EC_POINT_free(dest->pub_key); | ||
| 158 | dest->pub_key = EC_POINT_new(src->group); | 153 | dest->pub_key = EC_POINT_new(src->group); |
| 159 | if (dest->pub_key == NULL) | 154 | if (dest->pub_key == NULL) |
| 160 | return NULL; | 155 | return NULL; |
| @@ -261,14 +256,12 @@ EC_KEY_generate_key(EC_KEY * eckey) | |||
| 261 | ok = 1; | 256 | ok = 1; |
| 262 | 257 | ||
| 263 | err: | 258 | err: |
| 264 | if (order) | 259 | BN_free(order); |
| 265 | BN_free(order); | ||
| 266 | if (pub_key != NULL && eckey->pub_key == NULL) | 260 | if (pub_key != NULL && eckey->pub_key == NULL) |
| 267 | EC_POINT_free(pub_key); | 261 | EC_POINT_free(pub_key); |
| 268 | if (priv_key != NULL && eckey->priv_key == NULL) | 262 | if (priv_key != NULL && eckey->priv_key == NULL) |
| 269 | BN_free(priv_key); | 263 | BN_free(priv_key); |
| 270 | if (ctx != NULL) | 264 | BN_CTX_free(ctx); |
| 271 | BN_CTX_free(ctx); | ||
| 272 | return (ok); | 265 | return (ok); |
| 273 | } | 266 | } |
| 274 | 267 | ||
| @@ -334,10 +327,8 @@ EC_KEY_check_key(const EC_KEY * eckey) | |||
| 334 | } | 327 | } |
| 335 | ok = 1; | 328 | ok = 1; |
| 336 | err: | 329 | err: |
| 337 | if (ctx != NULL) | 330 | BN_CTX_free(ctx); |
| 338 | BN_CTX_free(ctx); | 331 | EC_POINT_free(point); |
| 339 | if (point != NULL) | ||
| 340 | EC_POINT_free(point); | ||
| 341 | return (ok); | 332 | return (ok); |
| 342 | } | 333 | } |
| 343 | 334 | ||
| @@ -406,10 +397,8 @@ EC_KEY_set_public_key_affine_coordinates(EC_KEY * key, BIGNUM * x, BIGNUM * y) | |||
| 406 | ok = 1; | 397 | ok = 1; |
| 407 | 398 | ||
| 408 | err: | 399 | err: |
| 409 | if (ctx) | 400 | BN_CTX_free(ctx); |
| 410 | BN_CTX_free(ctx); | 401 | EC_POINT_free(point); |
| 411 | if (point) | ||
| 412 | EC_POINT_free(point); | ||
| 413 | return ok; | 402 | return ok; |
| 414 | 403 | ||
| 415 | } | 404 | } |
| @@ -423,8 +412,7 @@ EC_KEY_get0_group(const EC_KEY * key) | |||
| 423 | int | 412 | int |
| 424 | EC_KEY_set_group(EC_KEY * key, const EC_GROUP * group) | 413 | EC_KEY_set_group(EC_KEY * key, const EC_GROUP * group) |
| 425 | { | 414 | { |
| 426 | if (key->group != NULL) | 415 | EC_GROUP_free(key->group); |
| 427 | EC_GROUP_free(key->group); | ||
| 428 | key->group = EC_GROUP_dup(group); | 416 | key->group = EC_GROUP_dup(group); |
| 429 | return (key->group == NULL) ? 0 : 1; | 417 | return (key->group == NULL) ? 0 : 1; |
| 430 | } | 418 | } |
| @@ -438,8 +426,7 @@ EC_KEY_get0_private_key(const EC_KEY * key) | |||
| 438 | int | 426 | int |
| 439 | EC_KEY_set_private_key(EC_KEY * key, const BIGNUM * priv_key) | 427 | EC_KEY_set_private_key(EC_KEY * key, const BIGNUM * priv_key) |
| 440 | { | 428 | { |
| 441 | if (key->priv_key) | 429 | BN_clear_free(key->priv_key); |
| 442 | BN_clear_free(key->priv_key); | ||
| 443 | key->priv_key = BN_dup(priv_key); | 430 | key->priv_key = BN_dup(priv_key); |
| 444 | return (key->priv_key == NULL) ? 0 : 1; | 431 | return (key->priv_key == NULL) ? 0 : 1; |
| 445 | } | 432 | } |
| @@ -453,8 +440,7 @@ EC_KEY_get0_public_key(const EC_KEY * key) | |||
| 453 | int | 440 | int |
| 454 | EC_KEY_set_public_key(EC_KEY * key, const EC_POINT * pub_key) | 441 | EC_KEY_set_public_key(EC_KEY * key, const EC_POINT * pub_key) |
| 455 | { | 442 | { |
| 456 | if (key->pub_key != NULL) | 443 | EC_POINT_free(key->pub_key); |
| 457 | EC_POINT_free(key->pub_key); | ||
| 458 | key->pub_key = EC_POINT_dup(pub_key, key->group); | 444 | key->pub_key = EC_POINT_dup(pub_key, key->group); |
| 459 | return (key->pub_key == NULL) ? 0 : 1; | 445 | return (key->pub_key == NULL) ? 0 : 1; |
| 460 | } | 446 | } |
diff --git a/src/lib/libcrypto/ec/ec_lib.c b/src/lib/libcrypto/ec/ec_lib.c index 3d8b96eb1f..47ccc614d1 100644 --- a/src/lib/libcrypto/ec/ec_lib.c +++ b/src/lib/libcrypto/ec/ec_lib.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ec_lib.c,v 1.14 2014/07/10 22:45:57 jsing Exp $ */ | 1 | /* $OpenBSD: ec_lib.c,v 1.15 2014/07/12 16:03:37 miod Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Originally written by Bodo Moeller for the OpenSSL project. | 3 | * Originally written by Bodo Moeller for the OpenSSL project. |
| 4 | */ | 4 | */ |
| @@ -124,8 +124,7 @@ EC_GROUP_free(EC_GROUP * group) | |||
| 124 | 124 | ||
| 125 | EC_EX_DATA_free_all_data(&group->extra_data); | 125 | EC_EX_DATA_free_all_data(&group->extra_data); |
| 126 | 126 | ||
| 127 | if (group->generator != NULL) | 127 | EC_POINT_free(group->generator); |
| 128 | EC_POINT_free(group->generator); | ||
| 129 | BN_free(&group->order); | 128 | BN_free(&group->order); |
| 130 | BN_free(&group->cofactor); | 129 | BN_free(&group->cofactor); |
| 131 | 130 | ||
| @@ -148,8 +147,7 @@ EC_GROUP_clear_free(EC_GROUP * group) | |||
| 148 | 147 | ||
| 149 | EC_EX_DATA_clear_free_all_data(&group->extra_data); | 148 | EC_EX_DATA_clear_free_all_data(&group->extra_data); |
| 150 | 149 | ||
| 151 | if (group->generator != NULL) | 150 | EC_POINT_clear_free(group->generator); |
| 152 | EC_POINT_clear_free(group->generator); | ||
| 153 | BN_clear_free(&group->order); | 151 | BN_clear_free(&group->order); |
| 154 | BN_clear_free(&group->cofactor); | 152 | BN_clear_free(&group->cofactor); |
| 155 | 153 | ||
| @@ -200,10 +198,8 @@ EC_GROUP_copy(EC_GROUP * dest, const EC_GROUP * src) | |||
| 200 | return 0; | 198 | return 0; |
| 201 | } else { | 199 | } else { |
| 202 | /* src->generator == NULL */ | 200 | /* src->generator == NULL */ |
| 203 | if (dest->generator != NULL) { | 201 | EC_POINT_clear_free(dest->generator); |
| 204 | EC_POINT_clear_free(dest->generator); | 202 | dest->generator = NULL; |
| 205 | dest->generator = NULL; | ||
| 206 | } | ||
| 207 | } | 203 | } |
| 208 | 204 | ||
| 209 | if (!BN_copy(&dest->order, &src->order)) | 205 | if (!BN_copy(&dest->order, &src->order)) |
| @@ -252,8 +248,7 @@ EC_GROUP_dup(const EC_GROUP * a) | |||
| 252 | 248 | ||
| 253 | err: | 249 | err: |
| 254 | if (!ok) { | 250 | if (!ok) { |
| 255 | if (t) | 251 | EC_GROUP_free(t); |
| 256 | EC_GROUP_free(t); | ||
| 257 | return NULL; | 252 | return NULL; |
| 258 | } else | 253 | } else |
| 259 | return t; | 254 | return t; |
diff --git a/src/lib/libcrypto/ec/ec_mult.c b/src/lib/libcrypto/ec/ec_mult.c index b6f74a1b09..4e49ce4f7b 100644 --- a/src/lib/libcrypto/ec/ec_mult.c +++ b/src/lib/libcrypto/ec/ec_mult.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ec_mult.c,v 1.13 2014/06/12 15:49:29 deraadt Exp $ */ | 1 | /* $OpenBSD: ec_mult.c,v 1.14 2014/07/12 16:03:37 miod Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Originally written by Bodo Moeller and Nils Larsch for the OpenSSL project. | 3 | * Originally written by Bodo Moeller and Nils Larsch for the OpenSSL project. |
| 4 | */ | 4 | */ |
| @@ -679,10 +679,8 @@ ec_wNAF_mul(const EC_GROUP * group, EC_POINT * r, const BIGNUM * scalar, | |||
| 679 | ret = 1; | 679 | ret = 1; |
| 680 | 680 | ||
| 681 | err: | 681 | err: |
| 682 | if (new_ctx != NULL) | 682 | BN_CTX_free(new_ctx); |
| 683 | BN_CTX_free(new_ctx); | 683 | EC_POINT_free(tmp); |
| 684 | if (tmp != NULL) | ||
| 685 | EC_POINT_free(tmp); | ||
| 686 | free(wsize); | 684 | free(wsize); |
| 687 | free(wNAF_len); | 685 | free(wNAF_len); |
| 688 | if (wNAF != NULL) { | 686 | if (wNAF != NULL) { |
| @@ -862,10 +860,8 @@ ec_wNAF_precompute_mult(EC_GROUP * group, BN_CTX * ctx) | |||
| 862 | err: | 860 | err: |
| 863 | if (ctx != NULL) | 861 | if (ctx != NULL) |
| 864 | BN_CTX_end(ctx); | 862 | BN_CTX_end(ctx); |
| 865 | if (new_ctx != NULL) | 863 | BN_CTX_free(new_ctx); |
| 866 | BN_CTX_free(new_ctx); | 864 | ec_pre_comp_free(pre_comp); |
| 867 | if (pre_comp) | ||
| 868 | ec_pre_comp_free(pre_comp); | ||
| 869 | if (points) { | 865 | if (points) { |
| 870 | EC_POINT **p; | 866 | EC_POINT **p; |
| 871 | 867 | ||
| @@ -873,10 +869,8 @@ err: | |||
| 873 | EC_POINT_free(*p); | 869 | EC_POINT_free(*p); |
| 874 | free(points); | 870 | free(points); |
| 875 | } | 871 | } |
| 876 | if (tmp_point) | 872 | EC_POINT_free(tmp_point); |
| 877 | EC_POINT_free(tmp_point); | 873 | EC_POINT_free(base); |
| 878 | if (base) | ||
| 879 | EC_POINT_free(base); | ||
| 880 | return ret; | 874 | return ret; |
| 881 | } | 875 | } |
| 882 | 876 | ||
diff --git a/src/lib/libcrypto/ec/ec_pmeth.c b/src/lib/libcrypto/ec/ec_pmeth.c index 7ba1d50d7f..07933dc5fd 100644 --- a/src/lib/libcrypto/ec/ec_pmeth.c +++ b/src/lib/libcrypto/ec/ec_pmeth.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ec_pmeth.c,v 1.7 2014/07/11 08:44:48 jsing Exp $ */ | 1 | /* $OpenBSD: ec_pmeth.c,v 1.8 2014/07/12 16:03:37 miod Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 2006. | 3 | * project 2006. |
| 4 | */ | 4 | */ |
| @@ -114,8 +114,7 @@ pkey_ec_cleanup(EVP_PKEY_CTX * ctx) | |||
| 114 | { | 114 | { |
| 115 | EC_PKEY_CTX *dctx = ctx->data; | 115 | EC_PKEY_CTX *dctx = ctx->data; |
| 116 | if (dctx) { | 116 | if (dctx) { |
| 117 | if (dctx->gen_group) | 117 | EC_GROUP_free(dctx->gen_group); |
| 118 | EC_GROUP_free(dctx->gen_group); | ||
| 119 | free(dctx); | 118 | free(dctx); |
| 120 | } | 119 | } |
| 121 | } | 120 | } |
| @@ -213,8 +212,7 @@ pkey_ec_ctrl(EVP_PKEY_CTX * ctx, int type, int p1, void *p2) | |||
| 213 | ECerr(EC_F_PKEY_EC_CTRL, EC_R_INVALID_CURVE); | 212 | ECerr(EC_F_PKEY_EC_CTRL, EC_R_INVALID_CURVE); |
| 214 | return 0; | 213 | return 0; |
| 215 | } | 214 | } |
| 216 | if (dctx->gen_group) | 215 | EC_GROUP_free(dctx->gen_group); |
| 217 | EC_GROUP_free(dctx->gen_group); | ||
| 218 | dctx->gen_group = group; | 216 | dctx->gen_group = group; |
| 219 | return 1; | 217 | return 1; |
| 220 | 218 | ||
diff --git a/src/lib/libcrypto/ec/eck_prn.c b/src/lib/libcrypto/ec/eck_prn.c index b0c8bcd22a..aa13d8b08c 100644 --- a/src/lib/libcrypto/ec/eck_prn.c +++ b/src/lib/libcrypto/ec/eck_prn.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: eck_prn.c,v 1.9 2014/07/11 08:44:48 jsing Exp $ */ | 1 | /* $OpenBSD: eck_prn.c,v 1.10 2014/07/12 16:03:37 miod Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Written by Nils Larsch for the OpenSSL project. | 3 | * Written by Nils Larsch for the OpenSSL project. |
| 4 | */ | 4 | */ |
| @@ -315,20 +315,13 @@ ECPKParameters_print(BIO * bp, const EC_GROUP * x, int off) | |||
| 315 | err: | 315 | err: |
| 316 | if (!ret) | 316 | if (!ret) |
| 317 | ECerr(EC_F_ECPKPARAMETERS_PRINT, reason); | 317 | ECerr(EC_F_ECPKPARAMETERS_PRINT, reason); |
| 318 | if (p) | 318 | BN_free(p); |
| 319 | BN_free(p); | 319 | BN_free(a); |
| 320 | if (a) | 320 | BN_free(b); |
| 321 | BN_free(a); | 321 | BN_free(gen); |
| 322 | if (b) | 322 | BN_free(order); |
| 323 | BN_free(b); | 323 | BN_free(cofactor); |
| 324 | if (gen) | 324 | BN_CTX_free(ctx); |
| 325 | BN_free(gen); | ||
| 326 | if (order) | ||
| 327 | BN_free(order); | ||
| 328 | if (cofactor) | ||
| 329 | BN_free(cofactor); | ||
| 330 | if (ctx) | ||
| 331 | BN_CTX_free(ctx); | ||
| 332 | free(buffer); | 325 | free(buffer); |
| 333 | return (ret); | 326 | return (ret); |
| 334 | } | 327 | } |
diff --git a/src/lib/libcrypto/ec/ecp_mont.c b/src/lib/libcrypto/ec/ecp_mont.c index ffbce81d4c..af8014ed38 100644 --- a/src/lib/libcrypto/ec/ecp_mont.c +++ b/src/lib/libcrypto/ec/ecp_mont.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ecp_mont.c,v 1.8 2014/06/12 15:49:29 deraadt Exp $ */ | 1 | /* $OpenBSD: ecp_mont.c,v 1.9 2014/07/12 16:03:37 miod Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Originally written by Bodo Moeller for the OpenSSL project. | 3 | * Originally written by Bodo Moeller for the OpenSSL project. |
| 4 | */ | 4 | */ |
| @@ -128,14 +128,10 @@ ec_GFp_mont_group_init(EC_GROUP * group) | |||
| 128 | void | 128 | void |
| 129 | ec_GFp_mont_group_finish(EC_GROUP * group) | 129 | ec_GFp_mont_group_finish(EC_GROUP * group) |
| 130 | { | 130 | { |
| 131 | if (group->field_data1 != NULL) { | 131 | BN_MONT_CTX_free(group->field_data1); |
| 132 | BN_MONT_CTX_free(group->field_data1); | 132 | group->field_data1 = NULL; |
| 133 | group->field_data1 = NULL; | 133 | BN_free(group->field_data2); |
| 134 | } | 134 | group->field_data2 = NULL; |
| 135 | if (group->field_data2 != NULL) { | ||
| 136 | BN_free(group->field_data2); | ||
| 137 | group->field_data2 = NULL; | ||
| 138 | } | ||
| 139 | ec_GFp_simple_group_finish(group); | 135 | ec_GFp_simple_group_finish(group); |
| 140 | } | 136 | } |
| 141 | 137 | ||
| @@ -143,14 +139,10 @@ ec_GFp_mont_group_finish(EC_GROUP * group) | |||
| 143 | void | 139 | void |
| 144 | ec_GFp_mont_group_clear_finish(EC_GROUP * group) | 140 | ec_GFp_mont_group_clear_finish(EC_GROUP * group) |
| 145 | { | 141 | { |
| 146 | if (group->field_data1 != NULL) { | 142 | BN_MONT_CTX_free(group->field_data1); |
| 147 | BN_MONT_CTX_free(group->field_data1); | 143 | group->field_data1 = NULL; |
| 148 | group->field_data1 = NULL; | 144 | BN_clear_free(group->field_data2); |
| 149 | } | 145 | group->field_data2 = NULL; |
| 150 | if (group->field_data2 != NULL) { | ||
| 151 | BN_clear_free(group->field_data2); | ||
| 152 | group->field_data2 = NULL; | ||
| 153 | } | ||
| 154 | ec_GFp_simple_group_clear_finish(group); | 146 | ec_GFp_simple_group_clear_finish(group); |
| 155 | } | 147 | } |
| 156 | 148 | ||
| @@ -158,14 +150,11 @@ ec_GFp_mont_group_clear_finish(EC_GROUP * group) | |||
| 158 | int | 150 | int |
| 159 | ec_GFp_mont_group_copy(EC_GROUP * dest, const EC_GROUP * src) | 151 | ec_GFp_mont_group_copy(EC_GROUP * dest, const EC_GROUP * src) |
| 160 | { | 152 | { |
| 161 | if (dest->field_data1 != NULL) { | 153 | BN_MONT_CTX_free(dest->field_data1); |
| 162 | BN_MONT_CTX_free(dest->field_data1); | 154 | dest->field_data1 = NULL; |
| 163 | dest->field_data1 = NULL; | 155 | BN_clear_free(dest->field_data2); |
| 164 | } | 156 | dest->field_data2 = NULL; |
| 165 | if (dest->field_data2 != NULL) { | 157 | |
| 166 | BN_clear_free(dest->field_data2); | ||
| 167 | dest->field_data2 = NULL; | ||
| 168 | } | ||
| 169 | if (!ec_GFp_simple_group_copy(dest, src)) | 158 | if (!ec_GFp_simple_group_copy(dest, src)) |
| 170 | return 0; | 159 | return 0; |
| 171 | 160 | ||
| @@ -201,14 +190,10 @@ ec_GFp_mont_group_set_curve(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, | |||
| 201 | BIGNUM *one = NULL; | 190 | BIGNUM *one = NULL; |
| 202 | int ret = 0; | 191 | int ret = 0; |
| 203 | 192 | ||
| 204 | if (group->field_data1 != NULL) { | 193 | BN_MONT_CTX_free(group->field_data1); |
| 205 | BN_MONT_CTX_free(group->field_data1); | 194 | group->field_data1 = NULL; |
| 206 | group->field_data1 = NULL; | 195 | BN_free(group->field_data2); |
| 207 | } | 196 | group->field_data2 = NULL; |
| 208 | if (group->field_data2 != NULL) { | ||
| 209 | BN_free(group->field_data2); | ||
| 210 | group->field_data2 = NULL; | ||
| 211 | } | ||
| 212 | if (ctx == NULL) { | 197 | if (ctx == NULL) { |
| 213 | ctx = new_ctx = BN_CTX_new(); | 198 | ctx = new_ctx = BN_CTX_new(); |
| 214 | if (ctx == NULL) | 199 | if (ctx == NULL) |
| @@ -241,10 +226,8 @@ ec_GFp_mont_group_set_curve(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, | |||
| 241 | group->field_data2 = NULL; | 226 | group->field_data2 = NULL; |
| 242 | } | 227 | } |
| 243 | err: | 228 | err: |
| 244 | if (new_ctx != NULL) | 229 | BN_CTX_free(new_ctx); |
| 245 | BN_CTX_free(new_ctx); | 230 | BN_MONT_CTX_free(mont); |
| 246 | if (mont != NULL) | ||
| 247 | BN_MONT_CTX_free(mont); | ||
| 248 | return ret; | 231 | return ret; |
| 249 | } | 232 | } |
| 250 | 233 | ||
diff --git a/src/lib/libcrypto/ec/ecp_nist.c b/src/lib/libcrypto/ec/ecp_nist.c index d49d1735f3..a33f9d9e39 100644 --- a/src/lib/libcrypto/ec/ecp_nist.c +++ b/src/lib/libcrypto/ec/ecp_nist.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ecp_nist.c,v 1.8 2014/06/12 15:49:29 deraadt Exp $ */ | 1 | /* $OpenBSD: ecp_nist.c,v 1.9 2014/07/12 16:03:37 miod Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Written by Nils Larsch for the OpenSSL project. | 3 | * Written by Nils Larsch for the OpenSSL project. |
| 4 | */ | 4 | */ |
| @@ -153,8 +153,7 @@ ec_GFp_nist_group_set_curve(EC_GROUP *group, const BIGNUM *p, | |||
| 153 | 153 | ||
| 154 | err: | 154 | err: |
| 155 | BN_CTX_end(ctx); | 155 | BN_CTX_end(ctx); |
| 156 | if (new_ctx != NULL) | 156 | BN_CTX_free(new_ctx); |
| 157 | BN_CTX_free(new_ctx); | ||
| 158 | return ret; | 157 | return ret; |
| 159 | } | 158 | } |
| 160 | 159 | ||
| @@ -181,8 +180,7 @@ ec_GFp_nist_field_mul(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a, | |||
| 181 | 180 | ||
| 182 | ret = 1; | 181 | ret = 1; |
| 183 | err: | 182 | err: |
| 184 | if (ctx_new) | 183 | BN_CTX_free(ctx_new); |
| 185 | BN_CTX_free(ctx_new); | ||
| 186 | return ret; | 184 | return ret; |
| 187 | } | 185 | } |
| 188 | 186 | ||
| @@ -209,7 +207,6 @@ ec_GFp_nist_field_sqr(const EC_GROUP * group, BIGNUM * r, const BIGNUM * a, | |||
| 209 | 207 | ||
| 210 | ret = 1; | 208 | ret = 1; |
| 211 | err: | 209 | err: |
| 212 | if (ctx_new) | 210 | BN_CTX_free(ctx_new); |
| 213 | BN_CTX_free(ctx_new); | ||
| 214 | return ret; | 211 | return ret; |
| 215 | } | 212 | } |
diff --git a/src/lib/libcrypto/ec/ecp_nistp224.c b/src/lib/libcrypto/ec/ecp_nistp224.c index c466d2db83..ed0bad2a72 100644 --- a/src/lib/libcrypto/ec/ecp_nistp224.c +++ b/src/lib/libcrypto/ec/ecp_nistp224.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ecp_nistp224.c,v 1.14 2014/07/10 22:45:57 jsing Exp $ */ | 1 | /* $OpenBSD: ecp_nistp224.c,v 1.15 2014/07/12 16:03:37 miod Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Written by Emilia Kasper (Google) for the OpenSSL project. | 3 | * Written by Emilia Kasper (Google) for the OpenSSL project. |
| 4 | */ | 4 | */ |
| @@ -1285,8 +1285,7 @@ ec_GFp_nistp224_group_set_curve(EC_GROUP * group, const BIGNUM * p, | |||
| 1285 | ret = ec_GFp_simple_group_set_curve(group, p, a, b, ctx); | 1285 | ret = ec_GFp_simple_group_set_curve(group, p, a, b, ctx); |
| 1286 | err: | 1286 | err: |
| 1287 | BN_CTX_end(ctx); | 1287 | BN_CTX_end(ctx); |
| 1288 | if (new_ctx != NULL) | 1288 | BN_CTX_free(new_ctx); |
| 1289 | BN_CTX_free(new_ctx); | ||
| 1290 | return ret; | 1289 | return ret; |
| 1291 | } | 1290 | } |
| 1292 | 1291 | ||
| @@ -1545,10 +1544,8 @@ ec_GFp_nistp224_points_mul(const EC_GROUP * group, EC_POINT * r, | |||
| 1545 | 1544 | ||
| 1546 | err: | 1545 | err: |
| 1547 | BN_CTX_end(ctx); | 1546 | BN_CTX_end(ctx); |
| 1548 | if (generator != NULL) | 1547 | EC_POINT_free(generator); |
| 1549 | EC_POINT_free(generator); | 1548 | BN_CTX_free(new_ctx); |
| 1550 | if (new_ctx != NULL) | ||
| 1551 | BN_CTX_free(new_ctx); | ||
| 1552 | free(secrets); | 1549 | free(secrets); |
| 1553 | free(pre_comp); | 1550 | free(pre_comp); |
| 1554 | free(tmp_felems); | 1551 | free(tmp_felems); |
| @@ -1676,12 +1673,9 @@ ec_GFp_nistp224_precompute_mult(EC_GROUP * group, BN_CTX * ctx) | |||
| 1676 | pre = NULL; | 1673 | pre = NULL; |
| 1677 | err: | 1674 | err: |
| 1678 | BN_CTX_end(ctx); | 1675 | BN_CTX_end(ctx); |
| 1679 | if (generator != NULL) | 1676 | EC_POINT_free(generator); |
| 1680 | EC_POINT_free(generator); | 1677 | BN_CTX_free(new_ctx); |
| 1681 | if (new_ctx != NULL) | 1678 | nistp224_pre_comp_free(pre); |
| 1682 | BN_CTX_free(new_ctx); | ||
| 1683 | if (pre) | ||
| 1684 | nistp224_pre_comp_free(pre); | ||
| 1685 | return ret; | 1679 | return ret; |
| 1686 | } | 1680 | } |
| 1687 | 1681 | ||
diff --git a/src/lib/libcrypto/ec/ecp_nistp256.c b/src/lib/libcrypto/ec/ecp_nistp256.c index 7b122e6307..6905b614bc 100644 --- a/src/lib/libcrypto/ec/ecp_nistp256.c +++ b/src/lib/libcrypto/ec/ecp_nistp256.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ecp_nistp256.c,v 1.13 2014/07/10 22:45:57 jsing Exp $ */ | 1 | /* $OpenBSD: ecp_nistp256.c,v 1.14 2014/07/12 16:03:37 miod Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Written by Adam Langley (Google) for the OpenSSL project | 3 | * Written by Adam Langley (Google) for the OpenSSL project |
| 4 | */ | 4 | */ |
| @@ -1834,8 +1834,7 @@ ec_GFp_nistp256_group_set_curve(EC_GROUP * group, const BIGNUM * p, | |||
| 1834 | ret = ec_GFp_simple_group_set_curve(group, p, a, b, ctx); | 1834 | ret = ec_GFp_simple_group_set_curve(group, p, a, b, ctx); |
| 1835 | err: | 1835 | err: |
| 1836 | BN_CTX_end(ctx); | 1836 | BN_CTX_end(ctx); |
| 1837 | if (new_ctx != NULL) | 1837 | BN_CTX_free(new_ctx); |
| 1838 | BN_CTX_free(new_ctx); | ||
| 1839 | return ret; | 1838 | return ret; |
| 1840 | } | 1839 | } |
| 1841 | 1840 | ||
| @@ -2098,10 +2097,8 @@ ec_GFp_nistp256_points_mul(const EC_GROUP * group, EC_POINT * r, | |||
| 2098 | 2097 | ||
| 2099 | err: | 2098 | err: |
| 2100 | BN_CTX_end(ctx); | 2099 | BN_CTX_end(ctx); |
| 2101 | if (generator != NULL) | 2100 | EC_POINT_free(generator); |
| 2102 | EC_POINT_free(generator); | 2101 | BN_CTX_free(new_ctx); |
| 2103 | if (new_ctx != NULL) | ||
| 2104 | BN_CTX_free(new_ctx); | ||
| 2105 | free(secrets); | 2102 | free(secrets); |
| 2106 | free(pre_comp); | 2103 | free(pre_comp); |
| 2107 | free(tmp_smallfelems); | 2104 | free(tmp_smallfelems); |
| @@ -2223,12 +2220,9 @@ ec_GFp_nistp256_precompute_mult(EC_GROUP * group, BN_CTX * ctx) | |||
| 2223 | pre = NULL; | 2220 | pre = NULL; |
| 2224 | err: | 2221 | err: |
| 2225 | BN_CTX_end(ctx); | 2222 | BN_CTX_end(ctx); |
| 2226 | if (generator != NULL) | 2223 | EC_POINT_free(generator); |
| 2227 | EC_POINT_free(generator); | 2224 | BN_CTX_free(new_ctx); |
| 2228 | if (new_ctx != NULL) | 2225 | nistp256_pre_comp_free(pre); |
| 2229 | BN_CTX_free(new_ctx); | ||
| 2230 | if (pre) | ||
| 2231 | nistp256_pre_comp_free(pre); | ||
| 2232 | return ret; | 2226 | return ret; |
| 2233 | } | 2227 | } |
| 2234 | 2228 | ||
diff --git a/src/lib/libcrypto/ec/ecp_nistp521.c b/src/lib/libcrypto/ec/ecp_nistp521.c index cec0a3b470..c9313ada8e 100644 --- a/src/lib/libcrypto/ec/ecp_nistp521.c +++ b/src/lib/libcrypto/ec/ecp_nistp521.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ecp_nistp521.c,v 1.14 2014/07/10 22:45:57 jsing Exp $ */ | 1 | /* $OpenBSD: ecp_nistp521.c,v 1.15 2014/07/12 16:03:37 miod Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Written by Adam Langley (Google) for the OpenSSL project | 3 | * Written by Adam Langley (Google) for the OpenSSL project |
| 4 | */ | 4 | */ |
| @@ -1725,8 +1725,7 @@ ec_GFp_nistp521_group_set_curve(EC_GROUP * group, const BIGNUM * p, | |||
| 1725 | ret = ec_GFp_simple_group_set_curve(group, p, a, b, ctx); | 1725 | ret = ec_GFp_simple_group_set_curve(group, p, a, b, ctx); |
| 1726 | err: | 1726 | err: |
| 1727 | BN_CTX_end(ctx); | 1727 | BN_CTX_end(ctx); |
| 1728 | if (new_ctx != NULL) | 1728 | BN_CTX_free(new_ctx); |
| 1729 | BN_CTX_free(new_ctx); | ||
| 1730 | return ret; | 1729 | return ret; |
| 1731 | } | 1730 | } |
| 1732 | 1731 | ||
| @@ -1985,10 +1984,8 @@ ec_GFp_nistp521_points_mul(const EC_GROUP * group, EC_POINT * r, | |||
| 1985 | 1984 | ||
| 1986 | err: | 1985 | err: |
| 1987 | BN_CTX_end(ctx); | 1986 | BN_CTX_end(ctx); |
| 1988 | if (generator != NULL) | 1987 | EC_POINT_free(generator); |
| 1989 | EC_POINT_free(generator); | 1988 | BN_CTX_free(new_ctx); |
| 1990 | if (new_ctx != NULL) | ||
| 1991 | BN_CTX_free(new_ctx); | ||
| 1992 | free(secrets); | 1989 | free(secrets); |
| 1993 | free(pre_comp); | 1990 | free(pre_comp); |
| 1994 | free(tmp_felems); | 1991 | free(tmp_felems); |
| @@ -2096,12 +2093,9 @@ ec_GFp_nistp521_precompute_mult(EC_GROUP * group, BN_CTX * ctx) | |||
| 2096 | pre = NULL; | 2093 | pre = NULL; |
| 2097 | err: | 2094 | err: |
| 2098 | BN_CTX_end(ctx); | 2095 | BN_CTX_end(ctx); |
| 2099 | if (generator != NULL) | 2096 | EC_POINT_free(generator); |
| 2100 | EC_POINT_free(generator); | 2097 | BN_CTX_free(new_ctx); |
| 2101 | if (new_ctx != NULL) | 2098 | nistp521_pre_comp_free(pre); |
| 2102 | BN_CTX_free(new_ctx); | ||
| 2103 | if (pre) | ||
| 2104 | nistp521_pre_comp_free(pre); | ||
| 2105 | return ret; | 2099 | return ret; |
| 2106 | } | 2100 | } |
| 2107 | 2101 | ||
diff --git a/src/lib/libcrypto/ec/ecp_oct.c b/src/lib/libcrypto/ec/ecp_oct.c index 2f2920d70d..d2402ee0d8 100644 --- a/src/lib/libcrypto/ec/ecp_oct.c +++ b/src/lib/libcrypto/ec/ecp_oct.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ecp_oct.c,v 1.4 2014/06/12 15:49:29 deraadt Exp $ */ | 1 | /* $OpenBSD: ecp_oct.c,v 1.5 2014/07/12 16:03:37 miod Exp $ */ |
| 2 | /* Includes code written by Lenka Fibikova <fibikova@exp-math.uni-essen.de> | 2 | /* Includes code written by Lenka Fibikova <fibikova@exp-math.uni-essen.de> |
| 3 | * for the OpenSSL project. | 3 | * for the OpenSSL project. |
| 4 | * Includes code written by Bodo Moeller for the OpenSSL project. | 4 | * Includes code written by Bodo Moeller for the OpenSSL project. |
| @@ -190,8 +190,7 @@ ec_GFp_simple_set_compressed_coordinates(const EC_GROUP * group, EC_POINT * poin | |||
| 190 | 190 | ||
| 191 | err: | 191 | err: |
| 192 | BN_CTX_end(ctx); | 192 | BN_CTX_end(ctx); |
| 193 | if (new_ctx != NULL) | 193 | BN_CTX_free(new_ctx); |
| 194 | BN_CTX_free(new_ctx); | ||
| 195 | return ret; | 194 | return ret; |
| 196 | } | 195 | } |
| 197 | 196 | ||
| @@ -290,15 +289,13 @@ ec_GFp_simple_point2oct(const EC_GROUP * group, const EC_POINT * point, point_co | |||
| 290 | } | 289 | } |
| 291 | if (used_ctx) | 290 | if (used_ctx) |
| 292 | BN_CTX_end(ctx); | 291 | BN_CTX_end(ctx); |
| 293 | if (new_ctx != NULL) | 292 | BN_CTX_free(new_ctx); |
| 294 | BN_CTX_free(new_ctx); | ||
| 295 | return ret; | 293 | return ret; |
| 296 | 294 | ||
| 297 | err: | 295 | err: |
| 298 | if (used_ctx) | 296 | if (used_ctx) |
| 299 | BN_CTX_end(ctx); | 297 | BN_CTX_end(ctx); |
| 300 | if (new_ctx != NULL) | 298 | BN_CTX_free(new_ctx); |
| 301 | BN_CTX_free(new_ctx); | ||
| 302 | return 0; | 299 | return 0; |
| 303 | } | 300 | } |
| 304 | 301 | ||
| @@ -391,7 +388,6 @@ ec_GFp_simple_oct2point(const EC_GROUP * group, EC_POINT * point, | |||
| 391 | 388 | ||
| 392 | err: | 389 | err: |
| 393 | BN_CTX_end(ctx); | 390 | BN_CTX_end(ctx); |
| 394 | if (new_ctx != NULL) | 391 | BN_CTX_free(new_ctx); |
| 395 | BN_CTX_free(new_ctx); | ||
| 396 | return ret; | 392 | return ret; |
| 397 | } | 393 | } |
diff --git a/src/lib/libcrypto/ec/ecp_smpl.c b/src/lib/libcrypto/ec/ecp_smpl.c index 5ba9a925d6..dabc5af899 100644 --- a/src/lib/libcrypto/ec/ecp_smpl.c +++ b/src/lib/libcrypto/ec/ecp_smpl.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ecp_smpl.c,v 1.12 2014/06/12 15:49:29 deraadt Exp $ */ | 1 | /* $OpenBSD: ecp_smpl.c,v 1.13 2014/07/12 16:03:37 miod Exp $ */ |
| 2 | /* Includes code written by Lenka Fibikova <fibikova@exp-math.uni-essen.de> | 2 | /* Includes code written by Lenka Fibikova <fibikova@exp-math.uni-essen.de> |
| 3 | * for the OpenSSL project. | 3 | * for the OpenSSL project. |
| 4 | * Includes code written by Bodo Moeller for the OpenSSL project. | 4 | * Includes code written by Bodo Moeller for the OpenSSL project. |
| @@ -222,8 +222,7 @@ ec_GFp_simple_group_set_curve(EC_GROUP * group, | |||
| 222 | 222 | ||
| 223 | err: | 223 | err: |
| 224 | BN_CTX_end(ctx); | 224 | BN_CTX_end(ctx); |
| 225 | if (new_ctx != NULL) | 225 | BN_CTX_free(new_ctx); |
| 226 | BN_CTX_free(new_ctx); | ||
| 227 | return ret; | 226 | return ret; |
| 228 | } | 227 | } |
| 229 | 228 | ||
| @@ -267,8 +266,7 @@ ec_GFp_simple_group_get_curve(const EC_GROUP * group, BIGNUM * p, BIGNUM * a, BI | |||
| 267 | ret = 1; | 266 | ret = 1; |
| 268 | 267 | ||
| 269 | err: | 268 | err: |
| 270 | if (new_ctx) | 269 | BN_CTX_free(new_ctx); |
| 271 | BN_CTX_free(new_ctx); | ||
| 272 | return ret; | 270 | return ret; |
| 273 | } | 271 | } |
| 274 | 272 | ||
| @@ -348,8 +346,7 @@ ec_GFp_simple_group_check_discriminant(const EC_GROUP * group, BN_CTX * ctx) | |||
| 348 | err: | 346 | err: |
| 349 | if (ctx != NULL) | 347 | if (ctx != NULL) |
| 350 | BN_CTX_end(ctx); | 348 | BN_CTX_end(ctx); |
| 351 | if (new_ctx != NULL) | 349 | BN_CTX_free(new_ctx); |
| 352 | BN_CTX_free(new_ctx); | ||
| 353 | return ret; | 350 | return ret; |
| 354 | } | 351 | } |
| 355 | 352 | ||
| @@ -457,8 +454,7 @@ ec_GFp_simple_set_Jprojective_coordinates_GFp(const EC_GROUP * group, EC_POINT * | |||
| 457 | ret = 1; | 454 | ret = 1; |
| 458 | 455 | ||
| 459 | err: | 456 | err: |
| 460 | if (new_ctx != NULL) | 457 | BN_CTX_free(new_ctx); |
| 461 | BN_CTX_free(new_ctx); | ||
| 462 | return ret; | 458 | return ret; |
| 463 | } | 459 | } |
| 464 | 460 | ||
| @@ -506,8 +502,7 @@ ec_GFp_simple_get_Jprojective_coordinates_GFp(const EC_GROUP * group, const EC_P | |||
| 506 | ret = 1; | 502 | ret = 1; |
| 507 | 503 | ||
| 508 | err: | 504 | err: |
| 509 | if (new_ctx != NULL) | 505 | BN_CTX_free(new_ctx); |
| 510 | BN_CTX_free(new_ctx); | ||
| 511 | return ret; | 506 | return ret; |
| 512 | } | 507 | } |
| 513 | 508 | ||
| @@ -626,8 +621,7 @@ ec_GFp_simple_point_get_affine_coordinates(const EC_GROUP * group, const EC_POIN | |||
| 626 | 621 | ||
| 627 | err: | 622 | err: |
| 628 | BN_CTX_end(ctx); | 623 | BN_CTX_end(ctx); |
| 629 | if (new_ctx != NULL) | 624 | BN_CTX_free(new_ctx); |
| 630 | BN_CTX_free(new_ctx); | ||
| 631 | return ret; | 625 | return ret; |
| 632 | } | 626 | } |
| 633 | 627 | ||
| @@ -810,8 +804,7 @@ ec_GFp_simple_add(const EC_GROUP * group, EC_POINT * r, const EC_POINT * a, cons | |||
| 810 | end: | 804 | end: |
| 811 | if (ctx) /* otherwise we already called BN_CTX_end */ | 805 | if (ctx) /* otherwise we already called BN_CTX_end */ |
| 812 | BN_CTX_end(ctx); | 806 | BN_CTX_end(ctx); |
| 813 | if (new_ctx != NULL) | 807 | BN_CTX_free(new_ctx); |
| 814 | BN_CTX_free(new_ctx); | ||
| 815 | return ret; | 808 | return ret; |
| 816 | } | 809 | } |
| 817 | 810 | ||
| @@ -951,8 +944,7 @@ ec_GFp_simple_dbl(const EC_GROUP * group, EC_POINT * r, const EC_POINT * a, BN_C | |||
| 951 | 944 | ||
| 952 | err: | 945 | err: |
| 953 | BN_CTX_end(ctx); | 946 | BN_CTX_end(ctx); |
| 954 | if (new_ctx != NULL) | 947 | BN_CTX_free(new_ctx); |
| 955 | BN_CTX_free(new_ctx); | ||
| 956 | return ret; | 948 | return ret; |
| 957 | } | 949 | } |
| 958 | 950 | ||
| @@ -1071,8 +1063,7 @@ ec_GFp_simple_is_on_curve(const EC_GROUP * group, const EC_POINT * point, BN_CTX | |||
| 1071 | 1063 | ||
| 1072 | err: | 1064 | err: |
| 1073 | BN_CTX_end(ctx); | 1065 | BN_CTX_end(ctx); |
| 1074 | if (new_ctx != NULL) | 1066 | BN_CTX_free(new_ctx); |
| 1075 | BN_CTX_free(new_ctx); | ||
| 1076 | return ret; | 1067 | return ret; |
| 1077 | } | 1068 | } |
| 1078 | 1069 | ||
| @@ -1172,8 +1163,7 @@ ec_GFp_simple_cmp(const EC_GROUP * group, const EC_POINT * a, const EC_POINT * b | |||
| 1172 | 1163 | ||
| 1173 | end: | 1164 | end: |
| 1174 | BN_CTX_end(ctx); | 1165 | BN_CTX_end(ctx); |
| 1175 | if (new_ctx != NULL) | 1166 | BN_CTX_free(new_ctx); |
| 1176 | BN_CTX_free(new_ctx); | ||
| 1177 | return ret; | 1167 | return ret; |
| 1178 | } | 1168 | } |
| 1179 | 1169 | ||
| @@ -1211,8 +1201,7 @@ ec_GFp_simple_make_affine(const EC_GROUP * group, EC_POINT * point, BN_CTX * ctx | |||
| 1211 | 1201 | ||
| 1212 | err: | 1202 | err: |
| 1213 | BN_CTX_end(ctx); | 1203 | BN_CTX_end(ctx); |
| 1214 | if (new_ctx != NULL) | 1204 | BN_CTX_free(new_ctx); |
| 1215 | BN_CTX_free(new_ctx); | ||
| 1216 | return ret; | 1205 | return ret; |
| 1217 | } | 1206 | } |
| 1218 | 1207 | ||
| @@ -1377,16 +1366,14 @@ ec_GFp_simple_points_make_affine(const EC_GROUP * group, size_t num, EC_POINT * | |||
| 1377 | 1366 | ||
| 1378 | err: | 1367 | err: |
| 1379 | BN_CTX_end(ctx); | 1368 | BN_CTX_end(ctx); |
| 1380 | if (new_ctx != NULL) | 1369 | BN_CTX_free(new_ctx); |
| 1381 | BN_CTX_free(new_ctx); | ||
| 1382 | if (heap != NULL) { | 1370 | if (heap != NULL) { |
| 1383 | /* | 1371 | /* |
| 1384 | * heap[pow2/2] .. heap[pow2-1] have not been allocated | 1372 | * heap[pow2/2] .. heap[pow2-1] have not been allocated |
| 1385 | * locally! | 1373 | * locally! |
| 1386 | */ | 1374 | */ |
| 1387 | for (i = pow2 / 2 - 1; i > 0; i--) { | 1375 | for (i = pow2 / 2 - 1; i > 0; i--) { |
| 1388 | if (heap[i] != NULL) | 1376 | BN_clear_free(heap[i]); |
| 1389 | BN_clear_free(heap[i]); | ||
| 1390 | } | 1377 | } |
| 1391 | free(heap); | 1378 | free(heap); |
| 1392 | } | 1379 | } |
