diff options
author | Roger Dingledine <arma@torproject.org> | 2003-09-28 08:06:18 +0000 |
---|---|---|
committer | Roger Dingledine <arma@torproject.org> | 2003-09-28 08:06:18 +0000 |
commit | 5d31f7155793b80285ba61ec8688dbc6c117ed52 (patch) | |
tree | fd2dd24b8ae1361215a09f59bacc83526ec68b47 | |
parent | c4c66e2c7f1184336d5a9997d049ba4e28137c39 (diff) | |
download | tor-5d31f7155793b80285ba61ec8688dbc6c117ed52.tar tor-5d31f7155793b80285ba61ec8688dbc6c117ed52.tar.gz |
fix two new segfaults
svn:r506
-rw-r--r-- | src/or/directory.c | 8 | ||||
-rw-r--r-- | src/or/dirserv.c | 2 | ||||
-rw-r--r-- | src/or/main.c | 4 |
3 files changed, 6 insertions, 8 deletions
diff --git a/src/or/directory.c b/src/or/directory.c index 562326d6a..804ad6999 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -167,7 +167,7 @@ int connection_dir_process_inbuf(connection_t *conn) { static int directory_handle_command(connection_t *conn) { char headers[1024]; char body[50000]; /* XXX */ - size_t dl; + size_t dlen; const char *cp; assert(conn && conn->type == CONN_TYPE_DIR); @@ -187,16 +187,16 @@ static int directory_handle_command(connection_t *conn) { if(!strncasecmp(headers,"GET",3)) { /* XXX should check url and http version */ - dl = dirserv_get_directory(&cp); + dlen = dirserv_get_directory(&cp); - if(dl == 0) { + if(dlen == 0) { log_fn(LOG_WARNING,"My directory is empty. Closing."); return -1; } log_fn(LOG_DEBUG,"Dumping directory to client."); if((connection_write_to_buf(answerstring, strlen(answerstring), conn) < 0) || - (connection_write_to_buf(cp, dl, conn) < 0)) { + (connection_write_to_buf(cp, dlen, conn) < 0)) { log_fn(LOG_WARNING,"Failed to write answerstring+directory to outbuf."); return -1; } diff --git a/src/or/dirserv.c b/src/or/dirserv.c index 901d2e945..a6ff12d8a 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -373,7 +373,7 @@ size_t dirserv_get_directory(const char **directory) /* Now read the directory we just made in order to update our own * router lists. This does more signature checking than is strictly * necessary, but safe is better than sorry. */ - new_directory = strdup(*directory); + new_directory = strdup(the_directory); if (router_get_dir_from_string(new_directory, get_identity_key())) { log_fn(LOG_ERR, "We just generated a directory we can't parse. Dying."); exit(0); diff --git a/src/or/main.c b/src/or/main.c index 9f861b96c..83f10ee19 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -836,16 +836,14 @@ list_running_servers(char **nicknames_out) length += strlen(nickname_lst[i]); } *nicknames_out = tor_malloc(length); - log_fn(LOG_DEBUG,"total length %d malloced.",length); cp = *nicknames_out; + memset(cp,0,length); for (i = 0; i<n; ++i) { if (i) strcat(cp, " "); strcat(cp, nickname_lst[i]); while (*cp) ++cp; - log_fn(LOG_DEBUG,"end of loop %d, now %d written (nick %s)", - i,1+(int)(cp-*nicknames_out),nickname_lst[i]); } return 0; } |