[tor-commits] [tor/master] Fix 64-bit return issue in parse_log_domain()

asn at torproject.org asn at torproject.org
Tue Aug 27 08:43:28 UTC 2019


commit 87a3c5b1109a65fdf9b436f1035126044d77e552
Author: Nick Mathewson <nickm at torproject.org>
Date:   Mon Aug 19 13:59:57 2019 -0400

    Fix 64-bit return issue in parse_log_domain()
    
    If unsigned int is 32-bits long, then our old code would give a
    wrong result with any log domain whose mask was >= (1<<32).
    Fortunately, there are no such log domains right now: the domain
    mask is only 64 bits long to accommodate some flags.
    
    Found by coverity as CID 1452041.
    
    Fixes bug 31451; bugfix on 0.4.1.4-rc.
---
 changes/ticket31451 | 4 ++++
 src/lib/log/log.c   | 2 +-
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/changes/ticket31451 b/changes/ticket31451
new file mode 100644
index 000000000..773d66595
--- /dev/null
+++ b/changes/ticket31451
@@ -0,0 +1,4 @@
+  o Minor bugfixes (logging):
+    - Fix a code issue that would have broken our parsing of log
+      domains as soon as we had 33 of them.  Fortunately, we still
+      only have 29.  Fixes bug 31451; bugfix on 0.4.1.4-rc.
diff --git a/src/lib/log/log.c b/src/lib/log/log.c
index d95bf1ff6..56f016eae 100644
--- a/src/lib/log/log.c
+++ b/src/lib/log/log.c
@@ -1285,7 +1285,7 @@ parse_log_domain(const char *domain)
   int i;
   for (i=0; domain_list[i]; ++i) {
     if (!strcasecmp(domain, domain_list[i]))
-      return (1u<<i);
+      return (UINT64_C(1)<<i);
   }
   return 0;
 }





More information about the tor-commits mailing list