diff options
author | Eliot Horowitz <eliot@10gen.com> | 2010-05-11 10:05:34 -0400 |
---|---|---|
committer | Eliot Horowitz <eliot@10gen.com> | 2010-05-11 10:05:34 -0400 |
commit | a5e1865e2802a1a3abc078d5f3715aff111d95a1 (patch) | |
tree | 182807ad398cfb328ade921bee0c8e74f21a1624 /db/dbeval.cpp | |
parent | 9b9be9a4ee365f3c56f319daae20985e3b841d10 (diff) | |
download | mongo-a5e1865e2802a1a3abc078d5f3715aff111d95a1.tar.gz |
SERVER-778 don't allow running write command with read lock
Diffstat (limited to 'db/dbeval.cpp')
-rw-r--r-- | db/dbeval.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/db/dbeval.cpp b/db/dbeval.cpp index f063cf17822..e8a42b25561 100644 --- a/db/dbeval.cpp +++ b/db/dbeval.cpp @@ -119,11 +119,18 @@ namespace mongo { virtual bool requiresAuth() { return false; } - virtual LockType locktype() const { return WRITE; } + virtual LockType locktype() const { return NONE; } CmdEval() : Command("eval", false, "$eval") { } bool run(const string& dbname , BSONObj& cmdObj, string& errmsg, BSONObjBuilder& result, bool fromRepl) { + AuthenticationInfo *ai = cc().getAuthenticationInfo(); uassert( 12598 , "$eval reads unauthorized", ai->isAuthorizedReads(dbname.c_str()) ); + + // write security will be enforced in DBDirectClient + mongolock lk( ai->isAuthorized( dbname.c_str() ) ); + Client::Context ctx( dbname ); + + return dbEval(dbname.c_str(), cmdObj, result, errmsg); } } cmdeval; |