diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mongo/db/auth/authorization_manager.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/mongo/db/auth/authorization_manager.cpp b/src/mongo/db/auth/authorization_manager.cpp index 4eb05ec666f..5b72e413ce9 100644 --- a/src/mongo/db/auth/authorization_manager.cpp +++ b/src/mongo/db/auth/authorization_manager.cpp @@ -672,8 +672,14 @@ bool loggedCommandOperatesOnAuthzData(const char* ns, const BSONObj& cmdObj) { } else if (cmdName == "dropDatabase") { return true; } else if (cmdName == "renameCollection") { - return isAuthzCollection(cmdObj.firstElement().str()) || - isAuthzCollection(cmdObj["to"].str()); + const NamespaceString fromNamespace(cmdObj.firstElement().str()); + const NamespaceString toNamespace(cmdObj["to"].str()); + if (fromNamespace.db() == "admin" || toNamespace.db() == "admin") { + return isAuthzCollection(fromNamespace.coll().toString()) || + isAuthzCollection(toNamespace.coll().toString()); + } else { + return false; + } } else if (cmdName == "dropIndexes" || cmdName == "deleteIndexes") { return false; } else if (cmdName == "create") { |