diff options
-rw-r--r-- | src/regress/lib/libcrypto/asn1/asn1time.c | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/src/regress/lib/libcrypto/asn1/asn1time.c b/src/regress/lib/libcrypto/asn1/asn1time.c index b3418c4616..f764df12d5 100644 --- a/src/regress/lib/libcrypto/asn1/asn1time.c +++ b/src/regress/lib/libcrypto/asn1/asn1time.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: asn1time.c,v 1.22 2024/02/18 16:32:29 tb Exp $ */ | 1 | /* $OpenBSD: asn1time.c,v 1.23 2024/02/18 16:56:33 tb Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2015 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2015 Joel Sing <jsing@openbsd.org> |
4 | * Copyright (c) 2024 Google Inc. | 4 | * Copyright (c) 2024 Google Inc. |
@@ -576,7 +576,7 @@ static int | |||
576 | asn1_time_overflow(void) | 576 | asn1_time_overflow(void) |
577 | { | 577 | { |
578 | struct tm overflow_year = {0}, overflow_month = {0}; | 578 | struct tm overflow_year = {0}, overflow_month = {0}; |
579 | struct tm copy, max_time = {0}, min_time = {0}; | 579 | struct tm copy, max_time = {0}, min_time = {0}, zero = {0}; |
580 | int64_t valid_time_range = INT64_C(315569519999); | 580 | int64_t valid_time_range = INT64_C(315569519999); |
581 | int64_t posix_u64; | 581 | int64_t posix_u64; |
582 | time_t posix_time; | 582 | time_t posix_time; |
@@ -654,6 +654,12 @@ asn1_time_overflow(void) | |||
654 | "fail for maximum time\n"); | 654 | "fail for maximum time\n"); |
655 | goto err; | 655 | goto err; |
656 | } | 656 | } |
657 | if (memcmp(&zero, &max_time, sizeof(max_time)) != 0) { | ||
658 | fprintf(stderr, "FAIL: failing OPENSSL_gmtime_adj didn't " | ||
659 | "zero out max_time\n"); | ||
660 | goto err; | ||
661 | } | ||
662 | max_time = copy; | ||
657 | 663 | ||
658 | min_time.tm_year = 0 - 1900; | 664 | min_time.tm_year = 0 - 1900; |
659 | min_time.tm_mon = 1 - 1; | 665 | min_time.tm_mon = 1 - 1; |
@@ -678,6 +684,12 @@ asn1_time_overflow(void) | |||
678 | "fail for minimum time\n"); | 684 | "fail for minimum time\n"); |
679 | goto err; | 685 | goto err; |
680 | } | 686 | } |
687 | if (memcmp(&zero, &min_time, sizeof(min_time)) != 0) { | ||
688 | fprintf(stderr, "FAIL: failing OPENSSL_gmtime_adj didn't " | ||
689 | "zero out max_time\n"); | ||
690 | goto err; | ||
691 | } | ||
692 | min_time = copy; | ||
681 | 693 | ||
682 | /* Test that we can offset by the valid minimum and maximum times. */ | 694 | /* Test that we can offset by the valid minimum and maximum times. */ |
683 | if (!OPENSSL_gmtime_adj(©, 0, valid_time_range)) { | 695 | if (!OPENSSL_gmtime_adj(©, 0, valid_time_range)) { |
@@ -686,8 +698,10 @@ asn1_time_overflow(void) | |||
686 | goto err; | 698 | goto err; |
687 | } | 699 | } |
688 | if (memcmp(©, &max_time, sizeof(max_time)) != 0) { | 700 | if (memcmp(©, &max_time, sizeof(max_time)) != 0) { |
689 | fprintf(stderr, "FAIL: maximally adjusted copy didn't match" | 701 | fprintf(stderr, "FAIL: maximally adjusted copy didn't match " |
690 | "max_time\n"); | 702 | "max_time\n"); |
703 | hexdump((unsigned char *)&max_time, sizeof(max_time)); | ||
704 | hexdump((unsigned char *)©, sizeof(copy)); | ||
691 | goto err; | 705 | goto err; |
692 | } | 706 | } |
693 | if (!OPENSSL_gmtime_adj(©, 0, -valid_time_range)) { | 707 | if (!OPENSSL_gmtime_adj(©, 0, -valid_time_range)) { |
@@ -696,7 +710,7 @@ asn1_time_overflow(void) | |||
696 | goto err; | 710 | goto err; |
697 | } | 711 | } |
698 | if (memcmp(©, &min_time, sizeof(min_time)) != 0) { | 712 | if (memcmp(©, &min_time, sizeof(min_time)) != 0) { |
699 | fprintf(stderr, "FAIL: maximally adjusted copy didn't match" | 713 | fprintf(stderr, "FAIL: maximally adjusted copy didn't match " |
700 | "min_time\n"); | 714 | "min_time\n"); |
701 | goto err; | 715 | goto err; |
702 | } | 716 | } |