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>
... | ... |
@@ -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, ×tamp, sizeof(timestamp))); |
748 | 748 |
} |