Support fractional seconds in GeneralizedTime
authorDr. Stephen Henson <steve@openssl.org>
Fri, 28 Sep 2001 00:44:44 +0000 (00:44 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Fri, 28 Sep 2001 00:44:44 +0000 (00:44 +0000)
CHANGES
crypto/asn1/a_gentm.c

diff --git a/CHANGES b/CHANGES
index 349ede197e9c7b2481a0d2f70f0bd91cd031e96e..d5959af5e4d09a85a7b2e2e5ab642f71d6c30ff9 100644 (file)
--- 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.
index ef95003510a9341048f9756ee2fc036fcf314176..cd09f68b38f61baff588199f848b4088ab84d77c 100644 (file)
@@ -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] == '-'))