diff --git a/library/timing.c b/library/timing.c index 6d68fc6301d5..66da2a355af5 100644 --- a/library/timing.c +++ b/library/timing.c @@ -233,9 +233,7 @@ volatile int mbedtls_timing_alarmed = 0; unsigned long mbedtls_timing_get_timer(struct mbedtls_timing_hr_time *val, int reset) { - /* We can't safely cast val because it may not be aligned, so use memcpy */ struct _hr_time t; - memcpy(&t, val, sizeof(struct _hr_time)); if (reset) { QueryPerformanceCounter(&t.start); @@ -244,6 +242,8 @@ unsigned long mbedtls_timing_get_timer(struct mbedtls_timing_hr_time *val, int r } else { unsigned long delta; LARGE_INTEGER now, hfreq; + /* We can't safely cast val because it may not be aligned, so use memcpy */ + memcpy(&t, val, sizeof(struct _hr_time)); QueryPerformanceCounter(&now); QueryPerformanceFrequency(&hfreq); delta = (unsigned long) ((now.QuadPart - t.start.QuadPart) * 1000ul @@ -282,9 +282,7 @@ void mbedtls_set_alarm(int seconds) unsigned long mbedtls_timing_get_timer(struct mbedtls_timing_hr_time *val, int reset) { - /* We can't safely cast val because it may not be aligned, so use memcpy */ struct _hr_time t; - memcpy(&t, val, sizeof(struct _hr_time)); if (reset) { gettimeofday(&t.start, NULL); @@ -293,6 +291,8 @@ unsigned long mbedtls_timing_get_timer(struct mbedtls_timing_hr_time *val, int r } else { unsigned long delta; struct timeval now; + /* We can't safely cast val because it may not be aligned, so use memcpy */ + memcpy(&t, val, sizeof(struct _hr_time)); gettimeofday(&now, NULL); delta = (now.tv_sec - t.start.tv_sec) * 1000ul + (now.tv_usec - t.start.tv_usec) / 1000;