Skip to content

Commit 0f1523b

Browse files
authored
Fixed base64 decode buffer size (#387)
1 parent 4884934 commit 0f1523b

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

src/NATS.Client.KeyValueStore/NatsKVStore.cs

+16-9
Original file line numberDiff line numberDiff line change
@@ -267,22 +267,29 @@ public async ValueTask<NatsKVEntry<T>> GetEntryAsync<T>(string key, ulong revisi
267267
throw new NatsKVException("Can't parse timestamp message value");
268268

269269
T? data;
270-
var bytes = ArrayPool<byte>.Shared.Rent(_context.Connection.Opts.ReaderBufferSize);
271-
try
270+
if (response.Message.Data != null)
272271
{
273-
if (response.Message.Data != null && Convert.TryFromBase64String(response.Message.Data, bytes, out var written))
272+
var bytes = ArrayPool<byte>.Shared.Rent(response.Message.Data.Length);
273+
try
274274
{
275-
var buffer = new ReadOnlySequence<byte>(bytes.AsMemory(0, written));
276-
data = serializer.Deserialize(buffer);
275+
if (Convert.TryFromBase64String(response.Message.Data, bytes, out var written))
276+
{
277+
var buffer = new ReadOnlySequence<byte>(bytes.AsMemory(0, written));
278+
data = serializer.Deserialize(buffer);
279+
}
280+
else
281+
{
282+
throw new NatsKVException("Can't decode data message value");
283+
}
277284
}
278-
else
285+
finally
279286
{
280-
throw new NatsKVException("Can't decode data message value");
287+
ArrayPool<byte>.Shared.Return(bytes);
281288
}
282289
}
283-
finally
290+
else
284291
{
285-
ArrayPool<byte>.Shared.Return(bytes);
292+
data = default;
286293
}
287294

288295
return new NatsKVEntry<T>(Bucket, key)

0 commit comments

Comments
 (0)