From 6afa8e573e1afe93fb126f851aaf6b0c0cd8d75a Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Wed, 6 Aug 2008 22:33:58 +0200 Subject: idmap tdb2: fix broken logic in tdb2_store_bystring(). 1. use the return value that idmap_tdb2_open_perm_db() gives us 2. don't write to the local db if writing to the perm db failed. 3. fix wrong interpretation of return value of the local store Michael (This used to be commit be8c6b4f2f40014313899b5cbc1da9d390d94fee) --- source3/winbindd/idmap_tdb2.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'source3') diff --git a/source3/winbindd/idmap_tdb2.c b/source3/winbindd/idmap_tdb2.c index cb5e9ec6d4..172922b85f 100644 --- a/source3/winbindd/idmap_tdb2.c +++ b/source3/winbindd/idmap_tdb2.c @@ -383,15 +383,18 @@ static TDB_DATA tdb2_fetch_bystring(TALLOC_CTX *mem_ctx, const char *keystr) static NTSTATUS tdb2_store_bystring(const char *keystr, TDB_DATA data, int flags) { NTSTATUS ret; - NTSTATUS status = idmap_tdb2_open_perm_db(); - if (!NT_STATUS_IS_OK(status)) { - return NT_STATUS_UNSUCCESSFUL; + + ret = idmap_tdb2_open_perm_db(); + if (!NT_STATUS_IS_OK(ret)) { + return ret; } ret = dbwrap_store_bystring(idmap_tdb2_perm, keystr, data, flags); if (!NT_STATUS_IS_OK(ret)) { - ret = tdb_store_bystring(idmap_tdb2_tmp, keystr, data, flags) ? NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL; + return ret; } - return ret; + return (tdb_store_bystring(idmap_tdb2_tmp, keystr, data, flags) == 0) + ? NT_STATUS_OK + : NT_STATUS_UNSUCCESSFUL; } /* -- cgit