diff options
author | Isabella Siu <isabella.siu@10gen.com> | 2019-01-11 11:16:24 -0500 |
---|---|---|
committer | Isabella Siu <isabella.siu@10gen.com> | 2019-02-08 14:34:32 -0500 |
commit | 8e5e745e98d33633e7d24a2629f22cdba79d9851 (patch) | |
tree | 9e02d92dadcf67140fe8707d792e55cf12b5443e /src/mongo/s/query/store_possible_cursor.cpp | |
parent | 7a7baa2539ec169335086e45c7d0b85ba7cdb877 (diff) | |
download | mongo-8e5e745e98d33633e7d24a2629f22cdba79d9851.tar.gz |
SERVER-37836 re-evaluate authorization for originating command in getMore
Diffstat (limited to 'src/mongo/s/query/store_possible_cursor.cpp')
-rw-r--r-- | src/mongo/s/query/store_possible_cursor.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/mongo/s/query/store_possible_cursor.cpp b/src/mongo/s/query/store_possible_cursor.cpp index c0f04976bf9..28c052299b3 100644 --- a/src/mongo/s/query/store_possible_cursor.cpp +++ b/src/mongo/s/query/store_possible_cursor.cpp @@ -50,6 +50,7 @@ namespace mongo { StatusWith<BSONObj> storePossibleCursor(OperationContext* opCtx, const NamespaceString& requestedNss, OwnedRemoteCursor&& remoteCursor, + PrivilegeVector privileges, TailableModeEnum tailableMode) { auto executorPool = Grid::get(opCtx)->getExecutorPool(); auto result = storePossibleCursor( @@ -60,6 +61,7 @@ StatusWith<BSONObj> storePossibleCursor(OperationContext* opCtx, requestedNss, executorPool->getArbitraryExecutor(), Grid::get(opCtx)->getCursorManager(), + std::move(privileges), tailableMode); // On success, release ownership of the cursor because it has been registered with the cursor @@ -72,6 +74,7 @@ StatusWith<BSONObj> storePossibleCursor(OperationContext* opCtx, const NamespaceString& requestedNss, const ShardId& shardId, const Shard::CommandResponse& commandResponse, + PrivilegeVector privileges, TailableModeEnum tailableMode) { invariant(commandResponse.hostAndPort); auto executorPool = Grid::get(opCtx)->getExecutorPool(); @@ -82,6 +85,7 @@ StatusWith<BSONObj> storePossibleCursor(OperationContext* opCtx, requestedNss, executorPool->getArbitraryExecutor(), Grid::get(opCtx)->getCursorManager(), + std::move(privileges), tailableMode); } @@ -92,6 +96,7 @@ StatusWith<BSONObj> storePossibleCursor(OperationContext* opCtx, const NamespaceString& requestedNss, executor::TaskExecutor* executor, ClusterCursorManager* cursorManager, + PrivilegeVector privileges, TailableModeEnum tailableMode) { if (!cmdResult["ok"].trueValue() || !cmdResult.hasField("cursor")) { return cmdResult; @@ -126,6 +131,7 @@ StatusWith<BSONObj> storePossibleCursor(OperationContext* opCtx, params.tailableMode = tailableMode; params.lsid = opCtx->getLogicalSessionId(); params.txnNumber = opCtx->getTxnNumber(); + params.originatingPrivileges = std::move(privileges); if (TransactionRouter::get(opCtx)) { params.isAutoCommit = false; |