diff options
| author | tb <> | 2024-05-29 16:19:50 +0000 |
|---|---|---|
| committer | tb <> | 2024-05-29 16:19:50 +0000 |
| commit | a24ff3d0b2b70182ae2b0264f9cc72bce4274fe2 (patch) | |
| tree | 189fc9f7290c3f8cc9160481221701af08beff9c | |
| parent | 2c2ad75207e4fbd435dd4424618c1ba29160e271 (diff) | |
| download | openbsd-a24ff3d0b2b70182ae2b0264f9cc72bce4274fe2.tar.gz openbsd-a24ff3d0b2b70182ae2b0264f9cc72bce4274fe2.tar.bz2 openbsd-a24ff3d0b2b70182ae2b0264f9cc72bce4274fe2.zip | |
Add regress coverage for i2d_ASN1_OBJECT() fixes
| -rw-r--r-- | src/regress/lib/libcrypto/asn1/asn1object.c | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/src/regress/lib/libcrypto/asn1/asn1object.c b/src/regress/lib/libcrypto/asn1/asn1object.c index 539c6aa950..56382a4edc 100644 --- a/src/regress/lib/libcrypto/asn1/asn1object.c +++ b/src/regress/lib/libcrypto/asn1/asn1object.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: asn1object.c,v 1.10 2022/11/26 16:08:56 tb Exp $ */ | 1 | /* $OpenBSD: asn1object.c,v 1.11 2024/05/29 16:19:50 tb Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2017, 2021, 2022 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2017, 2021, 2022 Joel Sing <jsing@openbsd.org> |
| 4 | * | 4 | * |
| @@ -25,9 +25,14 @@ | |||
| 25 | #include "asn1_local.h" | 25 | #include "asn1_local.h" |
| 26 | 26 | ||
| 27 | static void | 27 | static void |
| 28 | hexdump(const unsigned char *buf, size_t len) | 28 | hexdump(const unsigned char *buf, int len) |
| 29 | { | 29 | { |
| 30 | size_t i; | 30 | int i; |
| 31 | |||
| 32 | if (len <= 0) { | ||
| 33 | fprintf(stderr, "<negative length %d>\n", len); | ||
| 34 | return; | ||
| 35 | } | ||
| 31 | 36 | ||
| 32 | for (i = 1; i <= len; i++) | 37 | for (i = 1; i <= len; i++) |
| 33 | fprintf(stderr, " 0x%02hhx,%s", buf[i - 1], i % 8 ? "" : "\n"); | 38 | fprintf(stderr, " 0x%02hhx,%s", buf[i - 1], i % 8 ? "" : "\n"); |
| @@ -223,6 +228,7 @@ do_asn1_object_test(struct asn1_object_test *aot) | |||
| 223 | ASN1_OBJECT *aobj = NULL; | 228 | ASN1_OBJECT *aobj = NULL; |
| 224 | uint8_t buf[1024]; | 229 | uint8_t buf[1024]; |
| 225 | const uint8_t *p; | 230 | const uint8_t *p; |
| 231 | uint8_t *der = NULL; | ||
| 226 | uint8_t *q; | 232 | uint8_t *q; |
| 227 | int err, ret; | 233 | int err, ret; |
| 228 | int failed = 1; | 234 | int failed = 1; |
| @@ -268,6 +274,15 @@ do_asn1_object_test(struct asn1_object_test *aot) | |||
| 268 | aot->der_len)) | 274 | aot->der_len)) |
| 269 | goto failed; | 275 | goto failed; |
| 270 | 276 | ||
| 277 | der = NULL; | ||
| 278 | ret = i2d_ASN1_OBJECT(aobj, &der); | ||
| 279 | if (!asn1_compare_bytes("ASN1_OBJECT DER", der, ret, aot->der, | ||
| 280 | aot->der_len)) | ||
| 281 | goto failed; | ||
| 282 | |||
| 283 | free(der); | ||
| 284 | der = NULL; | ||
| 285 | |||
| 271 | ASN1_OBJECT_free(aobj); | 286 | ASN1_OBJECT_free(aobj); |
| 272 | aobj = NULL; | 287 | aobj = NULL; |
| 273 | 288 | ||
| @@ -300,6 +315,7 @@ do_asn1_object_test(struct asn1_object_test *aot) | |||
| 300 | 315 | ||
| 301 | failed: | 316 | failed: |
| 302 | ASN1_OBJECT_free(aobj); | 317 | ASN1_OBJECT_free(aobj); |
| 318 | free(der); | ||
| 303 | 319 | ||
| 304 | return failed; | 320 | return failed; |
| 305 | } | 321 | } |
| @@ -455,6 +471,7 @@ asn1_object_large_oid_test(void) | |||
| 455 | ASN1_OBJECT *aobj = NULL; | 471 | ASN1_OBJECT *aobj = NULL; |
| 456 | uint8_t buf[1024]; | 472 | uint8_t buf[1024]; |
| 457 | const uint8_t *p; | 473 | const uint8_t *p; |
| 474 | uint8_t *der = NULL; | ||
| 458 | uint8_t *q; | 475 | uint8_t *q; |
| 459 | int ret; | 476 | int ret; |
| 460 | int failed = 1; | 477 | int failed = 1; |
| @@ -475,8 +492,15 @@ asn1_object_large_oid_test(void) | |||
| 475 | sizeof(asn1_large_oid_der))) | 492 | sizeof(asn1_large_oid_der))) |
| 476 | goto failed; | 493 | goto failed; |
| 477 | 494 | ||
| 495 | der = NULL; | ||
| 496 | ret = i2d_ASN1_OBJECT(aobj, &der); | ||
| 497 | if (!asn1_compare_bytes("ASN1_OBJECT DER", der, ret, asn1_large_oid_der, | ||
| 498 | sizeof(asn1_large_oid_der))) | ||
| 499 | goto failed; | ||
| 500 | |||
| 478 | failed: | 501 | failed: |
| 479 | ASN1_OBJECT_free(aobj); | 502 | ASN1_OBJECT_free(aobj); |
| 503 | free(der); | ||
| 480 | 504 | ||
| 481 | return failed; | 505 | return failed; |
| 482 | } | 506 | } |
