]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Only check cert expiry vs TIME_MAX when time_t is less than 64-bit
authorNick Mathewson <nickm@torproject.org>
Thu, 3 Nov 2016 23:29:52 +0000 (19:29 -0400)
committerNick Mathewson <nickm@torproject.org>
Thu, 3 Nov 2016 23:29:52 +0000 (19:29 -0400)
Fixes issue 20558 / CID 1375988.

src/or/torcert.c

index 852def9ef6f8263dbb23eb674461c58df1b55c1e..6bc880a89b06277509e9432eda56df3ca74e32ba 100644 (file)
@@ -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) {