idmap tdb2: fix broken logic in tdb2_delete_bystring().
authorMichael Adam <obnox@samba.org>
Wed, 6 Aug 2008 20:43:27 +0000 (22:43 +0200)
committerMichael Adam <obnox@samba.org>
Wed, 13 Aug 2008 09:54:07 +0000 (11:54 +0200)
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)

source3/winbindd/idmap_tdb2.c

index 172922b85f387afec93c7f988511c6c071b1a375..81553dc9c64ec4a292518ea3760104b9dece307a 100644 (file)
@@ -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;
 }
 
 /*