From f98d217514433cd06887f8c0217a7835392f0375 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Mon, 27 Sep 2010 05:46:07 -0700 Subject: Change to using TDB_INCOMPATIBLE_HASH (the jenkins hash) on all TDB_CLEAR_IF_FIRST tdb's. For tdb's like gencache where we open without CLEAR_IF_FIRST and then with CLEAR_IF_FIRST if corrupt this is still safe to use as if opening an existing tdb the new hash will be ignored - it's only used on creating a new tdb not opening an old one. Jeremy. --- source3/lib/conn_tdb.c | 2 +- source3/lib/g_lock.c | 2 +- source3/lib/gencache.c | 8 ++++---- source3/lib/messages_local.c | 4 ++-- source3/lib/serverid.c | 4 ++-- source3/lib/sessionid_tdb.c | 2 +- 6 files changed, 11 insertions(+), 11 deletions(-) (limited to 'source3/lib') diff --git a/source3/lib/conn_tdb.c b/source3/lib/conn_tdb.c index 75841cce65..e4c5e72014 100644 --- a/source3/lib/conn_tdb.c +++ b/source3/lib/conn_tdb.c @@ -33,7 +33,7 @@ static struct db_context *connections_db_ctx(bool rw) open_flags = rw ? (O_RDWR|O_CREAT) : O_RDONLY; db_ctx = db_open(NULL, lock_path("connections.tdb"), 0, - TDB_CLEAR_IF_FIRST|TDB_DEFAULT, open_flags, 0644); + TDB_CLEAR_IF_FIRST|TDB_INCOMPATIBLE_HASH|TDB_DEFAULT, open_flags, 0644); return db_ctx; } diff --git a/source3/lib/g_lock.c b/source3/lib/g_lock.c index edb77869cc..2c065029e7 100644 --- a/source3/lib/g_lock.c +++ b/source3/lib/g_lock.c @@ -53,7 +53,7 @@ struct g_lock_ctx *g_lock_ctx_init(TALLOC_CTX *mem_ctx, result->msg = msg; result->db = db_open(result, lock_path("g_lock.tdb"), 0, - TDB_CLEAR_IF_FIRST, O_RDWR|O_CREAT, 0700); + TDB_CLEAR_IF_FIRST|TDB_INCOMPATIBLE_HASH, O_RDWR|O_CREAT, 0700); if (result->db == NULL) { DEBUG(1, ("g_lock_init: Could not open g_lock.tdb")); TALLOC_FREE(result); diff --git a/source3/lib/gencache.c b/source3/lib/gencache.c index a78e60a153..8d2ddb2387 100644 --- a/source3/lib/gencache.c +++ b/source3/lib/gencache.c @@ -65,7 +65,7 @@ static bool gencache_init(void) DEBUG(5, ("Opening cache file at %s\n", cache_fname)); again: - cache = tdb_open_log(cache_fname, 0, TDB_DEFAULT, open_flags, 0644); + cache = tdb_open_log(cache_fname, 0, TDB_DEFAULT|TDB_INCOMPATIBLE_HASH, open_flags, 0644); if (cache) { int ret; ret = tdb_check(cache, NULL, NULL); @@ -80,7 +80,7 @@ again: first_try = false; DEBUG(0, ("gencache_init: tdb_check(%s) failed - retry after CLEAR_IF_FIRST\n", cache_fname)); - cache = tdb_open_log(cache_fname, 0, TDB_CLEAR_IF_FIRST, open_flags, 0644); + cache = tdb_open_log(cache_fname, 0, TDB_CLEAR_IF_FIRST|TDB_INCOMPATIBLE_HASH, open_flags, 0644); if (cache) { tdb_close(cache); cache = NULL; @@ -91,7 +91,7 @@ again: if (!cache && (errno == EACCES)) { open_flags = O_RDONLY; - cache = tdb_open_log(cache_fname, 0, TDB_DEFAULT, open_flags, + cache = tdb_open_log(cache_fname, 0, TDB_DEFAULT|TDB_INCOMPATIBLE_HASH, open_flags, 0644); if (cache) { DEBUG(5, ("gencache_init: Opening cache file %s read-only.\n", cache_fname)); @@ -107,7 +107,7 @@ again: DEBUG(5, ("Opening cache file at %s\n", cache_fname)); - cache_notrans = tdb_open_log(cache_fname, 0, TDB_CLEAR_IF_FIRST, + cache_notrans = tdb_open_log(cache_fname, 0, TDB_CLEAR_IF_FIRST|TDB_INCOMPATIBLE_HASH, open_flags, 0644); if (cache_notrans == NULL) { DEBUG(5, ("Opening %s failed: %s\n", cache_fname, diff --git a/source3/lib/messages_local.c b/source3/lib/messages_local.c index 542d49e2dd..bad577cc35 100644 --- a/source3/lib/messages_local.c +++ b/source3/lib/messages_local.c @@ -103,7 +103,7 @@ NTSTATUS messaging_tdb_init(struct messaging_context *msg_ctx, ctx->msg_ctx = msg_ctx; ctx->tdb = tdb_wrap_open(ctx, lock_path("messages.tdb"), 0, - TDB_CLEAR_IF_FIRST|TDB_DEFAULT|TDB_VOLATILE, + TDB_CLEAR_IF_FIRST|TDB_DEFAULT|TDB_VOLATILE|TDB_INCOMPATIBLE_HASH, O_RDWR|O_CREAT,0600); if (!ctx->tdb) { @@ -144,7 +144,7 @@ bool messaging_tdb_parent_init(TALLOC_CTX *mem_ctx) */ db = tdb_wrap_open(mem_ctx, lock_path("messages.tdb"), 0, - TDB_CLEAR_IF_FIRST|TDB_DEFAULT|TDB_VOLATILE, + TDB_CLEAR_IF_FIRST|TDB_DEFAULT|TDB_VOLATILE|TDB_INCOMPATIBLE_HASH, O_RDWR|O_CREAT,0600); if (db == NULL) { DEBUG(1, ("could not open messaging.tdb: %s\n", diff --git a/source3/lib/serverid.c b/source3/lib/serverid.c index f0c61aeb82..dd02e51a21 100644 --- a/source3/lib/serverid.c +++ b/source3/lib/serverid.c @@ -44,7 +44,7 @@ bool serverid_parent_init(TALLOC_CTX *mem_ctx) */ db = tdb_wrap_open(mem_ctx, lock_path("serverid.tdb"), - 0, TDB_DEFAULT|TDB_CLEAR_IF_FIRST, O_RDWR|O_CREAT, + 0, TDB_DEFAULT|TDB_CLEAR_IF_FIRST|TDB_INCOMPATIBLE_HASH, O_RDWR|O_CREAT, 0644); if (db == NULL) { DEBUG(1, ("could not open serverid.tdb: %s\n", @@ -62,7 +62,7 @@ static struct db_context *serverid_db(void) return db; } db = db_open(NULL, lock_path("serverid.tdb"), 0, - TDB_DEFAULT|TDB_CLEAR_IF_FIRST, O_RDWR|O_CREAT, 0644); + TDB_DEFAULT|TDB_CLEAR_IF_FIRST|TDB_INCOMPATIBLE_HASH, O_RDWR|O_CREAT, 0644); return db; } diff --git a/source3/lib/sessionid_tdb.c b/source3/lib/sessionid_tdb.c index 1515728bd9..fe67681d18 100644 --- a/source3/lib/sessionid_tdb.c +++ b/source3/lib/sessionid_tdb.c @@ -29,7 +29,7 @@ static struct db_context *session_db_ctx(void) } session_db_ctx_ptr = db_open(NULL, lock_path("sessionid.tdb"), 0, - TDB_CLEAR_IF_FIRST|TDB_DEFAULT, + TDB_CLEAR_IF_FIRST|TDB_DEFAULT|TDB_INCOMPATIBLE_HASH, O_RDWR | O_CREAT, 0644); return session_db_ctx_ptr; } -- cgit