diff options
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libtls/tls_conninfo.c | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/src/lib/libtls/tls_conninfo.c b/src/lib/libtls/tls_conninfo.c index 90fdfacad3..08f8714ecd 100644 --- a/src/lib/libtls/tls_conninfo.c +++ b/src/lib/libtls/tls_conninfo.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: tls_conninfo.c,v 1.24 2023/11/13 10:51:49 tb Exp $ */ | 1 | /* $OpenBSD: tls_conninfo.c,v 1.25 2024/03/24 11:30:12 beck Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2015 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2015 Joel Sing <jsing@openbsd.org> |
| 4 | * Copyright (c) 2015 Bob Beck <beck@openbsd.org> | 4 | * Copyright (c) 2015 Bob Beck <beck@openbsd.org> |
| @@ -19,12 +19,27 @@ | |||
| 19 | #include <stdio.h> | 19 | #include <stdio.h> |
| 20 | #include <string.h> | 20 | #include <string.h> |
| 21 | 21 | ||
| 22 | #include <openssl/posix_time.h> | ||
| 22 | #include <openssl/x509.h> | 23 | #include <openssl/x509.h> |
| 23 | 24 | ||
| 24 | #include <tls.h> | 25 | #include <tls.h> |
| 25 | #include "tls_internal.h" | 26 | #include "tls_internal.h" |
| 26 | 27 | ||
| 27 | int ASN1_time_tm_clamp_notafter(struct tm *tm); | 28 | static int |
| 29 | tls_convert_notafter(struct tm *tm, time_t *out_time) | ||
| 30 | { | ||
| 31 | int64_t posix_time; | ||
| 32 | |||
| 33 | /* OPENSSL_timegm() fails if tm is not representable in a time_t */ | ||
| 34 | if (OPENSSL_timegm(tm, out_time)) | ||
| 35 | return 1; | ||
| 36 | if (!OPENSSL_tm_to_posix(tm, &posix_time)) | ||
| 37 | return 0; | ||
| 38 | if (posix_time < INT32_MIN) | ||
| 39 | return 0; | ||
| 40 | *out_time = (posix_time > INT32_MAX) ? INT32_MAX : posix_time; | ||
| 41 | return 1; | ||
| 42 | } | ||
| 28 | 43 | ||
| 29 | int | 44 | int |
| 30 | tls_hex_string(const unsigned char *in, size_t inlen, char **out, | 45 | tls_hex_string(const unsigned char *in, size_t inlen, char **out, |
| @@ -121,13 +136,10 @@ tls_get_peer_cert_times(struct tls *ctx, time_t *notbefore, | |||
| 121 | goto err; | 136 | goto err; |
| 122 | if (!ASN1_TIME_to_tm(after, &after_tm)) | 137 | if (!ASN1_TIME_to_tm(after, &after_tm)) |
| 123 | goto err; | 138 | goto err; |
| 124 | if (!ASN1_time_tm_clamp_notafter(&after_tm)) | 139 | if (!tls_convert_notafter(&after_tm, notafter)) |
| 125 | goto err; | 140 | goto err; |
| 126 | if ((*notbefore = timegm(&before_tm)) == -1) | 141 | if (!OPENSSL_timegm(&before_tm, notbefore)) |
| 127 | goto err; | 142 | goto err; |
| 128 | if ((*notafter = timegm(&after_tm)) == -1) | ||
| 129 | goto err; | ||
| 130 | |||
| 131 | return (0); | 143 | return (0); |
| 132 | 144 | ||
| 133 | err: | 145 | err: |
