diff options
-rw-r--r-- | source3/passdb/account_pol.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/source3/passdb/account_pol.c b/source3/passdb/account_pol.c index 5f2c7ab2eb..6b1066ee5d 100644 --- a/source3/passdb/account_pol.c +++ b/source3/passdb/account_pol.c @@ -214,24 +214,32 @@ bool init_account_policy(void) uint32_t version = 0; int i; NTSTATUS status; + char *db_path; if (db != NULL) { return True; } - db = db_open(NULL, state_path("account_policy.tdb"), 0, TDB_DEFAULT, + db_path = state_path("account_policy.tdb"); + if (db_path == NULL) { + return false; + } + + db = db_open(NULL, db_path, 0, TDB_DEFAULT, O_RDWR, 0600, DBWRAP_LOCK_ORDER_1, DBWRAP_FLAG_NONE); if (db == NULL) { /* the account policies files does not exist or open * failed, try to create a new one */ - db = db_open(NULL, state_path("account_policy.tdb"), 0, + db = db_open(NULL, db_path, 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600, DBWRAP_LOCK_ORDER_1, DBWRAP_FLAG_NONE); if (db == NULL) { DEBUG(0,("Failed to open account policy database\n")); + TALLOC_FREE(db_path); return False; } } + TALLOC_FREE(db_path); status = dbwrap_fetch_uint32_bystring(db, vstring, &version); if (!NT_STATUS_IS_OK(status)) { |