Skip to content

Commit 4319a20

Browse files
committed
DateTimeOffset Out Of Range protection
1 parent 04f1f51 commit 4319a20

File tree

2 files changed

+26
-2
lines changed

2 files changed

+26
-2
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
using System;
2+
3+
namespace ITfoxtec.Identity.Saml2
4+
{
5+
public static class DateTimeExtensions
6+
{
7+
public static DateTimeOffset ToDateTimeOffsetOutOfRangeProtected(this DateTime dateTime)
8+
{
9+
var utcDateTime = dateTime.ToUniversalTime();
10+
if(utcDateTime <= DateTimeOffset.MinValue.UtcDateTime)
11+
{
12+
return DateTimeOffset.MinValue;
13+
}
14+
else if (utcDateTime >= DateTimeOffset.MaxValue.UtcDateTime)
15+
{
16+
return DateTimeOffset.MaxValue;
17+
}
18+
else
19+
{
20+
return new DateTimeOffset(dateTime);
21+
}
22+
}
23+
}
24+
}

src/ITfoxtec.Identity.Saml2/Request/Saml2AuthnResponse.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,12 @@ public class Saml2AuthnResponse : Saml2Response
4343
/// <summary>
4444
/// Gets the first instant in time at which this security token is valid.
4545
/// </summary>
46-
public DateTimeOffset SecurityTokenValidFrom { get { return Saml2SecurityToken.ValidFrom > DateTime.MinValue ? Saml2SecurityToken.ValidFrom : DateTime.UtcNow; } }
46+
public DateTimeOffset SecurityTokenValidFrom { get { return Saml2SecurityToken.ValidFrom.ToDateTimeOffsetOutOfRangeProtected(); } }
4747

4848
/// <summary>
4949
/// Gets the last instant in time at which this security token is valid.
5050
/// </summary>
51-
public DateTimeOffset SecurityTokenValidTo { get { return Saml2SecurityToken.ValidTo; } }
51+
public DateTimeOffset SecurityTokenValidTo { get { return Saml2SecurityToken.ValidTo.ToDateTimeOffsetOutOfRangeProtected(); } }
5252

5353
/// <summary>
5454
/// Saml2 Security Token Handler.

0 commit comments

Comments
 (0)