mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-30 18:57:27 +02:00
Fix bug in wolfSSL_ASN1_TIME_diff.
This function should not error out if one of the passed in times is the Unix epoch. This amounts to erroring out when the XMKTIME returns < 0, rather than <= 0.
This commit is contained in:
@ -32084,7 +32084,7 @@ int wolfSSL_ASN1_TIME_diff(int *days, int *secs, const WOLFSSL_ASN1_TIME *from,
|
|||||||
}
|
}
|
||||||
|
|
||||||
fromSecs = XMKTIME(fromTm);
|
fromSecs = XMKTIME(fromTm);
|
||||||
if (fromSecs <= 0) {
|
if (fromSecs < 0) {
|
||||||
WOLFSSL_MSG("XMKTIME for from time failed.");
|
WOLFSSL_MSG("XMKTIME for from time failed.");
|
||||||
return WOLFSSL_FAILURE;
|
return WOLFSSL_FAILURE;
|
||||||
}
|
}
|
||||||
@ -32103,7 +32103,7 @@ int wolfSSL_ASN1_TIME_diff(int *days, int *secs, const WOLFSSL_ASN1_TIME *from,
|
|||||||
}
|
}
|
||||||
|
|
||||||
toSecs = XMKTIME(toTm);
|
toSecs = XMKTIME(toTm);
|
||||||
if (toSecs <= 0) {
|
if (toSecs < 0) {
|
||||||
WOLFSSL_MSG("XMKTIME for to time failed.");
|
WOLFSSL_MSG("XMKTIME for to time failed.");
|
||||||
return WOLFSSL_FAILURE;
|
return WOLFSSL_FAILURE;
|
||||||
}
|
}
|
||||||
|
14
tests/api.c
14
tests/api.c
@ -30618,15 +30618,23 @@ static void test_wolfSSL_ASN1_TIME_diff(void)
|
|||||||
|
|
||||||
AssertNotNull((fromTime = ASN1_TIME_new()));
|
AssertNotNull((fromTime = ASN1_TIME_new()));
|
||||||
/* Feb 22, 2003, 21:15:15 */
|
/* Feb 22, 2003, 21:15:15 */
|
||||||
AssertIntEQ(ASN1_TIME_set_string(fromTime, "030222211515Z"), 1);
|
AssertIntEQ(ASN1_TIME_set_string(fromTime, "030222211515Z"), WOLFSSL_SUCCESS);
|
||||||
AssertNotNull((toTime = ASN1_TIME_new()));
|
AssertNotNull((toTime = ASN1_TIME_new()));
|
||||||
/* Dec 19, 2010, 18:10:11 */
|
/* Dec 19, 2010, 18:10:11 */
|
||||||
AssertIntEQ(ASN1_TIME_set_string(toTime, "101219181011Z"), 1);
|
AssertIntEQ(ASN1_TIME_set_string(toTime, "101219181011Z"), WOLFSSL_SUCCESS);
|
||||||
AssertIntEQ(ASN1_TIME_diff(&daysDiff, &secsDiff, fromTime, toTime), 1);
|
AssertIntEQ(ASN1_TIME_diff(&daysDiff, &secsDiff, fromTime, toTime), WOLFSSL_SUCCESS);
|
||||||
|
|
||||||
AssertIntEQ(daysDiff, 2856);
|
AssertIntEQ(daysDiff, 2856);
|
||||||
AssertIntEQ(secsDiff, 75296);
|
AssertIntEQ(secsDiff, 75296);
|
||||||
|
|
||||||
|
/* Edge case with Unix epoch. */
|
||||||
|
AssertNotNull(ASN1_TIME_set_string(fromTime, "19700101000000Z"));
|
||||||
|
AssertNotNull(ASN1_TIME_set_string(toTime, "19800101000000Z"));
|
||||||
|
AssertIntEQ(ASN1_TIME_diff(&daysDiff, &secsDiff, fromTime, toTime), WOLFSSL_SUCCESS);
|
||||||
|
|
||||||
|
AssertIntEQ(daysDiff, 3652);
|
||||||
|
AssertIntEQ(secsDiff, 0);
|
||||||
|
|
||||||
ASN1_TIME_free(fromTime);
|
ASN1_TIME_free(fromTime);
|
||||||
ASN1_TIME_free(toTime);
|
ASN1_TIME_free(toTime);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user