diff options
author | Spencer T Brody <spencer@10gen.com> | 2012-12-07 14:27:39 -0500 |
---|---|---|
committer | Spencer T Brody <spencer@10gen.com> | 2012-12-07 14:27:39 -0500 |
commit | c95c2afe8ead4b05eab7c594dd8f1e2d191924d7 (patch) | |
tree | 13421376135f1ee627c7f66ec21e5a11f6003661 /src/mongo/db/clientcursor.cpp | |
parent | ae321c06047c61c815fa94dc3ab83a13194d4e82 (diff) | |
download | mongo-c95c2afe8ead4b05eab7c594dd8f1e2d191924d7.tar.gz |
Fix segfault in ClientCursor::eraseIfAuthorized
Diffstat (limited to 'src/mongo/db/clientcursor.cpp')
-rw-r--r-- | src/mongo/db/clientcursor.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/mongo/db/clientcursor.cpp b/src/mongo/db/clientcursor.cpp index 562985023ec..552bf686c58 100644 --- a/src/mongo/db/clientcursor.cpp +++ b/src/mongo/db/clientcursor.cpp @@ -848,9 +848,6 @@ namespace mongo { } bool ClientCursor::_erase_inlock(ClientCursor* cursor) { - if ( ! cursor ) - return false; - // Must not have an active ClientCursor::Pin. massert( 16089, str::stream() << "Cannot kill active cursor " << cursor->cursorid(), @@ -863,12 +860,19 @@ namespace mongo { bool ClientCursor::erase(CursorId id) { recursive_scoped_lock lock(ccmutex); ClientCursor* cursor = find_inlock(id); + if (!cursor) { + return false; + } + return _erase_inlock(cursor); } bool ClientCursor::eraseIfAuthorized(CursorId id) { recursive_scoped_lock lock(ccmutex); ClientCursor* cursor = find_inlock(id); + if (!cursor) { + return false; + } if (!cc().getAuthorizationManager()->checkAuthorization(cursor->ns(), ActionType::find) |