mirror of
https://github.com/samba-team/samba.git
synced 2025-01-13 13:18:06 +03:00
Add samdb_result_account_expires() function.
Windows uses 2 different values to indicate an account doesn't expire: 0 and
9223372036854775807 (0x7FFFFFFFFFFFFFFFULL).
This function looks up the value of the accountExpires attribute and if the
value is either value indicating the account doesn't expire,
0x7FFFFFFFFFFFFFFFULL is returned.
This simplifies the tests for account expiration. There is no need to check
elsewhere in the code for both values, therefore a simple greater-than
expression can be used.
(This used to be commit 7ce5575a3a
)
This commit is contained in:
parent
07cb435d40
commit
01b3d89aec
@ -433,6 +433,30 @@ NTTIME samdb_result_nttime(struct ldb_message *msg, const char *attr, NTTIME def
|
||||
return ldb_msg_find_attr_as_uint64(msg, attr, default_value);
|
||||
}
|
||||
|
||||
/*
|
||||
* Windows uses both 0 and 9223372036854775807 (0x7FFFFFFFFFFFFFFFULL) to
|
||||
* indicate an account doesn't expire.
|
||||
*
|
||||
* When Windows initially creates an account, it sets
|
||||
* accountExpires = 9223372036854775807 (0x7FFFFFFFFFFFFFFF). However,
|
||||
* when changing from an account having a specific expiration date to
|
||||
* that account never expiring, it sets accountExpires = 0.
|
||||
*
|
||||
* Consolidate that logic here to allow clearer logic for account expiry in
|
||||
* the rest of the code.
|
||||
*/
|
||||
NTTIME samdb_result_account_expires(struct ldb_message *msg,
|
||||
NTTIME default_value)
|
||||
{
|
||||
NTTIME ret = ldb_msg_find_attr_as_uint64(msg, "accountExpires",
|
||||
default_value);
|
||||
|
||||
if (ret == (NTTIME)0)
|
||||
ret = 0x7FFFFFFFFFFFFFFFULL;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
pull a uint64_t from a result set.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user