Skip to content

Commit

Permalink
Ticket 48206 - Crash during retro changelog trimming
Browse files Browse the repository at this point in the history
Bug Description:  If the retro changelog entry is small, its possible that
                  during the trimming the reto changelog entry is not in the
                  cache after the trim, but its tries to blindly unlock it
                  from the cache, which leads to a crash.

FIx Description:  After we call the post op plugins and retrieve the entry
                  from the cache, double check that it was found.  If it
                  is not found, do not unlock it.

https://fedorahosted.org/389/ticket/48206

Reviewed by: nhosoi(Thanks!)

(cherry picked from commit 2a8a8c8)
  • Loading branch information
mreynolds389 committed Jul 20, 2015
1 parent 64b54d4 commit 21a1196
Showing 1 changed file with 17 additions and 10 deletions.
27 changes: 17 additions & 10 deletions ldap/servers/slapd/back-ldbm/ldbm_delete.c
Original file line number Diff line number Diff line change
Expand Up @@ -1224,17 +1224,24 @@ ldbm_back_delete( Slapi_PBlock *pb )
CACHE_RETURN(&inst->inst_cache, &e);
}
}
if (cache_is_in_cache(&inst->inst_cache, e)) {
ep_id = e->ep_id; /* Otherwise, e might have been freed. */
CACHE_REMOVE(&inst->inst_cache, e);
}
cache_unlock_entry(&inst->inst_cache, e);
CACHE_RETURN(&inst->inst_cache, &e);
/*
* e is unlocked and no longer in cache.
* It could be freed at any moment.

/*
* e could have been replaced by cache_find_id(), recheck if it's NULL
* before trying to unlock it, etc.
*/
e = NULL;
if (e) {
if (cache_is_in_cache(&inst->inst_cache, e)) {
ep_id = e->ep_id; /* Otherwise, e might have been freed. */
CACHE_REMOVE(&inst->inst_cache, e);
}
cache_unlock_entry(&inst->inst_cache, e);
CACHE_RETURN(&inst->inst_cache, &e);
/*
* e is unlocked and no longer in cache.
* It could be freed at any moment.
*/
e = NULL;
}

if (entryrdn_get_switch() && ep_id) { /* subtree-rename: on */
/* since the op was successful, delete the tombstone dn from the dn cache */
Expand Down

0 comments on commit 21a1196

Please sign in to comment.