diff options
| author | beck <> | 2015-10-08 02:42:58 +0000 |
|---|---|---|
| committer | beck <> | 2015-10-08 02:42:58 +0000 |
| commit | f74de0733db425ada5fa3e5d69d70032f33d95b1 (patch) | |
| tree | 82c47ceab75ea59ac5396586035e97f326283a30 /src | |
| parent | 015a0e6cd3d89d68781aceb93e7d27ec197f19e4 (diff) | |
| download | openbsd-f74de0733db425ada5fa3e5d69d70032f33d95b1.tar.gz openbsd-f74de0733db425ada5fa3e5d69d70032f33d95b1.tar.bz2 openbsd-f74de0733db425ada5fa3e5d69d70032f33d95b1.zip | |
Rip the guts out of another gibbering horror of a time comparison function, and
mark it as #ifndef LIBRESSL_INTERNAL at least we don't use this.
ok jsing@
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/libcrypto/asn1/a_utctm.c | 56 | ||||
| -rw-r--r-- | src/lib/libcrypto/asn1/asn1.h | 5 | ||||
| -rw-r--r-- | src/lib/libssl/src/crypto/asn1/a_utctm.c | 56 | ||||
| -rw-r--r-- | src/lib/libssl/src/crypto/asn1/asn1.h | 5 |
4 files changed, 48 insertions, 74 deletions
diff --git a/src/lib/libcrypto/asn1/a_utctm.c b/src/lib/libcrypto/asn1/a_utctm.c index 02d511789a..495c497bc8 100644 --- a/src/lib/libcrypto/asn1/a_utctm.c +++ b/src/lib/libcrypto/asn1/a_utctm.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: a_utctm.c,v 1.31 2015/10/08 02:29:11 beck Exp $ */ | 1 | /* $OpenBSD: a_utctm.c,v 1.32 2015/10/08 02:42:58 beck Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -149,39 +149,25 @@ ASN1_UTCTIME_adj(ASN1_UTCTIME *s, time_t t, int offset_day, long offset_sec) | |||
| 149 | } | 149 | } |
| 150 | 150 | ||
| 151 | int | 151 | int |
| 152 | ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t) | 152 | ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t2) |
| 153 | { | 153 | { |
| 154 | struct tm *tm; | 154 | struct tm tm1; |
| 155 | struct tm data; | 155 | time_t t1; |
| 156 | int offset; | 156 | |
| 157 | int year; | 157 | /* |
| 158 | 158 | * This function has never handled failure conditions properly | |
| 159 | #define g2(p) (((p)[0]-'0')*10+(p)[1]-'0') | 159 | * and should be deprecated. BoringSSL makes it return -2 on |
| 160 | 160 | * failures, the OpenSSL version follows NULL pointers instead. | |
| 161 | if (s->data[12] == 'Z') | 161 | */ |
| 162 | offset = 0; | 162 | if (asn1_time_parse(s->data, s->length, &tm1, V_ASN1_UTCTIME) == -1) |
| 163 | else { | 163 | return (-2); /* XXX */ |
| 164 | offset = g2(s->data + 13)*60 + g2(s->data + 15); | 164 | |
| 165 | if (s->data[12] == '-') | 165 | if ((t1 = timegm(&tm1)) == -1) |
| 166 | offset = -offset; | 166 | return (-2); /* XXX */ |
| 167 | } | 167 | |
| 168 | 168 | if (t1 < t2) | |
| 169 | t -= offset * 60; /* FIXME: may overflow in extreme cases */ | 169 | return (-1); |
| 170 | 170 | if (t1 > t2) | |
| 171 | tm = gmtime_r(&t, &data); | 171 | return (1); |
| 172 | 172 | return (0); | |
| 173 | #define return_cmp(a,b) if ((a)<(b)) return -1; else if ((a)>(b)) return 1 | ||
| 174 | year = g2(s->data); | ||
| 175 | if (year < 50) | ||
| 176 | year += 100; | ||
| 177 | return_cmp(year, tm->tm_year); | ||
| 178 | return_cmp(g2(s->data + 2) - 1, tm->tm_mon); | ||
| 179 | return_cmp(g2(s->data + 4), tm->tm_mday); | ||
| 180 | return_cmp(g2(s->data + 6), tm->tm_hour); | ||
| 181 | return_cmp(g2(s->data + 8), tm->tm_min); | ||
| 182 | return_cmp(g2(s->data + 10), tm->tm_sec); | ||
| 183 | #undef g2 | ||
| 184 | #undef return_cmp | ||
| 185 | |||
| 186 | return 0; | ||
| 187 | } | 173 | } |
diff --git a/src/lib/libcrypto/asn1/asn1.h b/src/lib/libcrypto/asn1/asn1.h index d1626944b7..9905df5f74 100644 --- a/src/lib/libcrypto/asn1/asn1.h +++ b/src/lib/libcrypto/asn1/asn1.h | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: asn1.h,v 1.32 2015/10/08 02:29:11 beck Exp $ */ | 1 | /* $OpenBSD: asn1.h,v 1.33 2015/10/08 02:42:58 beck Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -812,8 +812,9 @@ ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t); | |||
| 812 | ASN1_UTCTIME *ASN1_UTCTIME_adj(ASN1_UTCTIME *s, time_t t, | 812 | ASN1_UTCTIME *ASN1_UTCTIME_adj(ASN1_UTCTIME *s, time_t t, |
| 813 | int offset_day, long offset_sec); | 813 | int offset_day, long offset_sec); |
| 814 | int ASN1_UTCTIME_set_string(ASN1_UTCTIME *s, const char *str); | 814 | int ASN1_UTCTIME_set_string(ASN1_UTCTIME *s, const char *str); |
| 815 | #ifndef LIBRESSL_INTERNAL | ||
| 815 | int ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t); | 816 | int ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t); |
| 816 | 817 | #endif | |
| 817 | int ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *a); | 818 | int ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *a); |
| 818 | ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s, | 819 | ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s, |
| 819 | time_t t); | 820 | time_t t); |
diff --git a/src/lib/libssl/src/crypto/asn1/a_utctm.c b/src/lib/libssl/src/crypto/asn1/a_utctm.c index 02d511789a..495c497bc8 100644 --- a/src/lib/libssl/src/crypto/asn1/a_utctm.c +++ b/src/lib/libssl/src/crypto/asn1/a_utctm.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: a_utctm.c,v 1.31 2015/10/08 02:29:11 beck Exp $ */ | 1 | /* $OpenBSD: a_utctm.c,v 1.32 2015/10/08 02:42:58 beck Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -149,39 +149,25 @@ ASN1_UTCTIME_adj(ASN1_UTCTIME *s, time_t t, int offset_day, long offset_sec) | |||
| 149 | } | 149 | } |
| 150 | 150 | ||
| 151 | int | 151 | int |
| 152 | ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t) | 152 | ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t2) |
| 153 | { | 153 | { |
| 154 | struct tm *tm; | 154 | struct tm tm1; |
| 155 | struct tm data; | 155 | time_t t1; |
| 156 | int offset; | 156 | |
| 157 | int year; | 157 | /* |
| 158 | 158 | * This function has never handled failure conditions properly | |
| 159 | #define g2(p) (((p)[0]-'0')*10+(p)[1]-'0') | 159 | * and should be deprecated. BoringSSL makes it return -2 on |
| 160 | 160 | * failures, the OpenSSL version follows NULL pointers instead. | |
| 161 | if (s->data[12] == 'Z') | 161 | */ |
| 162 | offset = 0; | 162 | if (asn1_time_parse(s->data, s->length, &tm1, V_ASN1_UTCTIME) == -1) |
| 163 | else { | 163 | return (-2); /* XXX */ |
| 164 | offset = g2(s->data + 13)*60 + g2(s->data + 15); | 164 | |
| 165 | if (s->data[12] == '-') | 165 | if ((t1 = timegm(&tm1)) == -1) |
| 166 | offset = -offset; | 166 | return (-2); /* XXX */ |
| 167 | } | 167 | |
| 168 | 168 | if (t1 < t2) | |
| 169 | t -= offset * 60; /* FIXME: may overflow in extreme cases */ | 169 | return (-1); |
| 170 | 170 | if (t1 > t2) | |
| 171 | tm = gmtime_r(&t, &data); | 171 | return (1); |
| 172 | 172 | return (0); | |
| 173 | #define return_cmp(a,b) if ((a)<(b)) return -1; else if ((a)>(b)) return 1 | ||
| 174 | year = g2(s->data); | ||
| 175 | if (year < 50) | ||
| 176 | year += 100; | ||
| 177 | return_cmp(year, tm->tm_year); | ||
| 178 | return_cmp(g2(s->data + 2) - 1, tm->tm_mon); | ||
| 179 | return_cmp(g2(s->data + 4), tm->tm_mday); | ||
| 180 | return_cmp(g2(s->data + 6), tm->tm_hour); | ||
| 181 | return_cmp(g2(s->data + 8), tm->tm_min); | ||
| 182 | return_cmp(g2(s->data + 10), tm->tm_sec); | ||
| 183 | #undef g2 | ||
| 184 | #undef return_cmp | ||
| 185 | |||
| 186 | return 0; | ||
| 187 | } | 173 | } |
diff --git a/src/lib/libssl/src/crypto/asn1/asn1.h b/src/lib/libssl/src/crypto/asn1/asn1.h index d1626944b7..9905df5f74 100644 --- a/src/lib/libssl/src/crypto/asn1/asn1.h +++ b/src/lib/libssl/src/crypto/asn1/asn1.h | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: asn1.h,v 1.32 2015/10/08 02:29:11 beck Exp $ */ | 1 | /* $OpenBSD: asn1.h,v 1.33 2015/10/08 02:42:58 beck Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -812,8 +812,9 @@ ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t); | |||
| 812 | ASN1_UTCTIME *ASN1_UTCTIME_adj(ASN1_UTCTIME *s, time_t t, | 812 | ASN1_UTCTIME *ASN1_UTCTIME_adj(ASN1_UTCTIME *s, time_t t, |
| 813 | int offset_day, long offset_sec); | 813 | int offset_day, long offset_sec); |
| 814 | int ASN1_UTCTIME_set_string(ASN1_UTCTIME *s, const char *str); | 814 | int ASN1_UTCTIME_set_string(ASN1_UTCTIME *s, const char *str); |
| 815 | #ifndef LIBRESSL_INTERNAL | ||
| 815 | int ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t); | 816 | int ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t); |
| 816 | 817 | #endif | |
| 817 | int ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *a); | 818 | int ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *a); |
| 818 | ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s, | 819 | ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s, |
| 819 | time_t t); | 820 | time_t t); |
