Skip to content

Commit 070312d

Browse files
fix(requests): 🐛 throw on unreadable CSR stream
1 parent 3ed3f3b commit 070312d

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

SectigoCertificateManager.Tests/RenewCertificateRequestTests.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ private sealed class TestProgress : IProgress<double> {
1616
public void Report(double value) => Value = value;
1717
}
1818

19+
private sealed class UnreadableStream : MemoryStream {
20+
public override bool CanRead => false;
21+
}
22+
1923
/// <summary>Reads CSR from a stream.</summary>
2024
[Fact]
2125
public void SetCsr_FromStream_SetsProperty() {
@@ -51,4 +55,12 @@ public void SetCsr_SeeksToBeginning() {
5155

5256
Assert.Equal(Base64Csr, request.Csr);
5357
}
58+
59+
[Fact]
60+
public void SetCsr_UnreadableStream_Throws() {
61+
using var stream = new UnreadableStream();
62+
var request = new RenewCertificateRequest();
63+
64+
Assert.Throws<ArgumentException>(() => request.SetCsr(stream));
65+
}
5466
}

SectigoCertificateManager/Requests/RenewCertificateRequest.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ public sealed class RenewCertificateRequest {
2626
public void SetCsr(Stream stream, IProgress<double>? progress = null) {
2727
Guard.AgainstNull(stream, nameof(stream));
2828

29+
if (!stream.CanRead) {
30+
throw new ArgumentException("Stream must be readable.", nameof(stream));
31+
}
32+
2933
if (stream.CanSeek) {
3034
stream.Seek(0, SeekOrigin.Begin);
3135
}

0 commit comments

Comments
 (0)