char *keystr;
TDB_DATA databuf;
uint32_t entry_timestamp = 0, bad_password_time = 0;
+ uint16_t acct_ctrl;
if (!login_cache_init()) {
return false;
if (tdb_unpack (databuf.dptr, databuf.dsize, SAM_CACHE_FORMAT,
&entry_timestamp,
- &entry->acct_ctrl,
+ &acct_ctrl,
&entry->bad_password_count,
&bad_password_time) == -1) {
DEBUG(7, ("No cache entry found\n"));
return false;
}
+ /*
+ * Deal with 32-bit acct_ctrl. In the tdb we only store 16-bit
+ * ("w" in SAM_CACHE_FORMAT). Fixes bug 7253.
+ */
+ entry->acct_ctrl = acct_ctrl;
+
/* Deal with possible 64-bit time_t. */
entry->entry_timestamp = (time_t)entry_timestamp;
entry->bad_password_time = (time_t)bad_password_time;