Skip to content

Commit 86045e4

Browse files
authored
CSHARP-5360: Fix resource leaks in LibMongoCryptControllerBase::SendKmsRequest (#1519)
1 parent 8b465a2 commit 86045e4

File tree

3 files changed

+7
-8
lines changed

3 files changed

+7
-8
lines changed

src/MongoDB.Driver.Encryption/KmsRequest.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,14 +81,11 @@ public string KmsProvider
8181
/// Gets the message to send to KMS.
8282
/// </summary>
8383
/// <returns>The message</returns>
84-
public Binary Message
84+
public Binary GetMessage()
8585
{
86-
get {
8786
Binary binary = new Binary();
88-
8987
Check(Library.mongocrypt_kms_ctx_message(_id, binary.Handle));
9088
return binary;
91-
}
9289
}
9390

9491
/// <summary>

src/MongoDB.Driver.Encryption/LibMongoCryptControllerBase.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -283,8 +283,9 @@ private void SendKmsRequest(KmsRequest request, CancellationToken cancellation)
283283
var tlsStreamSettings = GetTlsStreamSettings(request.KmsProvider);
284284
var sslStreamFactory = new SslStreamFactory(tlsStreamSettings, _networkStreamFactory);
285285
using (var sslStream = sslStreamFactory.CreateStream(endpoint, cancellation))
286+
using (var binary = request.GetMessage())
286287
{
287-
var requestBytes = request.Message.ToArray();
288+
var requestBytes = binary.ToArray();
288289
sslStream.Write(requestBytes, 0, requestBytes.Length);
289290

290291
while (request.BytesNeeded > 0)
@@ -305,8 +306,9 @@ private async Task SendKmsRequestAsync(KmsRequest request, CancellationToken can
305306
var tlsStreamSettings = GetTlsStreamSettings(request.KmsProvider);
306307
var sslStreamFactory = new SslStreamFactory(tlsStreamSettings, _networkStreamFactory);
307308
using (var sslStream = await sslStreamFactory.CreateStreamAsync(endpoint, cancellation).ConfigureAwait(false))
309+
using (var binary = request.GetMessage())
308310
{
309-
var requestBytes = request.Message.ToArray();
311+
var requestBytes = binary.ToArray();
310312
await sslStream.WriteAsync(requestBytes, 0, requestBytes.Length).ConfigureAwait(false);
311313

312314
while (request.BytesNeeded > 0)

tests/MongoDB.Driver.Encryption.Tests/BasicTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ public void EncryptExplicitStepwise()
244244
}
245245
}
246246
}
247-
247+
248248
[Fact]
249249
public void TestAwsKeyCreationWithEndPoint()
250250
{
@@ -637,7 +637,7 @@ private CryptOptions CreateOptions()
637637
var requests = context.GetKmsMessageRequests();
638638
foreach (var req in requests)
639639
{
640-
var binary = req.Message;
640+
using var binary = req.GetMessage();
641641
_output.WriteLine("Key Document: " + binary);
642642
var postRequest = binary.ToString();
643643
// TODO: add different hosts handling

0 commit comments

Comments
 (0)