diff options
author | Michael Adam <obnox@samba.org> | 2008-08-06 22:43:27 +0200 |
---|---|---|
committer | Michael Adam <obnox@samba.org> | 2008-08-13 11:54:07 +0200 |
commit | 134ea912781ba8da276217d6d663ab1967407f3e (patch) | |
tree | a1889ecf37b2b39df5e6ad541084c55307ef423a | |
parent | 6afa8e573e1afe93fb126f851aaf6b0c0cd8d75a (diff) | |
download | samba-134ea912781ba8da276217d6d663ab1967407f3e.tar.gz samba-134ea912781ba8da276217d6d663ab1967407f3e.tar.xz samba-134ea912781ba8da276217d6d663ab1967407f3e.zip |
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
(This used to be commit 147573d7f6faab0ad90258b6a28c4b9575ccb6ea)
-rw-r--r-- | source3/winbindd/idmap_tdb2.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/source3/winbindd/idmap_tdb2.c b/source3/winbindd/idmap_tdb2.c index 172922b85f3..81553dc9c64 100644 --- a/source3/winbindd/idmap_tdb2.c +++ b/source3/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; } /* |