summaryrefslogtreecommitdiff
path: root/src/mongo/s/query/store_possible_cursor.cpp
diff options
context:
space:
mode:
authorIsabella Siu <isabella.siu@10gen.com>2019-01-11 11:16:24 -0500
committerIsabella Siu <isabella.siu@10gen.com>2019-02-08 14:34:32 -0500
commit8e5e745e98d33633e7d24a2629f22cdba79d9851 (patch)
tree9e02d92dadcf67140fe8707d792e55cf12b5443e /src/mongo/s/query/store_possible_cursor.cpp
parent7a7baa2539ec169335086e45c7d0b85ba7cdb877 (diff)
downloadmongo-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.cpp6
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;