[tor-commits] [tor/master] Lower the maximum size of a private key file to 16 MB

nickm at torproject.org nickm at torproject.org
Mon Sep 17 15:10:09 UTC 2018


commit f606b3cfd157dc52872e8b40a9a042861d9246e1
Author: Nick Mathewson <nickm at torproject.org>
Date:   Mon Sep 17 11:08:56 2018 -0400

    Lower the maximum size of a private key file to 16 MB
    
    This shouldn't be a user-visible change: nobody has a 16 MB RSA
    key that they're trying to use with Tor.
    
    I'm doing this to fix CID 1439330 / ticket 27730, where coverity
    complains (on 64-bit) that we are making a comparison that is never
    true.
---
 src/lib/crypt_ops/crypto_rsa.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/lib/crypt_ops/crypto_rsa.c b/src/lib/crypt_ops/crypto_rsa.c
index 567b4531a..c3c6db6c3 100644
--- a/src/lib/crypt_ops/crypto_rsa.c
+++ b/src/lib/crypt_ops/crypto_rsa.c
@@ -540,6 +540,9 @@ crypto_pk_read_private_key_from_string(crypto_pk_t *env,
   return crypto_pk_read_from_string_generic(env, src, len, true);
 }
 
+/** If a file is longer than this, we won't try to decode its private key */
+#define MAX_PRIVKEY_FILE_LEN (16*1024*1024)
+
 /** Read a PEM-encoded private key from the file named by
  * <b>keyfile</b> into <b>env</b>.  Return 0 on success, -1 on failure.
  */
@@ -551,7 +554,7 @@ crypto_pk_read_private_key_from_filename(crypto_pk_t *env,
   char *buf = read_file_to_str(keyfile, 0, &st);
   if (!buf)
     return -1;
-  if (st.st_size > SSIZE_MAX)
+  if (st.st_size > MAX_PRIVKEY_FILE_LEN)
     return -1;
 
   int rv = crypto_pk_read_private_key_from_string(env, buf,



More information about the tor-commits mailing list