summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSara Golemon <sara.golemon@mongodb.com>2019-04-17 15:06:27 +0000
committerSara Golemon <sara.golemon@mongodb.com>2019-04-17 23:00:40 +0000
commit5f6b94b6413a2af3106a342b11e261f647873035 (patch)
tree404d67f7e26dafb59db94e8a7090dff78fcb4565
parent1c54cae8d57f6ab29c155a2a8edeb12da71c18d5 (diff)
downloadmongo-5f6b94b6413a2af3106a342b11e261f647873035.tar.gz
SERVER-39864 Only request principal name during saslStart when needed
(cherry picked from commit 70a2729673f629f1881abc042e3374e6cffa05bb)
-rw-r--r--src/mongo/db/auth/sasl_commands.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/mongo/db/auth/sasl_commands.cpp b/src/mongo/db/auth/sasl_commands.cpp
index bea6b1192ab..6e04022cf38 100644
--- a/src/mongo/db/auth/sasl_commands.cpp
+++ b/src/mongo/db/auth/sasl_commands.cpp
@@ -238,7 +238,12 @@ StatusWith<std::unique_ptr<AuthenticationSession>> doSaslStart(OperationContext*
auto session = std::make_unique<AuthenticationSession>(std::move(swMech.getValue()));
Status statusStep = doSaslStep(opCtx, session.get(), cmdObj, result);
- *principalName = session->getMechanism().getPrincipalName().toString();
+
+ if (!statusStep.isOK() || session->getMechanism().isSuccess()) {
+ // Only attempt to populate principal name if we're done (successfully or not).
+ *principalName = session->getMechanism().getPrincipalName().toString();
+ }
+
if (!statusStep.isOK()) {
return statusStep;
}