Skip to content

Commit 0b186ab

Browse files
CSHARP-2958: Research possible places when we use string comparison in an unsafe way.
1 parent 8686591 commit 0b186ab

File tree

17 files changed

+23
-21
lines changed

17 files changed

+23
-21
lines changed

src/MongoDB.Bson/IO/BsonBinaryReader.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ public override BsonType ReadBsonType()
219219
}
220220
catch (FormatException ex)
221221
{
222-
if (ex.Message.StartsWith("Detected unknown BSON type"))
222+
if (ex.Message.StartsWith("Detected unknown BSON type", StringComparison.Ordinal))
223223
{
224224
// insert the element name into the error message
225225
var periodIndex = ex.Message.IndexOf('.');

src/MongoDB.Bson/Serialization/Conventions/ConventionBase.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public string Name
6161
private static string GetName(Type type)
6262
{
6363
var name = type.Name;
64-
if (name.EndsWith("Convention"))
64+
if (name.EndsWith("Convention", StringComparison.Ordinal))
6565
{
6666
return name.Substring(0, name.Length - 10);
6767
}

src/MongoDB.Driver.Core/Core/Authentication/ScramShaAuthenticator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ public ScramShaMechanism(
125125
_h = h;
126126
_hi = hi;
127127
_hmac = hmac;
128-
if (!hashAlgorithmName.ToString().StartsWith("SHA"))
128+
if (!hashAlgorithmName.ToString().StartsWith("SHA", StringComparison.Ordinal))
129129
{
130130
throw new ArgumentException("Must specify a SHA algorithm.");
131131
}

src/MongoDB.Driver.Core/Core/Clusters/DnsMonitor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ private List<DnsEndPoint> GetValidEndPoints(List<SrvRecord> srvRecords)
128128
{
129129
var endPoint = srvRecord.EndPoint;
130130
var host = endPoint.Host;
131-
if (host.EndsWith("."))
131+
if (host.EndsWith(".", StringComparison.Ordinal))
132132
{
133133
host = host.Substring(0, host.Length - 1);
134134
endPoint = new DnsEndPoint(host, endPoint.Port);

src/MongoDB.Driver.Core/Core/Configuration/ConnectionString.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1202,7 +1202,7 @@ private List<string> GetHostsFromResponse(IDnsQueryResponse response)
12021202
foreach (var srvRecord in response.Answers.SrvRecords())
12031203
{
12041204
var h = srvRecord.Target.ToString();
1205-
if (h.EndsWith("."))
1205+
if (h.EndsWith(".", StringComparison.Ordinal))
12061206
{
12071207
h = h.Substring(0, h.Length - 1);
12081208
}

src/MongoDB.Driver.Core/Core/Connections/CommandEventHelper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1038,7 +1038,7 @@ private BsonDocument BuildFindCommandFromQuery(QueryMessage message)
10381038
// explain is special and gets handled elsewhere
10391039
break;
10401040
default:
1041-
if (element.Name.StartsWith("$"))
1041+
if (element.Name.StartsWith("$", StringComparison.Ordinal))
10421042
{
10431043
// should we actually remove the $ or not?
10441044
command[element.Name.Substring(1)] = element.Value;

src/MongoDB.Driver.Core/Core/Operations/ListCollectionsUsingQueryOperation.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ private IEnumerable<BsonDocument> NormalizeQueryResponse(IEnumerable<BsonDocumen
177177
foreach (var collection in collections)
178178
{
179179
var name = (string)collection["name"];
180-
if (name.StartsWith(prefix))
180+
if (name.StartsWith(prefix, StringComparison.Ordinal))
181181
{
182182
var collectionName = name.Substring(prefix.Length);
183183
if (!collectionName.Contains('$'))

src/MongoDB.Driver.Core/Core/WireProtocol/CommandUsingCommandMessageWireProtocol.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,7 @@ private bool IsRetryableWriteExceptionAndDeploymentDoesNotSupportRetryableWrites
371371
exception.Result.TryGetValue("code", out var errorCode) &&
372372
errorCode.ToInt32() == 20 &&
373373
exception.Result.TryGetValue("errmsg", out var errmsg) &&
374-
errmsg.AsString.StartsWith("Transaction numbers");
374+
errmsg.AsString.StartsWith("Transaction numbers", StringComparison.Ordinal);
375375
}
376376

377377

src/MongoDB.Driver.Legacy/Linq/Translators/PredicateTranslator.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1289,11 +1289,11 @@ private IMongoQuery BuildStringQuery(MethodCallExpression methodCallExpression)
12891289
}
12901290

12911291
pattern = "^" + pattern + "$";
1292-
if (pattern.StartsWith("^.*"))
1292+
if (pattern.StartsWith("^.*", StringComparison.Ordinal))
12931293
{
12941294
pattern = pattern.Substring(3);
12951295
}
1296-
if (pattern.EndsWith(".*$"))
1296+
if (pattern.EndsWith(".*$", StringComparison.Ordinal))
12971297
{
12981298
pattern = pattern.Substring(0, pattern.Length - 3);
12991299
}

src/MongoDB.Driver.Legacy/MongoCollection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -665,7 +665,7 @@ private FindAndModifyResult FindAndModify(IClientSessionHandle session, FindAndM
665665
var sort = args.SortBy == null ? null : new BsonDocumentWrapper(args.SortBy);
666666

667667
FindAndModifyOperationBase<BsonDocument> operation;
668-
if (updateDocument.ElementCount > 0 && updateDocument.GetElement(0).Name.StartsWith("$"))
668+
if (updateDocument.ElementCount > 0 && updateDocument.GetElement(0).Name.StartsWith("$", StringComparison.Ordinal))
669669
{
670670
operation = new FindOneAndUpdateOperation<BsonDocument>(_collectionNamespace, filter, updateDocument, resultSerializer, messageEncoderSettings)
671671
{

0 commit comments

Comments
 (0)