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:
parent
e3cf818c27
commit
baae6ef9d2
@ -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
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user