diff options
| author | tb <> | 2023-03-02 21:07:21 +0000 |
|---|---|---|
| committer | tb <> | 2023-03-02 21:07:21 +0000 |
| commit | d9864f0c0f84dbed4c487c2847edf7f2be50b0ca (patch) | |
| tree | 0389eecd430dd31a9c37ea85e9efab1d00797734 /src | |
| parent | a2ac753df09f981de1e8df4dbb6e9e9ad61c8b53 (diff) | |
| download | openbsd-d9864f0c0f84dbed4c487c2847edf7f2be50b0ca.tar.gz openbsd-d9864f0c0f84dbed4c487c2847edf7f2be50b0ca.tar.bz2 openbsd-d9864f0c0f84dbed4c487c2847edf7f2be50b0ca.zip | |
Nitpick error checks of BN_get_mem_data()
BN_get_mem_data() returns a non-positive long on error, so assigning
it to a size_t and displaying that in error messages is incorrect.
Diffstat (limited to 'src')
| -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 | ||
