[tor-commits] [tor/master] Use 25% less RAM for base64-encoded directory objects

nickm at torproject.org nickm at torproject.org
Tue Dec 18 23:59:14 UTC 2018


commit 6dc90d290daa29b4ff2c7692be3a2ed64f25dfc1
Author: Nick Mathewson <nickm at torproject.org>
Date:   Fri Dec 14 13:11:58 2018 -0500

    Use 25% less RAM for base64-encoded directory objects
    
    We were allocating N bytes to decode an N-byte base64 encoding,
    when 3N/4 would have been enough.
---
 src/feature/dirparse/parsecommon.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/feature/dirparse/parsecommon.c b/src/feature/dirparse/parsecommon.c
index e00af0eea..91b775533 100644
--- a/src/feature/dirparse/parsecommon.c
+++ b/src/feature/dirparse/parsecommon.c
@@ -393,8 +393,9 @@ get_next_token(memarea_t *area,
       RET_ERR("Couldn't parse private key.");
   } else { /* If it's something else, try to base64-decode it */
     int r;
-    tok->object_body = ALLOC(next-*s); /* really, this is too much RAM. */
-    r = base64_decode(tok->object_body, next-*s, *s, next-*s);
+    size_t maxsize = base64_decode_maxsize(next-*s);
+    tok->object_body = ALLOC(maxsize);
+    r = base64_decode(tok->object_body, maxsize, *s, next-*s);
     if (r<0)
       RET_ERR("Malformed object: bad base64-encoded data");
     tok->object_size = r;





More information about the tor-commits mailing list