1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-24 02:04:21 +03:00

s4-ldb: added ldb_val_to_time()

This is intended as a replacement for ldb_string_to_time() for ldb_val
inputs. This ensures it is length limited and includes additional
validity checks
This commit is contained in:
Andrew Tridgell 2009-12-29 11:36:37 +11:00
parent e3cf818c27
commit baae6ef9d2

View File

@ -831,6 +831,33 @@ time_t ldb_string_to_time(const char *s)
return timegm(&tm);
}
/*
convert a LDAP GeneralizedTime string in ldb_val format to a
time_t.
*/
int ldb_val_to_time(const struct ldb_val *v, time_t *t)
{
struct tm tm;
if (v == NULL || !v->data || v->length < 14) {
return LDB_ERR_INVALID_ATTRIBUTE_SYNTAX;
}
memset(&tm, 0, sizeof(tm));
if (sscanf((char *)v->data, "%04u%02u%02u%02u%02u%02u",
&tm.tm_year, &tm.tm_mon, &tm.tm_mday,
&tm.tm_hour, &tm.tm_min, &tm.tm_sec) != 6) {
return LDB_ERR_INVALID_ATTRIBUTE_SYNTAX;
}
tm.tm_year -= 1900;
tm.tm_mon -= 1;
*t = timegm(&tm);
return LDB_SUCCESS;
}
/*
return a LDAP formatted UTCTime string
*/