From: Dr. Stephen Henson Date: Fri, 28 Sep 2001 00:44:44 +0000 (+0000) Subject: Support fractional seconds in GeneralizedTime X-Git-Tag: OpenSSL_0_9_6c~26^2~176 X-Git-Url: https://git.openssl.org/?p=openssl.git;a=commitdiff_plain;h=d46c1a8126efe3942bc165af5bdf40fb145c1365;hp=e32587d5a605f897c6683c280c792b3b21fbaa36 Support fractional seconds in GeneralizedTime --- diff --git a/CHANGES b/CHANGES index 349ede197e..d5959af5e4 100644 --- a/CHANGES +++ b/CHANGES @@ -12,6 +12,9 @@ *) applies to 0.9.6a/0.9.6b/0.9.6c and 0.9.7 +) applies to 0.9.7 only + +) Change ASN1_GENERALIZEDTIME_check() to allow fractional seconds. + [Steve Henson] + +) Change mkdef.pl to sort symbols that get the same entry number, and make sure the automatically generated functions ERR_load_* become part of libeay.num as well. diff --git a/crypto/asn1/a_gentm.c b/crypto/asn1/a_gentm.c index ef95003510..cd09f68b38 100644 --- a/crypto/asn1/a_gentm.c +++ b/crypto/asn1/a_gentm.c @@ -146,6 +146,19 @@ int ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *d) if ((n < min[i]) || (n > max[i])) goto err; } + /* Optional fractional seconds: decimal point followed by one + * or more digits. + */ + if (a[o] == '.') + { + if (++o > l) goto err; + i = o; + while ((a[o] >= '0') && (a[o] <= '9') && (o <= l)) + o++; + /* Must have at least one digit after decimal point */ + if (i == o) goto err; + } + if (a[o] == 'Z') o++; else if ((a[o] == '+') || (a[o] == '-'))