From: Michael Adam Date: Wed, 6 Aug 2008 20:33:58 +0000 (+0200) Subject: idmap tdb2: fix broken logic in tdb2_store_bystring(). X-Git-Tag: samba-3.3.0pre1~160 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=be8c6b4f2f40014313899b5cbc1da9d390d94fee;p=thirdparty%2Fsamba.git 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 --- diff --git a/source/winbindd/idmap_tdb2.c b/source/winbindd/idmap_tdb2.c index cb5e9ec6d40..172922b85f3 100644 --- a/source/winbindd/idmap_tdb2.c +++ b/source/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; } /*