[tor-commits] [tor/master] Make base64_decode in rend_parse_client_keys more foolproof

nickm at torproject.org nickm at torproject.org
Fri Apr 20 15:31:24 UTC 2012


commit f2384d5e2c25469038caa84e0dedaa5e2efca29c
Author: Nick Mathewson <nickm at torproject.org>
Date:   Thu Apr 19 17:13:47 2012 -0400

    Make base64_decode in rend_parse_client_keys more foolproof
    
    In general, whenever we can, we should be doing
      base64_decode(buf, sizeof(buf), s, strlen(s)),
    and not
      base_64_decode(buf, expr1, s, expr2)
    where we hope that expr1 is a good name for the size of buf and expr2
    is a good formula for the length of the base64 expression in s.
---
 src/or/routerparse.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/or/routerparse.c b/src/or/routerparse.c
index 99b4eb0..7cc8b96 100644
--- a/src/or/routerparse.c
+++ b/src/or/routerparse.c
@@ -5171,9 +5171,9 @@ rend_parse_client_keys(strmap_t *parsed_clients, const char *ckstr)
     /* The size of descriptor_cookie_tmp needs to be REND_DESC_COOKIE_LEN+2,
      * because a base64 encoding of length 24 does not fit into 16 bytes in all
      * cases. */
-    if ((base64_decode(descriptor_cookie_tmp, REND_DESC_COOKIE_LEN+2,
-                       tok->args[0], REND_DESC_COOKIE_LEN_BASE64+2+1)
-           != REND_DESC_COOKIE_LEN)) {
+    if (base64_decode(descriptor_cookie_tmp, sizeof(descriptor_cookie_tmp),
+                      tok->args[0], strlen(tok->args[0]))
+        != REND_DESC_COOKIE_LEN) {
       log_warn(LD_REND, "Descriptor cookie contains illegal characters: "
                "%s", escaped(tok->args[0]));
       goto err;





More information about the tor-commits mailing list