Browse Source

Only check cert expiry vs TIME_MAX when time_t is less than 64-bit

Fixes issue 20558 / CID 1375988.
Nick Mathewson 7 years ago
parent
commit
00bdd56b18
1 changed files with 5 additions and 4 deletions
  1. 5 4
      src/or/torcert.c

+ 5 - 4
src/or/torcert.c

@@ -156,11 +156,12 @@ tor_cert_parse(const uint8_t *encoded, const size_t len)
   cert->encoded_len = len;
 
   memcpy(cert->signed_key.pubkey, parsed->certified_key, 32);
-  const int64_t valid_until_64 = ((int64_t)parsed->exp_field) * 3600;
+  int64_t valid_until_64 = ((int64_t)parsed->exp_field) * 3600;
+#if SIZEOF_TIME_T < SIZEOF_INT64_T
   if (valid_until_64 > TIME_MAX)
-    cert->valid_until = TIME_MAX - 1;
-  else
-    cert->valid_until = (time_t) valid_until_64;
+    valid_until_64 = TIME_MAX - 1;
+#endif
+  cert->valid_until = (time_t) valid_until_64;
   cert->cert_type = parsed->cert_type;
 
   for (unsigned i = 0; i < ed25519_cert_getlen_ext(parsed); ++i) {