I have following code that has a multiplication of a number with 60000 to convert minutes to milliseconds. I have implemented a overflow check as shown below. Still I am getting the following code analysis warring. How to overcome this warning without suppressing it?
Warning: CA2233: Correct the potential overflow in the operation 'sessionExpiryValueInMinutes*60' in 'ApplicationSessionDAL.IsSessionExpired(short)'
Note: TimeSpan.TotalMilliseconds Property is of double
datatype
CODE
public void IsSessionExpired(Int16 sessionExpiryValueInMinutes)
{
if (sessionExpiryValueInMinutes > (double.MaxValue) / 60000)
{
//Overflow check
throw new ArgumentOutOfRangeException("sessionExpiryValueInMinutes");
}
else
{
//int milliSecondsValue = sessionExpiryValueInMinutes * 60 * 1000;
DateTime lastAccessTime = new DateTime(2013, 1, 1);
TimeSpan elapsedTime = (DateTime.Now - lastAccessTime);
if (elapsedTime.TotalMilliseconds > (sessionExpiryValueInMinutes * 60 * 1000))
{
bool isTimeExpired = true;
}
}
}
REFERENCES