Timing: fix set_alarm(0) on Unix/POSIX

The POSIX/Unix implementation of set_alarm did not set the
alarmed flag when called with 0, which was inconsistent
with what the documentation implied and with the Windows behavior.
This commit is contained in:
Gilles Peskine 2017-10-10 20:10:46 +02:00
parent 605c2284bc
commit de896ebd26
2 changed files with 7 additions and 0 deletions

View File

@ -43,6 +43,7 @@ Bugfix
* Fix word size check in in pk.c to not depend on MBEDTLS_HAVE_INT64.
* Fix crash when calling mbedtls_ssl_cache_free() twice. Found by
MilenkoMitrovic, #1104
* Fix mbedtls_timing_alarm(0) on Unix.
Changes
* Extend cert_write example program by options to set the CRT version

View File

@ -318,6 +318,12 @@ void set_alarm( int seconds )
alarmed = 0;
signal( SIGALRM, sighandler );
alarm( seconds );
if( seconds == 0 )
{
/* alarm(0) cancelled any previous pending alarm, but the
handler won't fire, so raise the flag straight away. */
alarmed = 1;
}
}
void m_sleep( int milliseconds )