diff options
author | Yawning Angel <yawning@schwanenlied.me> | 2015-02-05 15:46:27 +0000 |
---|---|---|
committer | Yawning Angel <yawning@schwanenlied.me> | 2015-02-05 15:46:27 +0000 |
commit | b330bdec8e628d34641a5e6942fa4d1a5357639a (patch) | |
tree | 7189a8da4f6db9825e0b2d8800ef414e43f0df90 /src | |
parent | ac8f235446ad1b26d9f85df10cca8ce250588b83 (diff) | |
download | tor-b330bdec8e628d34641a5e6942fa4d1a5357639a.tar.gz tor-b330bdec8e628d34641a5e6942fa4d1a5357639a.zip |
Add a string representation for LD_SCHED, and a extra sanity check.
This both fixes the problem, and ensures that forgetting to update
domain_list in the future will trigger the bug codepath instead of
a NULL pointer deref.
Diffstat (limited to 'src')
-rw-r--r-- | src/common/log.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/common/log.c b/src/common/log.c index 2e7c711413..b533814844 100644 --- a/src/common/log.c +++ b/src/common/log.c @@ -1215,7 +1215,8 @@ log_level_to_string(int level) static const char *domain_list[] = { "GENERAL", "CRYPTO", "NET", "CONFIG", "FS", "PROTOCOL", "MM", "HTTP", "APP", "CONTROL", "CIRC", "REND", "BUG", "DIR", "DIRSERV", - "OR", "EDGE", "ACCT", "HIST", "HANDSHAKE", "HEARTBEAT", "CHANNEL", NULL + "OR", "EDGE", "ACCT", "HIST", "HANDSHAKE", "HEARTBEAT", "CHANNEL", + "SCHED", NULL }; /** Return a bitmask for the log domain for which <b>domain</b> is the name, @@ -1245,7 +1246,8 @@ domain_to_string(log_domain_mask_t domain, char *buf, size_t buflen) const char *d; int bit = tor_log2(domain); size_t n; - if (bit >= N_LOGGING_DOMAINS) { + if ((unsigned)bit >= sizeof(domain_list)/sizeof(*domain_list) - 1 || + bit >= N_LOGGING_DOMAINS) { tor_snprintf(buf, buflen, "<BUG:Unknown domain %lx>", (long)domain); return buf+strlen(buf); } |