Commit ddd0054a authored by Roger Dingledine's avatar Roger Dingledine
Browse files

point out two remote crash bugs, a memory leak, and a few other

items we should probably look into.


svn:r10227
parent 0b661f65
...@@ -388,6 +388,8 @@ mp_pool_clean(mp_pool_t *pool, int n) ...@@ -388,6 +388,8 @@ mp_pool_clean(mp_pool_t *pool, int n)
n = pool->min_empty_chunks + (-n); n = pool->min_empty_chunks + (-n);
if (n < pool->n_empty_chunks) if (n < pool->n_empty_chunks)
pool->min_empty_chunks = n; pool->min_empty_chunks = n;
/* XXX020 don't we want some sort of return here, given the
* assert that follows? -RD */
} }
ASSERT(n>=0); ASSERT(n>=0);
......
...@@ -3119,6 +3119,8 @@ options_init_from_torrc(int argc, char **argv) ...@@ -3119,6 +3119,8 @@ options_init_from_torrc(int argc, char **argv)
if (argc > 1 && (!strcmp(argv[1],"--version"))) { if (argc > 1 && (!strcmp(argv[1],"--version"))) {
char vbuf[128]; char vbuf[128];
// XXX020 below, tor_svn_revision will always be defined, right?
// So we can take out that check? Also in router.c. -RD
if (tor_svn_revision != NULL && strlen(tor_svn_revision)) { if (tor_svn_revision != NULL && strlen(tor_svn_revision)) {
tor_snprintf(vbuf, sizeof(vbuf), " (r%s)", tor_svn_revision); tor_snprintf(vbuf, sizeof(vbuf), " (r%s)", tor_svn_revision);
} else { } else {
......
...@@ -559,8 +559,10 @@ dns_resolve(edge_connection_t *exitconn) ...@@ -559,8 +559,10 @@ dns_resolve(edge_connection_t *exitconn)
} }
//circuit_detach_stream(TO_CIRCUIT(oncirc), exitconn); //circuit_detach_stream(TO_CIRCUIT(oncirc), exitconn);
exitconn->on_circuit = NULL; exitconn->on_circuit = NULL;
if (!exitconn->_base.marked_for_close) if (!exitconn->_base.marked_for_close) {
connection_free(TO_CONN(exitconn)); connection_free(TO_CONN(exitconn));
//XXX020 ... and we just leak exitconn otherwise? -RD
}
break; break;
default: default:
tor_assert(0); tor_assert(0);
......
...@@ -68,7 +68,7 @@ static time_t time_of_last_signewnym = 0; ...@@ -68,7 +68,7 @@ static time_t time_of_last_signewnym = 0;
static int signewnym_is_pending = 0; static int signewnym_is_pending = 0;
/** Array of all open connections. The first n_conns elements are valid. */ /** Array of all open connections. The first n_conns elements are valid. */
/*XXXX020 Should we just use a smartlist here? */ /*XXXX020 Should we just use a smartlist here? -NM Sure. -RD */
static connection_t *connection_array[MAXCONNECTIONS+1] = static connection_t *connection_array[MAXCONNECTIONS+1] =
{ NULL }; { NULL };
/** List of connections that have been marked for close and need to be freed /** List of connections that have been marked for close and need to be freed
......
...@@ -4857,6 +4857,8 @@ routerinfo_incompatible_with_extrainfo(routerinfo_t *ri, extrainfo_t *ei) ...@@ -4857,6 +4857,8 @@ routerinfo_incompatible_with_extrainfo(routerinfo_t *ri, extrainfo_t *ei)
if (ei->bad_sig) if (ei->bad_sig)
return 1; return 1;
/* XXX020 below we should explain why this is strcmp and not strcasecmp,
* since it differs from how we usually compare nicknames. -RD */
if (strcmp(ri->nickname, ei->nickname) || if (strcmp(ri->nickname, ei->nickname) ||
memcmp(ri->cache_info.identity_digest, ei->cache_info.identity_digest, memcmp(ri->cache_info.identity_digest, ei->cache_info.identity_digest,
DIGEST_LEN)) DIGEST_LEN))
......
...@@ -2142,7 +2142,8 @@ tokenize_string(const char *start, const char *end, smartlist_t *out, ...@@ -2142,7 +2142,8 @@ tokenize_string(const char *start, const char *end, smartlist_t *out,
for (i = 0; table[i].t; ++i) { for (i = 0; table[i].t; ++i) {
if (counts[table[i].v] < table[i].min_cnt) { if (counts[table[i].v] < table[i].min_cnt) {
log_warn(LD_DIR, "Parse error: missing %s element.", table[i].t); log_warn(LD_DIR, "Parse error: missing %s element.", table[i].t);
tor_assert(0); tor_assert(0); /* XXX020 is this assert a remote crash waiting to
* happen? -RD */
return -1; return -1;
} }
if (counts[table[i].v] > table[i].max_cnt) { if (counts[table[i].v] > table[i].max_cnt) {
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment