mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2026-03-20 11:11:08 +01:00
Fix a build error with MSVC
Also fixes a minor bug on Windows with timers running over ~49 days. Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
This commit is contained in:
@@ -3,3 +3,11 @@ API changes
|
|||||||
TF-PSA-Crypto configuration, unless MBEDTLS_TIMING_ALT is enabled.
|
TF-PSA-Crypto configuration, unless MBEDTLS_TIMING_ALT is enabled.
|
||||||
As a benefit, platforms where the default implementation is not
|
As a benefit, platforms where the default implementation is not
|
||||||
supported now only need to implement MBEDTLS_PLATFORM_MS_TIME_ALT.
|
supported now only need to implement MBEDTLS_PLATFORM_MS_TIME_ALT.
|
||||||
|
* When MBEDTLS_TIMING_ALT is enabled, the function
|
||||||
|
mbedtls_timing_get_timer() now returns unsigned long long instead
|
||||||
|
of unsigned long.
|
||||||
|
|
||||||
|
Bugfix
|
||||||
|
* mbedtls_timing_get_delay() now correctly treats a timer as expired
|
||||||
|
after more than 2^32 ms (about 49 days) on platforms where long is
|
||||||
|
a 32-bit type.
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ typedef struct mbedtls_timing_delay_context {
|
|||||||
#endif /* MBEDTLS_TIMING_ALT */
|
#endif /* MBEDTLS_TIMING_ALT */
|
||||||
|
|
||||||
/* Internal use */
|
/* Internal use */
|
||||||
unsigned long mbedtls_timing_get_timer(struct mbedtls_timing_hr_time *val, int reset);
|
unsigned long long mbedtls_timing_get_timer(struct mbedtls_timing_hr_time *val, int reset);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Set a pair of delays to watch
|
* \brief Set a pair of delays to watch
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
#if !defined(MBEDTLS_TIMING_ALT)
|
#if !defined(MBEDTLS_TIMING_ALT)
|
||||||
|
|
||||||
unsigned long mbedtls_timing_get_timer(struct mbedtls_timing_hr_time *val, int reset)
|
unsigned long long mbedtls_timing_get_timer(struct mbedtls_timing_hr_time *val, int reset)
|
||||||
{
|
{
|
||||||
if (reset) {
|
if (reset) {
|
||||||
val->ms = mbedtls_ms_time();
|
val->ms = mbedtls_ms_time();
|
||||||
@@ -45,7 +45,7 @@ void mbedtls_timing_set_delay(void *data, uint32_t int_ms, uint32_t fin_ms)
|
|||||||
int mbedtls_timing_get_delay(void *data)
|
int mbedtls_timing_get_delay(void *data)
|
||||||
{
|
{
|
||||||
mbedtls_timing_delay_context *ctx = (mbedtls_timing_delay_context *) data;
|
mbedtls_timing_delay_context *ctx = (mbedtls_timing_delay_context *) data;
|
||||||
unsigned long elapsed_ms;
|
unsigned long long elapsed_ms;
|
||||||
|
|
||||||
if (ctx->fin_ms == 0) {
|
if (ctx->fin_ms == 0) {
|
||||||
return -1;
|
return -1;
|
||||||
|
|||||||
@@ -360,7 +360,9 @@ static unsigned elapsed_time(void)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return mbedtls_timing_get_timer(&hires, 0);
|
/* Wraps after ~49.7 days (assuming 32-bit int).
|
||||||
|
* Don't run udp_proxy that long! */
|
||||||
|
return (unsigned) mbedtls_timing_get_timer(&hires, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ int main(int argc, char *argv[])
|
|||||||
int exit_code = MBEDTLS_EXIT_FAILURE;
|
int exit_code = MBEDTLS_EXIT_FAILURE;
|
||||||
unsigned i, j;
|
unsigned i, j;
|
||||||
struct mbedtls_timing_hr_time timer;
|
struct mbedtls_timing_hr_time timer;
|
||||||
unsigned long ms;
|
unsigned long long ms;
|
||||||
|
|
||||||
psa_status_t status = psa_crypto_init();
|
psa_status_t status = psa_crypto_init();
|
||||||
if (status != PSA_SUCCESS) {
|
if (status != PSA_SUCCESS) {
|
||||||
@@ -151,7 +151,7 @@ int main(int argc, char *argv[])
|
|||||||
mbedtls_printf(".");
|
mbedtls_printf(".");
|
||||||
}
|
}
|
||||||
ms = mbedtls_timing_get_timer(&timer, 0);
|
ms = mbedtls_timing_get_timer(&timer, 0);
|
||||||
mbedtls_printf("\n%u iterations -> %lu ms\n", opt.iterations, ms);
|
mbedtls_printf("\n%u iterations -> %llu ms\n", opt.iterations, ms);
|
||||||
exit_code = MBEDTLS_EXIT_SUCCESS;
|
exit_code = MBEDTLS_EXIT_SUCCESS;
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
|
|||||||
Reference in New Issue
Block a user