Skip to content

Commit 40a747c

Browse files
CopilotMihaZupan
andauthored
Validate HttpVersionPolicy enum values on setters
Co-authored-by: MihaZupan <25307628+MihaZupan@users.noreply.github.com>
1 parent 10aeb7b commit 40a747c

4 files changed

Lines changed: 32 additions & 0 deletions

File tree

src/libraries/System.Net.Http/src/System/Net/Http/HttpClient.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,10 @@ public HttpVersionPolicy DefaultVersionPolicy
7373
get => _defaultVersionPolicy;
7474
set
7575
{
76+
if ((uint)value > (uint)HttpVersionPolicy.RequestVersionExact)
77+
{
78+
throw new ArgumentException(SR.Format(SR.net_invalid_enum, nameof(HttpVersionPolicy)), nameof(value));
79+
}
7680
CheckDisposedOrStarted();
7781
_defaultVersionPolicy = value;
7882
}

src/libraries/System.Net.Http/src/System/Net/Http/HttpRequestMessage.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,10 @@ public HttpVersionPolicy VersionPolicy
5353
get { return _versionPolicy; }
5454
set
5555
{
56+
if ((uint)value > (uint)HttpVersionPolicy.RequestVersionExact)
57+
{
58+
throw new ArgumentException(SR.Format(SR.net_invalid_enum, nameof(HttpVersionPolicy)), nameof(value));
59+
}
5660
CheckDisposed();
5761

5862
_versionPolicy = value;

src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientTest.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1396,6 +1396,20 @@ public void DefaultRequestVersion_InvalidArgument_Throws()
13961396
}
13971397
}
13981398

1399+
[Theory]
1400+
[InlineData((HttpVersionPolicy)(-1))]
1401+
[InlineData((HttpVersionPolicy)3)]
1402+
[InlineData((HttpVersionPolicy)int.MaxValue)]
1403+
public void DefaultVersionPolicy_SetInvalidValue_ThrowsArgumentException(HttpVersionPolicy invalidValue)
1404+
{
1405+
using (var client = new HttpClient())
1406+
{
1407+
AssertExtensions.Throws<ArgumentException>("value", () => client.DefaultVersionPolicy = invalidValue);
1408+
client.DefaultVersionPolicy = HttpVersionPolicy.RequestVersionExact; // still usable after
1409+
Assert.Equal(HttpVersionPolicy.RequestVersionExact, client.DefaultVersionPolicy);
1410+
}
1411+
}
1412+
13991413
[Fact]
14001414
public async Task DefaultRequestVersion_SetAfterUse_Throws()
14011415
{

src/libraries/System.Net.Http/tests/FunctionalTests/HttpRequestMessageTest.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,16 @@ public void Version_SetToNull_ThrowsArgumentNullException()
183183
Assert.Throws<ArgumentNullException>(() => { rm.Version = null; });
184184
}
185185

186+
[Theory]
187+
[InlineData((HttpVersionPolicy)(-1))]
188+
[InlineData((HttpVersionPolicy)3)]
189+
[InlineData((HttpVersionPolicy)int.MaxValue)]
190+
public void VersionPolicy_SetInvalidValue_ThrowsArgumentException(HttpVersionPolicy invalidValue)
191+
{
192+
var rm = new HttpRequestMessage();
193+
AssertExtensions.Throws<ArgumentException>("value", () => { rm.VersionPolicy = invalidValue; });
194+
}
195+
186196
[Fact]
187197
public void Method_SetToNull_ThrowsArgumentNullException()
188198
{

0 commit comments

Comments
 (0)