summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2007-06-26 13:45:07 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:23:36 -0500
commit7c48598e86da3cbc116fd1992127f13132bc3f8f (patch)
tree7d929e55490232f505ff618ffab6b1b49aec9344
parent75f6a458b5d62f2d07e5f5dc121c72b6f26d0f65 (diff)
downloadsamba-7c48598e86da3cbc116fd1992127f13132bc3f8f.tar.gz
samba-7c48598e86da3cbc116fd1992127f13132bc3f8f.tar.bz2
samba-7c48598e86da3cbc116fd1992127f13132bc3f8f.zip
r23610: Move some winbindd_cache specific flags and actions
back to winbindd_cache.c. The generic mechanism should open the cache tdb readonly and with default flags. Michael (This used to be commit 062d8c61294a1e9f8588fa8af31954dd286c7bde)
-rw-r--r--source3/lib/util_tdb.c8
-rw-r--r--source3/nsswitch/winbindd_cache.c20
2 files changed, 20 insertions, 8 deletions
diff --git a/source3/lib/util_tdb.c b/source3/lib/util_tdb.c
index cb53b7f2e3..7a0cce6c25 100644
--- a/source3/lib/util_tdb.c
+++ b/source3/lib/util_tdb.c
@@ -1005,12 +1005,7 @@ static int tdb_validate_child(const char *tdb_path,
v_status.unknown_key = False;
v_status.success = True;
- tdb = tdb_open_log(tdb_path,
- WINBINDD_CACHE_TDB_DEFAULT_HASH_SIZE,
- lp_winbind_offline_logon()
- ? TDB_DEFAULT
- : (TDB_DEFAULT | TDB_CLEAR_IF_FIRST),
- O_RDWR|O_CREAT, 0600);
+ tdb = tdb_open_log(tdb_path, 0, TDB_DEFAULT, O_RDONLY, 0);
if (!tdb) {
v_status.tdb_error = True;
v_status.success = False;
@@ -1182,4 +1177,3 @@ int tdb_validate(const char *tdb_path, tdb_validate_data_func validate_fn)
return ret;
}
-
diff --git a/source3/nsswitch/winbindd_cache.c b/source3/nsswitch/winbindd_cache.c
index 122432d95b..cfd182666e 100644
--- a/source3/nsswitch/winbindd_cache.c
+++ b/source3/nsswitch/winbindd_cache.c
@@ -3279,14 +3279,32 @@ static void validate_panic(const char *const why)
int winbindd_validate_cache(void)
{
- int ret;
+ int ret = -1;
+ const char *tdb_path = lock_path("winbindd_cache.tdb");
+ TDB_CONTEXT *tdb = NULL;
DEBUG(10, ("winbindd_validate_cache: replacing panic function\n"));
smb_panic_fn = validate_panic;
+
+ tdb = tdb_open_log(tdb_path,
+ WINBINDD_CACHE_TDB_DEFAULT_HASH_SIZE,
+ ( lp_winbind_offline_logon()
+ ? TDB_DEFAULT
+ : TDB_DEFAULT | TDB_CLEAR_IF_FIRST ),
+ O_RDWR|O_CREAT,
+ 0600);
+ if (!tdb) {
+ DEBUG(0, ("winbindd_validate_cache: "
+ "error opening/initializing tdb\n"));
+ goto done;
+ }
+ tdb_close(tdb);
+
ret = tdb_validate(lock_path("winbindd_cache.tdb"),
cache_traverse_validate_fn);
+done:
DEBUG(10, ("winbindd_validate_cache: restoring panic function\n"));
smb_panic_fn = smb_panic;
return ret;