summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortb <>2021-12-29 23:02:00 +0000
committertb <>2021-12-29 23:02:00 +0000
commit1070f2fba37df08640bb6c8b4a9bbe8ac77bcb8a (patch)
treea3957ac709d56d65e3240c2d6f7370d132ce4d8a
parent6e87beb01f321dacac23e43144b6ba35e1ff6ef5 (diff)
downloadopenbsd-1070f2fba37df08640bb6c8b4a9bbe8ac77bcb8a.tar.gz
openbsd-1070f2fba37df08640bb6c8b4a9bbe8ac77bcb8a.tar.bz2
openbsd-1070f2fba37df08640bb6c8b4a9bbe8ac77bcb8a.zip
More EVP_* return value checks
CID 345152
-rw-r--r--src/regress/lib/libcrypto/sha512/sha512test.c82
1 files changed, 60 insertions, 22 deletions
diff --git a/src/regress/lib/libcrypto/sha512/sha512test.c b/src/regress/lib/libcrypto/sha512/sha512test.c
index f8e37a20fa..0d5121036b 100644
--- a/src/regress/lib/libcrypto/sha512/sha512test.c
+++ b/src/regress/lib/libcrypto/sha512/sha512test.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sha512test.c,v 1.6 2021/11/18 21:37:57 tb Exp $ */ 1/* $OpenBSD: sha512test.c,v 1.7 2021/12/29 23:02:00 tb Exp $ */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 2004 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 2004 The OpenSSL Project. All rights reserved.
4 * ==================================================================== 4 * ====================================================================
@@ -81,10 +81,11 @@ unsigned char app_d3[SHA384_DIGEST_LENGTH] = {
81}; 81};
82 82
83int 83int
84main(int argc, char **argv) { 84main(int argc, char **argv)
85{
85 unsigned char md[SHA512_DIGEST_LENGTH]; 86 unsigned char md[SHA512_DIGEST_LENGTH];
86 int i; 87 int i;
87 EVP_MD_CTX *evp; 88 EVP_MD_CTX *evp = NULL;
88 89
89#ifdef OPENSSL_IA32_SSE2 90#ifdef OPENSSL_IA32_SSE2
90 /* Alternative to this is to call OpenSSL_add_all_algorithms... 91 /* Alternative to this is to call OpenSSL_add_all_algorithms...
@@ -99,11 +100,12 @@ main(int argc, char **argv) {
99 100
100 fprintf(stdout, "Testing SHA-512 "); 101 fprintf(stdout, "Testing SHA-512 ");
101 102
102 EVP_Digest("abc", 3, md, NULL, EVP_sha512(), NULL); 103 if (!EVP_Digest("abc", 3, md, NULL, EVP_sha512(), NULL))
104 goto err;
103 if (memcmp(md, app_c1, sizeof(app_c1))) { 105 if (memcmp(md, app_c1, sizeof(app_c1))) {
104 fflush(stdout); 106 fflush(stdout);
105 fprintf(stderr, "\nTEST 1 of 3 failed.\n"); 107 fprintf(stderr, "\nTEST 1 of 3 failed.\n");
106 return 1; 108 goto err;
107 } 109 }
108 fprintf(stdout, "."); 110 fprintf(stdout, ".");
109 fflush(stdout); 111 fflush(stdout);
@@ -117,7 +119,7 @@ main(int argc, char **argv) {
117 if (memcmp(md, app_c2, sizeof(app_c2))) { 119 if (memcmp(md, app_c2, sizeof(app_c2))) {
118 fflush(stdout); 120 fflush(stdout);
119 fprintf(stderr, "\nTEST 2 of 3 failed.\n"); 121 fprintf(stderr, "\nTEST 2 of 3 failed.\n");
120 return 1; 122 goto err;
121 } 123 }
122 fprintf(stdout, "."); 124 fprintf(stdout, ".");
123 fflush(stdout); 125 fflush(stdout);
@@ -125,11 +127,16 @@ main(int argc, char **argv) {
125 if ((evp = EVP_MD_CTX_new()) == NULL) { 127 if ((evp = EVP_MD_CTX_new()) == NULL) {
126 fflush(stdout); 128 fflush(stdout);
127 fprintf(stderr, "\nEVP_MD_CTX_new() failed.\n"); 129 fprintf(stderr, "\nEVP_MD_CTX_new() failed.\n");
128 return 1; 130 goto err;
131 }
132 if (!EVP_DigestInit_ex(evp, EVP_sha512(), NULL)) {
133 fflush(stdout);
134 fprintf(stderr, "\nEVP_DigestInit_ex failed.\n");
135 goto err;
129 } 136 }
130 EVP_DigestInit_ex(evp, EVP_sha512(), NULL); 137
131 for (i = 0; i < 1000000; i += 288) 138 for (i = 0; i < 1000000; i += 288) {
132 EVP_DigestUpdate(evp, 139 if (!EVP_DigestUpdate(evp,
133 "aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa" 140 "aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa"
134 "aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa" 141 "aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa"
135 "aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa" 142 "aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa"
@@ -139,14 +146,27 @@ main(int argc, char **argv) {
139 "aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa" 146 "aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa"
140 "aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa" 147 "aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa"
141 "aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa", 148 "aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa",
142 (1000000 - i) < 288 ? 1000000 - i : 288); 149 (1000000 - i) < 288 ? 1000000 - i : 288)) {
143 EVP_DigestFinal_ex(evp, md, NULL); 150 fflush(stdout);
144 EVP_MD_CTX_reset(evp); 151 fprintf(stderr, "\nEVP_DigestUpdate failed.\n");
152 goto err;
153 }
154 }
155 if (!EVP_DigestFinal_ex(evp, md, NULL)) {
156 fflush(stdout);
157 fprintf(stderr, "\nEVP_DigestFinal failed.\n");
158 goto err;
159 }
160 if (!EVP_MD_CTX_reset(evp)) {
161 fflush(stdout);
162 fprintf(stderr, "\nEVP_MD_CTX_reset failed.\n");
163 goto err;
164 }
145 165
146 if (memcmp(md, app_c3, sizeof(app_c3))) { 166 if (memcmp(md, app_c3, sizeof(app_c3))) {
147 fflush(stdout); 167 fflush(stdout);
148 fprintf(stderr, "\nTEST 3 of 3 failed.\n"); 168 fprintf(stderr, "\nTEST 3 of 3 failed.\n");
149 return 1; 169 goto err;
150 } 170 }
151 fprintf(stdout, "."); 171 fprintf(stdout, ".");
152 fflush(stdout); 172 fflush(stdout);
@@ -160,7 +180,7 @@ main(int argc, char **argv) {
160 if (memcmp(md, app_d1, sizeof(app_d1))) { 180 if (memcmp(md, app_d1, sizeof(app_d1))) {
161 fflush(stdout); 181 fflush(stdout);
162 fprintf(stderr, "\nTEST 1 of 3 failed.\n"); 182 fprintf(stderr, "\nTEST 1 of 3 failed.\n");
163 return 1; 183 goto err;
164 } 184 }
165 fprintf(stdout, "."); 185 fprintf(stdout, ".");
166 fflush(stdout); 186 fflush(stdout);
@@ -174,24 +194,38 @@ main(int argc, char **argv) {
174 if (memcmp(md, app_d2, sizeof(app_d2))) { 194 if (memcmp(md, app_d2, sizeof(app_d2))) {
175 fflush(stdout); 195 fflush(stdout);
176 fprintf(stderr, "\nTEST 2 of 3 failed.\n"); 196 fprintf(stderr, "\nTEST 2 of 3 failed.\n");
177 return 1; 197 goto err;
178 } 198 }
179 fprintf(stdout, "."); 199 fprintf(stdout, ".");
180 fflush(stdout); 200 fflush(stdout);
181 201
182 EVP_DigestInit_ex(evp, EVP_sha384(), NULL); 202 if (!EVP_DigestInit_ex(evp, EVP_sha384(), NULL)) {
183 for (i = 0; i < 1000000; i += 64) 203 fflush(stdout);
184 EVP_DigestUpdate(evp, 204 fprintf(stderr, "\nEVP_DigestInit_ex failed.\n");
205 goto err;
206 }
207 for (i = 0; i < 1000000; i += 64) {
208 if (!EVP_DigestUpdate(evp,
185 "aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa" 209 "aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa"
186 "aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa", 210 "aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa",
187 (1000000 - i) < 64 ? 1000000 - i : 64); 211 (1000000 - i) < 64 ? 1000000 - i : 64)) {
188 EVP_DigestFinal_ex(evp, md, NULL); 212 fflush(stdout);
213 fprintf(stderr, "\nEVP_DigestUpdate failed.\n");
214 goto err;
215 }
216 }
217 if (!EVP_DigestFinal_ex(evp, md, NULL)) {
218 fflush(stdout);
219 fprintf(stderr, "\nEVP_DigestFinal_ex failed.\n");
220 goto err;
221 }
189 EVP_MD_CTX_free(evp); 222 EVP_MD_CTX_free(evp);
223 evp = NULL;
190 224
191 if (memcmp(md, app_d3, sizeof(app_d3))) { 225 if (memcmp(md, app_d3, sizeof(app_d3))) {
192 fflush(stdout); 226 fflush(stdout);
193 fprintf(stderr, "\nTEST 3 of 3 failed.\n"); 227 fprintf(stderr, "\nTEST 3 of 3 failed.\n");
194 return 1; 228 goto err;
195 } 229 }
196 fprintf(stdout, "."); 230 fprintf(stdout, ".");
197 fflush(stdout); 231 fflush(stdout);
@@ -200,5 +234,9 @@ main(int argc, char **argv) {
200 fflush(stdout); 234 fflush(stdout);
201 235
202 return 0; 236 return 0;
237
238 err:
239 EVP_MD_CTX_free(evp);
240 return 1;
203} 241}
204#endif 242#endif