diff options
-rw-r--r-- | src/regress/lib/libcrypto/cms/cmstest.c | 42 |
1 files changed, 27 insertions, 15 deletions
diff --git a/src/regress/lib/libcrypto/cms/cmstest.c b/src/regress/lib/libcrypto/cms/cmstest.c index 4ff1e1efb8..9046ba1a1b 100644 --- a/src/regress/lib/libcrypto/cms/cmstest.c +++ b/src/regress/lib/libcrypto/cms/cmstest.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: cmstest.c,v 1.5 2022/06/22 09:56:45 tb Exp $ */ | 1 | /* $OpenBSD: cmstest.c,v 1.6 2023/03/02 21:07:21 tb Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2019 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2019 Joel Sing <jsing@openbsd.org> |
4 | * | 4 | * |
@@ -118,6 +118,7 @@ test_cms_encrypt_decrypt(void) | |||
118 | BIO *bio_out = NULL; | 118 | BIO *bio_out = NULL; |
119 | X509 *cert = NULL; | 119 | X509 *cert = NULL; |
120 | size_t len; | 120 | size_t len; |
121 | long mem_len; | ||
121 | char *p; | 122 | char *p; |
122 | int failed = 1; | 123 | int failed = 1; |
123 | 124 | ||
@@ -166,21 +167,26 @@ test_cms_encrypt_decrypt(void) | |||
166 | goto failure; | 167 | goto failure; |
167 | } | 168 | } |
168 | 169 | ||
169 | if ((len = BIO_get_mem_data(bio_mem, &p)) != strlen(cms_msg)) { | 170 | if ((mem_len = BIO_get_mem_data(bio_mem, &p)) <= 0) { |
170 | fprintf(stderr, "FAIL: CMS decrypt returned %zu bytes, " | 171 | fprintf(stderr, "FAIL: BIO_get_mem_data returned %ld\n", |
171 | "want %zu bytes\n", len, strlen(cms_msg)); | 172 | mem_len); |
173 | goto failure; | ||
174 | } | ||
175 | if ((len = strlen(cms_msg)) != (size_t)mem_len) { | ||
176 | fprintf(stderr, "FAIL: CMS decrypt returned %ld bytes, " | ||
177 | "want %zu bytes\n", mem_len, len); | ||
172 | fprintf(stderr, "Got CMS data:\n"); | 178 | fprintf(stderr, "Got CMS data:\n"); |
173 | hexdump(p, len); | 179 | hexdump(p, mem_len); |
174 | fprintf(stderr, "Want CMS data:\n"); | 180 | fprintf(stderr, "Want CMS data:\n"); |
175 | hexdump(cms_msg, strlen(cms_msg)); | 181 | hexdump(cms_msg, len); |
176 | goto failure; | 182 | goto failure; |
177 | } | 183 | } |
178 | if (memcmp(p, cms_msg, len) != 0) { | 184 | if (memcmp(p, cms_msg, len) != 0) { |
179 | fprintf(stderr, "FAIL: CMS decrypt message differs"); | 185 | fprintf(stderr, "FAIL: CMS decrypt message differs"); |
180 | fprintf(stderr, "Got CMS data:\n"); | 186 | fprintf(stderr, "Got CMS data:\n"); |
181 | hexdump(p, len); | 187 | hexdump(p, mem_len); |
182 | fprintf(stderr, "Want CMS data:\n"); | 188 | fprintf(stderr, "Want CMS data:\n"); |
183 | hexdump(cms_msg, strlen(cms_msg)); | 189 | hexdump(cms_msg, len); |
184 | goto failure; | 190 | goto failure; |
185 | } | 191 | } |
186 | 192 | ||
@@ -209,6 +215,7 @@ test_cms_sign_verify(void) | |||
209 | X509 *cert = NULL; | 215 | X509 *cert = NULL; |
210 | X509 *ca = NULL; | 216 | X509 *ca = NULL; |
211 | size_t len; | 217 | size_t len; |
218 | long mem_len; | ||
212 | char *p; | 219 | char *p; |
213 | int failed = 1; | 220 | int failed = 1; |
214 | 221 | ||
@@ -267,21 +274,26 @@ test_cms_sign_verify(void) | |||
267 | goto failure; | 274 | goto failure; |
268 | } | 275 | } |
269 | 276 | ||
270 | if ((len = BIO_get_mem_data(bio_mem, &p)) != strlen(cms_msg)) { | 277 | if ((mem_len = BIO_get_mem_data(bio_mem, &p)) <= 0) { |
271 | fprintf(stderr, "FAIL: CMS verify returned %zu bytes, " | 278 | fprintf(stderr, "FAIL: BIO_get_mem_data returned %ld\n", |
272 | "want %zu bytes\n", len, strlen(cms_msg)); | 279 | mem_len); |
280 | goto failure; | ||
281 | } | ||
282 | if ((len = strlen(cms_msg)) != (size_t)mem_len) { | ||
283 | fprintf(stderr, "FAIL: CMS verify returned %ld bytes, " | ||
284 | "want %zu bytes\n", mem_len, len); | ||
273 | fprintf(stderr, "Got CMS data:\n"); | 285 | fprintf(stderr, "Got CMS data:\n"); |
274 | hexdump(p, len); | 286 | hexdump(p, mem_len); |
275 | fprintf(stderr, "Want CMS data:\n"); | 287 | fprintf(stderr, "Want CMS data:\n"); |
276 | hexdump(cms_msg, strlen(cms_msg)); | 288 | hexdump(cms_msg, len); |
277 | goto failure; | 289 | goto failure; |
278 | } | 290 | } |
279 | if (memcmp(p, cms_msg, len) != 0) { | 291 | if (memcmp(p, cms_msg, len) != 0) { |
280 | fprintf(stderr, "FAIL: CMS verify message differs"); | 292 | fprintf(stderr, "FAIL: CMS verify message differs"); |
281 | fprintf(stderr, "Got CMS data:\n"); | 293 | fprintf(stderr, "Got CMS data:\n"); |
282 | hexdump(p, len); | 294 | hexdump(p, mem_len); |
283 | fprintf(stderr, "Want CMS data:\n"); | 295 | fprintf(stderr, "Want CMS data:\n"); |
284 | hexdump(cms_msg, strlen(cms_msg)); | 296 | hexdump(cms_msg, len); |
285 | goto failure; | 297 | goto failure; |
286 | } | 298 | } |
287 | 299 | ||