diff --git a/library/ssl_cli.c b/library/ssl_cli.c
index 6a9523e..530b067 100644
--- a/library/ssl_cli.c
+++ b/library/ssl_cli.c
@@ -700,7 +700,7 @@
 
 #if defined(MBEDTLS_HAVE_TIME)
     t = mbedtls_time( NULL );
-    p = mbedtls_platform_put_uint32_be( p, t );
+    p = mbedtls_platform_put_uint32_be( p, (uint32_t) t );
     MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello, current time: %lu", t ) );
 #else
     if( ( ret = mbedtls_ssl_conf_get_frng( ssl->conf )
diff --git a/library/ssl_srv.c b/library/ssl_srv.c
index 4fa92fe..4601574 100644
--- a/library/ssl_srv.c
+++ b/library/ssl_srv.c
@@ -2774,7 +2774,7 @@
 
 #if defined(MBEDTLS_HAVE_TIME)
     t = mbedtls_time( NULL );
-    p = mbedtls_platform_put_uint32_be( p, t );
+    p = mbedtls_platform_put_uint32_be( p, (uint32_t) t );
 
     MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, current time: %lu", t ) );
 #else
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index 25351ae..c8e7080 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -2236,7 +2236,7 @@
         padlen = 40;
 
     memcpy( header, ctr, 8 );
-    header[ 8] = (unsigned char)  type;
+    header[8] = (unsigned char) type;
     mbedtls_platform_put_uint16_be( &header[9], len );
 
     memset( padding, 0x36, padlen );
@@ -4624,12 +4624,12 @@
 
 static uint32_t ssl_get_hs_frag_len( mbedtls_ssl_context const *ssl )
 {
-    return mbedtls_platform_get_uint24_be( &ssl->in_msg[9] );
+    return ( mbedtls_platform_get_uint24_be( &ssl->in_msg[9] ) );
 }
 
 static uint32_t ssl_get_hs_frag_off( mbedtls_ssl_context const *ssl )
 {
-    return mbedtls_platform_get_uint24_be( &ssl->in_msg[6] );
+    return ( mbedtls_platform_get_uint24_be( &ssl->in_msg[6] ) );
 }
 
 static int ssl_check_hs_header( mbedtls_ssl_context const *ssl )
@@ -4732,7 +4732,7 @@
 
 static uint32_t ssl_get_hs_total_len( mbedtls_ssl_context const *ssl )
 {
-    return mbedtls_platform_get_uint24_be( &ssl->in_msg[1] );
+    return ( mbedtls_platform_get_uint24_be( &ssl->in_msg[1] ) );
 }
 
 int mbedtls_ssl_prepare_handshake_record( mbedtls_ssl_context *ssl )
