[System.Net.Http] HttpClient timeout range checks. Fixes #25755
authorMarek Safar <marek.safar@gmail.com>
Fri, 29 Sep 2017 14:08:49 +0000 (16:08 +0200)
committerMarek Safar <marek.safar@gmail.com>
Fri, 29 Sep 2017 21:45:47 +0000 (23:45 +0200)
mcs/class/System.Net.Http/System.Net.Http/HttpClient.cs
mcs/class/System.Net.Http/Test/System.Net.Http/HttpClientTest.cs

index baa6dd9f0d26cc6a219c5187164013043009be9d..c9fd2354abe136be56708c73b9a2bf30ff6f2098 100644 (file)
@@ -96,7 +96,7 @@ namespace System.Net.Http
                                return timeout;
                        }
                        set {
-                               if (value != System.Threading.Timeout.InfiniteTimeSpan && value < TimeSpan.Zero)
+                               if (value != System.Threading.Timeout.InfiniteTimeSpan && (value <= TimeSpan.Zero || value.Ticks > int.MaxValue))
                                        throw new ArgumentOutOfRangeException ();
 
                                timeout = value;
index 8344c26cc68687b585f7be3a8ef3dd08c2f36328..c87bb7562a16337730f027439914e8bfcfb2b383 100644 (file)
@@ -308,6 +308,18 @@ namespace MonoTests.System.Net.Http
                                Assert.Fail ("#2");
                        } catch (ArgumentOutOfRangeException) {
                        }
+
+                       try {
+                               client.Timeout = TimeSpan.Zero;
+                               Assert.Fail ("#3");
+                       } catch (ArgumentOutOfRangeException) {
+                       }
+
+                       try {
+                               client.Timeout = new TimeSpan(int.MaxValue + 1L);
+                               Assert.Fail ("#3");
+                       } catch (ArgumentOutOfRangeException) {
+                       }
                }
 
                [Test]