summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/regress/lib/libcrypto/asn1/asn1time.c22
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
576asn1_time_overflow(void) 576asn1_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(&copy, 0, valid_time_range)) { 695 if (!OPENSSL_gmtime_adj(&copy, 0, valid_time_range)) {
@@ -686,8 +698,10 @@ asn1_time_overflow(void)
686 goto err; 698 goto err;
687 } 699 }
688 if (memcmp(&copy, &max_time, sizeof(max_time)) != 0) { 700 if (memcmp(&copy, &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 *)&copy, sizeof(copy));
691 goto err; 705 goto err;
692 } 706 }
693 if (!OPENSSL_gmtime_adj(&copy, 0, -valid_time_range)) { 707 if (!OPENSSL_gmtime_adj(&copy, 0, -valid_time_range)) {
@@ -696,7 +710,7 @@ asn1_time_overflow(void)
696 goto err; 710 goto err;
697 } 711 }
698 if (memcmp(&copy, &min_time, sizeof(min_time)) != 0) { 712 if (memcmp(&copy, &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 }