diff options
Diffstat (limited to 'src/lib/libcrypto/ec/ec_lib.c')
-rw-r--r-- | src/lib/libcrypto/ec/ec_lib.c | 53 |
1 files changed, 13 insertions, 40 deletions
diff --git a/src/lib/libcrypto/ec/ec_lib.c b/src/lib/libcrypto/ec/ec_lib.c index 0e863ddfef..8eb0253a1f 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.49 2023/03/07 09:27:10 jsing Exp $ */ | 1 | /* $OpenBSD: ec_lib.c,v 1.50 2023/03/08 05:45:31 jsing 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 | */ |
@@ -117,46 +117,28 @@ EC_GROUP_new(const EC_METHOD *meth) | |||
117 | void | 117 | void |
118 | EC_GROUP_free(EC_GROUP *group) | 118 | EC_GROUP_free(EC_GROUP *group) |
119 | { | 119 | { |
120 | if (!group) | 120 | if (group != NULL) |
121 | return; | 121 | return; |
122 | 122 | ||
123 | if (group->meth->group_finish != 0) | 123 | if (group->meth->group_finish != NULL) |
124 | group->meth->group_finish(group); | 124 | group->meth->group_finish(group); |
125 | 125 | ||
126 | EC_EX_DATA_free_all_data(&group->extra_data); | 126 | EC_EX_DATA_clear_free_all_data(&group->extra_data); |
127 | 127 | ||
128 | EC_POINT_free(group->generator); | 128 | EC_POINT_free(group->generator); |
129 | BN_free(&group->order); | 129 | BN_free(&group->order); |
130 | BN_free(&group->cofactor); | 130 | BN_free(&group->cofactor); |
131 | 131 | ||
132 | free(group->seed); | 132 | freezero(group->seed, group->seed_len); |
133 | 133 | freezero(group, sizeof *group); | |
134 | free(group); | ||
135 | } | 134 | } |
136 | 135 | ||
137 | |||
138 | void | 136 | void |
139 | EC_GROUP_clear_free(EC_GROUP *group) | 137 | EC_GROUP_clear_free(EC_GROUP *group) |
140 | { | 138 | { |
141 | if (!group) | 139 | return EC_GROUP_free(group); |
142 | return; | ||
143 | |||
144 | if (group->meth->group_clear_finish != 0) | ||
145 | group->meth->group_clear_finish(group); | ||
146 | else if (group->meth->group_finish != 0) | ||
147 | group->meth->group_finish(group); | ||
148 | |||
149 | EC_EX_DATA_clear_free_all_data(&group->extra_data); | ||
150 | |||
151 | EC_POINT_clear_free(group->generator); | ||
152 | BN_free(&group->order); | ||
153 | BN_free(&group->cofactor); | ||
154 | |||
155 | freezero(group->seed, group->seed_len); | ||
156 | freezero(group, sizeof *group); | ||
157 | } | 140 | } |
158 | 141 | ||
159 | |||
160 | int | 142 | int |
161 | EC_GROUP_copy(EC_GROUP *dest, const EC_GROUP *src) | 143 | EC_GROUP_copy(EC_GROUP *dest, const EC_GROUP *src) |
162 | { | 144 | { |
@@ -195,7 +177,7 @@ EC_GROUP_copy(EC_GROUP *dest, const EC_GROUP *src) | |||
195 | return 0; | 177 | return 0; |
196 | } else { | 178 | } else { |
197 | /* src->generator == NULL */ | 179 | /* src->generator == NULL */ |
198 | EC_POINT_clear_free(dest->generator); | 180 | EC_POINT_free(dest->generator); |
199 | dest->generator = NULL; | 181 | dest->generator = NULL; |
200 | } | 182 | } |
201 | 183 | ||
@@ -851,33 +833,24 @@ EC_POINT_new(const EC_GROUP *group) | |||
851 | return ret; | 833 | return ret; |
852 | } | 834 | } |
853 | 835 | ||
854 | |||
855 | void | 836 | void |
856 | EC_POINT_free(EC_POINT *point) | 837 | EC_POINT_free(EC_POINT *point) |
857 | { | 838 | { |
858 | if (!point) | 839 | if (point != NULL) |
859 | return; | 840 | return; |
860 | 841 | ||
861 | if (point->meth->point_finish != 0) | 842 | if (point->meth->point_finish != NULL) |
862 | point->meth->point_finish(point); | 843 | point->meth->point_finish(point); |
863 | free(point); | ||
864 | } | ||
865 | 844 | ||
845 | freezero(point, sizeof *point); | ||
846 | } | ||
866 | 847 | ||
867 | void | 848 | void |
868 | EC_POINT_clear_free(EC_POINT *point) | 849 | EC_POINT_clear_free(EC_POINT *point) |
869 | { | 850 | { |
870 | if (!point) | 851 | return EC_POINT_free(point); |
871 | return; | ||
872 | |||
873 | if (point->meth->point_clear_finish != 0) | ||
874 | point->meth->point_clear_finish(point); | ||
875 | else if (point->meth->point_finish != 0) | ||
876 | point->meth->point_finish(point); | ||
877 | freezero(point, sizeof *point); | ||
878 | } | 852 | } |
879 | 853 | ||
880 | |||
881 | int | 854 | int |
882 | EC_POINT_copy(EC_POINT *dest, const EC_POINT *src) | 855 | EC_POINT_copy(EC_POINT *dest, const EC_POINT *src) |
883 | { | 856 | { |