From 147573d7f6faab0ad90258b6a28c4b9575ccb6ea Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Wed, 6 Aug 2008 22:43:27 +0200 Subject: [PATCH] idmap tdb2: fix broken logic in tdb2_delete_bystring(). 1. use the return value that idmap_tdb2_open_perm_db() gives us 2. don't delete frep the local db if deleting from the perm db failed. 3. fix wrong interpretation of return value of the local delete Michael --- source/winbindd/idmap_tdb2.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/source/winbindd/idmap_tdb2.c b/source/winbindd/idmap_tdb2.c index 172922b85f3..81553dc9c64 100644 --- a/source/winbindd/idmap_tdb2.c +++ b/source/winbindd/idmap_tdb2.c @@ -403,15 +403,18 @@ static NTSTATUS tdb2_store_bystring(const char *keystr, TDB_DATA data, int flags static NTSTATUS tdb2_delete_bystring(const char *keystr) { 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_delete_bystring(idmap_tdb2_perm, keystr); if (!NT_STATUS_IS_OK(ret)) { - ret = tdb_delete_bystring(idmap_tdb2_tmp, keystr) ? NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL; + return ret; } - return ret; + return (tdb_delete_bystring(idmap_tdb2_tmp, keystr) == 0) + ? NT_STATUS_OK + : NT_STATUS_UNSUCCESSFUL; } /* -- 2.47.3