summaryrefslogtreecommitdiff
path: root/src/mongo/db/clientcursor.cpp
diff options
context:
space:
mode:
authorSpencer T Brody <spencer@10gen.com>2012-12-07 14:27:39 -0500
committerSpencer T Brody <spencer@10gen.com>2012-12-07 14:27:39 -0500
commitc95c2afe8ead4b05eab7c594dd8f1e2d191924d7 (patch)
tree13421376135f1ee627c7f66ec21e5a11f6003661 /src/mongo/db/clientcursor.cpp
parentae321c06047c61c815fa94dc3ab83a13194d4e82 (diff)
downloadmongo-c95c2afe8ead4b05eab7c594dd8f1e2d191924d7.tar.gz
Fix segfault in ClientCursor::eraseIfAuthorized
Diffstat (limited to 'src/mongo/db/clientcursor.cpp')
-rw-r--r--src/mongo/db/clientcursor.cpp10
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)