Browse code

tls-crypt: properly cast time_t to uint64_t

The exact type of time_t is platform dependent and therefore
can't be assumed to be uint64_t all the time.

For example, on 32bit platforms, where time_t is defined as long
(32bit), the compiler will generate the following warning, due
to the arithmetic used in the macro:

tls_crypt.c:745:29: warning: shift count >= width of type
[-Wshift-count-overflow]

Force time_t to be parsed as uint64_t.

Reported-by: Arne Schwabe <arne@rfc2549.org>
Signed-off-by: Antonio Quartulli <a@unstable.cc>
Acked-by: Arne Schwabe <arne@rfc2549.org>
Message-Id: <20181031160124.26972-1-a@unstable.cc>
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg17868.html
Signed-off-by: Gert Doering <gert@greenie.muc.de>

Antonio Quartulli authored on 2018/11/01 01:01:24
Showing 1 changed files
... ...
@@ -742,7 +742,7 @@ tls_crypt_v2_write_client_key_file(const char *filename,
742 742
     }
743 743
     else
744 744
     {
745
-        int64_t timestamp = htonll(now);
745
+        int64_t timestamp = htonll((uint64_t)now);
746 746
         ASSERT(buf_write(&metadata, &TLS_CRYPT_METADATA_TYPE_TIMESTAMP, 1));
747 747
         ASSERT(buf_write(&metadata, &timestamp, sizeof(timestamp)));
748 748
     }