Timing: fix mbedtls_set_alarm(0) on Unix/POSIX

The POSIX/Unix implementation of mbedtls_set_alarm did not set the
mbedtls_timing_alarmed flag when called with 0, which was inconsistent
with what the documentation implied and with the Windows behavior.
diff --git a/ChangeLog b/ChangeLog
index b3d4d51..bfba279 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -9,6 +9,7 @@
    * Fix memory leak in mbedtls_ssl_set_hostname() when called multiple times.
      Found by projectgus and jethrogb, #836.
    * Fix usage help in ssl_server2 example. Found and fixed by Bei Lin.
+   * Fix mbedtls_timing_alarm(0) on Unix.
 
 = mbed TLS 2.6.0 branch released 2017-08-10
 
diff --git a/library/timing.c b/library/timing.c
index a7c7ff0..4576f31 100644
--- a/library/timing.c
+++ b/library/timing.c
@@ -315,6 +315,12 @@
     mbedtls_timing_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. */
+        mbedtls_timing_alarmed = 1;
+    }
 }
 
 #endif /* _WIN32 && !EFIX64 && !EFI32 */