diff --git a/CHANGES b/CHANGES index b3c3c055e2fb8b7095721067c9331753c05c3f3f..1f2a7e88746070b18b79aab8df84bb8bc1cb2fbd 100644 --- a/CHANGES +++ b/CHANGES @@ -20,6 +20,7 @@ OpenLDAP 2.3.22 Engineering Fixed slapo-translucent modifications Fixed libldap_r thread debug missing break Fixed libldap_r tpool cleanup + Fixed liblutil time resolution issue OpenLDAP 2.3.21 Release Fixed libldap referral chasing issue (ITS#4448) diff --git a/libraries/liblutil/utils.c b/libraries/liblutil/utils.c index 31849fea04141b836f91a164732310bcb6213c05..ce5304f3f17720b701e4082046c62499e0608559 100644 --- a/libraries/liblutil/utils.c +++ b/libraries/liblutil/utils.c @@ -247,14 +247,17 @@ int lutil_parsetime( char *atm, struct lutil_tm *tm ) if (tm->tm_sec < 0 || tm->tm_sec > 61) break; /* Fractions of seconds */ - for (i = 0, fracs = 0; isdigit((unsigned char) *ptr); ) { - i*=10; i+= *ptr++ - '0'; - fracs++; - } - tm->tm_usec = i; - if (i) { - for (i = fracs; i<6; i++) - tm->tm_usec *= 10; + if ( *ptr == '.' ) { + ptr++; + for (i = 0, fracs = 0; isdigit((unsigned char) *ptr); ) { + i*=10; i+= *ptr++ - '0'; + fracs++; + } + tm->tm_usec = i; + if (i) { + for (i = fracs; i<6; i++) + tm->tm_usec *= 10; + } } /* Must be UTC */