summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortb <>2021-12-29 22:54:41 +0000
committertb <>2021-12-29 22:54:41 +0000
commitdfa5fdc7d89b1bcb09c921c1749bca259f4a2ba3 (patch)
treeb44b325b1847f862dc6d387f1deca1d30ea2e725
parenta514d94d6116d34e0b60b6dd570ce14347209f5e (diff)
downloadopenbsd-dfa5fdc7d89b1bcb09c921c1749bca259f4a2ba3.tar.gz
openbsd-dfa5fdc7d89b1bcb09c921c1749bca259f4a2ba3.tar.bz2
openbsd-dfa5fdc7d89b1bcb09c921c1749bca259f4a2ba3.zip
Check return values of EVP_* API
CID 345158
-rw-r--r--src/regress/lib/libcrypto/sha1/sha1test.c30
1 files changed, 24 insertions, 6 deletions
diff --git a/src/regress/lib/libcrypto/sha1/sha1test.c b/src/regress/lib/libcrypto/sha1/sha1test.c
index f1cf09d552..168b422d7a 100644
--- a/src/regress/lib/libcrypto/sha1/sha1test.c
+++ b/src/regress/lib/libcrypto/sha1/sha1test.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sha1test.c,v 1.5 2021/12/29 22:53:04 tb Exp $ */ 1/* $OpenBSD: sha1test.c,v 1.6 2021/12/29 22:54:41 tb Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -95,7 +95,11 @@ main(int argc, char *argv[])
95 R = ret; 95 R = ret;
96 i = 1; 96 i = 1;
97 while (*P != NULL) { 97 while (*P != NULL) {
98 EVP_Digest(*P, strlen((char *)*P), md, NULL, EVP_sha1(), NULL); 98 if (!EVP_Digest(*P, strlen((char *)*P), md, NULL, EVP_sha1(),
99 NULL)) {
100 printf("EVP_Digest failed\n");
101 goto err;
102 }
99 p = pt(md); 103 p = pt(md);
100 if (strcmp(p, (char *)*R) != 0) { 104 if (strcmp(p, (char *)*R) != 0) {
101 printf("error calculating SHA1 on '%s'\n", *P); 105 printf("error calculating SHA1 on '%s'\n", *P);
@@ -109,10 +113,20 @@ main(int argc, char *argv[])
109 } 113 }
110 114
111 memset(buf, 'a', 1000); 115 memset(buf, 'a', 1000);
112 EVP_DigestInit_ex(c, EVP_sha1(), NULL); 116 if (!EVP_DigestInit_ex(c, EVP_sha1(), NULL)) {
113 for (i = 0; i < 1000; i++) 117 printf("EVP_DigestInit_ex failed\n");
114 EVP_DigestUpdate(c, buf, 1000); 118 goto err;
115 EVP_DigestFinal_ex(c, md, NULL); 119 }
120 for (i = 0; i < 1000; i++) {
121 if (!EVP_DigestUpdate(c, buf, 1000)) {
122 printf("EVP_DigestUpdate failed\n");
123 goto err;
124 }
125 }
126 if (!EVP_DigestFinal_ex(c, md, NULL)) {
127 printf("EVP_DigestFinal_ex failed\n");
128 goto err;
129 }
116 p = pt(md); 130 p = pt(md);
117 131
118 r = bigret; 132 r = bigret;
@@ -125,6 +139,10 @@ main(int argc, char *argv[])
125 139
126 EVP_MD_CTX_free(c); 140 EVP_MD_CTX_free(c);
127 exit(err); 141 exit(err);
142
143 err:
144 EVP_MD_CTX_free(c);
145 exit(1);
128} 146}
129 147
130static char * 148static char *