summaryrefslogtreecommitdiff
path: root/src/mongo/client/sasl_client_authenticate.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/client/sasl_client_authenticate.cpp')
-rw-r--r--src/mongo/client/sasl_client_authenticate.cpp94
1 files changed, 46 insertions, 48 deletions
diff --git a/src/mongo/client/sasl_client_authenticate.cpp b/src/mongo/client/sasl_client_authenticate.cpp
index 7b50cbc8dc8..e7ad3e57ece 100644
--- a/src/mongo/client/sasl_client_authenticate.cpp
+++ b/src/mongo/client/sasl_client_authenticate.cpp
@@ -36,58 +36,56 @@
namespace mongo {
- using namespace mongoutils;
+using namespace mongoutils;
- Status (*saslClientAuthenticate)(DBClientWithCommands* client,
- const BSONObj& saslParameters) = NULL;
+Status (*saslClientAuthenticate)(DBClientWithCommands* client,
+ const BSONObj& saslParameters) = NULL;
- const char* const saslStartCommandName = "saslStart";
- const char* const saslContinueCommandName = "saslContinue";
- const char* const saslCommandAutoAuthorizeFieldName = "autoAuthorize";
- const char* const saslCommandCodeFieldName = "code";
- const char* const saslCommandConversationIdFieldName = "conversationId";
- const char* const saslCommandDoneFieldName = "done";
- const char* const saslCommandErrmsgFieldName = "errmsg";
- const char* const saslCommandMechanismFieldName = "mechanism";
- const char* const saslCommandMechanismListFieldName = "supportedMechanisms";
- const char* const saslCommandPasswordFieldName = "pwd";
- const char* const saslCommandPayloadFieldName = "payload";
- const char* const saslCommandUserDBFieldName = "db";
- const char* const saslCommandUserFieldName = "user";
- const char* const saslCommandServiceHostnameFieldName = "serviceHostname";
- const char* const saslCommandServiceNameFieldName = "serviceName";
- const char* const saslCommandDigestPasswordFieldName = "digestPassword";
- const char* const saslDefaultDBName = "$external";
- const char* const saslDefaultServiceName = "mongodb";
+const char* const saslStartCommandName = "saslStart";
+const char* const saslContinueCommandName = "saslContinue";
+const char* const saslCommandAutoAuthorizeFieldName = "autoAuthorize";
+const char* const saslCommandCodeFieldName = "code";
+const char* const saslCommandConversationIdFieldName = "conversationId";
+const char* const saslCommandDoneFieldName = "done";
+const char* const saslCommandErrmsgFieldName = "errmsg";
+const char* const saslCommandMechanismFieldName = "mechanism";
+const char* const saslCommandMechanismListFieldName = "supportedMechanisms";
+const char* const saslCommandPasswordFieldName = "pwd";
+const char* const saslCommandPayloadFieldName = "payload";
+const char* const saslCommandUserDBFieldName = "db";
+const char* const saslCommandUserFieldName = "user";
+const char* const saslCommandServiceHostnameFieldName = "serviceHostname";
+const char* const saslCommandServiceNameFieldName = "serviceName";
+const char* const saslCommandDigestPasswordFieldName = "digestPassword";
+const char* const saslDefaultDBName = "$external";
+const char* const saslDefaultServiceName = "mongodb";
- Status saslExtractPayload(const BSONObj& cmdObj, std::string* payload, BSONType* type) {
- BSONElement payloadElement;
- Status status = bsonExtractField(cmdObj, saslCommandPayloadFieldName, &payloadElement);
- if (!status.isOK())
- return status;
+Status saslExtractPayload(const BSONObj& cmdObj, std::string* payload, BSONType* type) {
+ BSONElement payloadElement;
+ Status status = bsonExtractField(cmdObj, saslCommandPayloadFieldName, &payloadElement);
+ if (!status.isOK())
+ return status;
- *type = payloadElement.type();
- if (payloadElement.type() == BinData) {
- const char* payloadData;
- int payloadLen;
- payloadData = payloadElement.binData(payloadLen);
- if (payloadLen < 0)
- return Status(ErrorCodes::InvalidLength, "Negative payload length");
- *payload = std::string(payloadData, payloadData + payloadLen);
+ *type = payloadElement.type();
+ if (payloadElement.type() == BinData) {
+ const char* payloadData;
+ int payloadLen;
+ payloadData = payloadElement.binData(payloadLen);
+ if (payloadLen < 0)
+ return Status(ErrorCodes::InvalidLength, "Negative payload length");
+ *payload = std::string(payloadData, payloadData + payloadLen);
+ } else if (payloadElement.type() == String) {
+ try {
+ *payload = base64::decode(payloadElement.str());
+ } catch (UserException& e) {
+ return Status(ErrorCodes::FailedToParse, e.what());
}
- else if (payloadElement.type() == String) {
- try {
- *payload = base64::decode(payloadElement.str());
- } catch (UserException& e) {
- return Status(ErrorCodes::FailedToParse, e.what());
- }
- }
- else {
- return Status(ErrorCodes::TypeMismatch,
- (str::stream() << "Wrong type for field; expected BinData or String for "
- << payloadElement));
- }
-
- return Status::OK();
+ } else {
+ return Status(ErrorCodes::TypeMismatch,
+ (str::stream() << "Wrong type for field; expected BinData or String for "
+ << payloadElement));
}
+
+ return Status::OK();
+}
} // namespace mongo