From 4b3001a08c84edfb1e5c7f739fc3dafca032a9f7 Mon Sep 17 00:00:00 2001 From: Roger Dingledine Date: Tue, 28 Sep 2004 22:38:21 +0000 Subject: [PATCH] fix some local buffer overflows fix a memory leak svn:r2391 --- src/or/dirserv.c | 4 ++-- src/or/routerlist.c | 9 ++++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/or/dirserv.c b/src/or/dirserv.c index 6dddfe6153..55c2b9835b 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -677,7 +677,7 @@ void dirserv_set_cached_directory(const char *directory, time_t when) } cached_directory_published = when; if(get_data_directory(&options)) { - sprintf(filename,"%s/cached-directory", get_data_directory(&options)); + snprintf(filename,sizeof(filename),"%s/cached-directory", get_data_directory(&options)); if(write_str_to_file(filename,cached_directory,0) < 0) { log_fn(LOG_WARN, "Couldn't write cached directory to disk. Ignoring."); } @@ -751,7 +751,7 @@ static int dirserv_regenerate_directory(void) } free(new_directory); if(get_data_directory(&options)) { - sprintf(filename,"%s/cached-directory", get_data_directory(&options)); + snprintf(filename,sizeof(filename),"%s/cached-directory", get_data_directory(&options)); if(write_str_to_file(filename,the_directory,0) < 0) { log_fn(LOG_WARN, "Couldn't write cached directory to disk. Ignoring."); } diff --git a/src/or/routerlist.c b/src/or/routerlist.c index 1198c894f9..1eb7cccdf3 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -49,23 +49,26 @@ int router_reload_router_list(void) char filename[512]; routerlist_clear_trusted_directories(); if (options.RouterFile) { + log_fn(LOG_INFO, "Loading router list from %s", options.RouterFile); if (router_load_routerlist_from_file(options.RouterFile, 1) < 0) { - log_fn(LOG_ERR,"Error loading router list."); + log_fn(LOG_ERR,"Error loading router list '%s'.", options.RouterFile); return -1; } } else { + log_fn(LOG_INFO, "Loading internal default router list."); if (config_assign_default_dirservers() < 0) return -1; } if (get_data_directory(&options)) { char *s; - sprintf(filename,"%s/cached-directory", get_data_directory(&options)); + snprintf(filename,sizeof(filename),"%s/cached-directory", get_data_directory(&options)); s = read_file_to_str(filename,0); if (s) { log_fn(LOG_INFO, "Loading cached directory from %s", filename); if (router_load_routerlist_from_string(s, 0) < 0) { - log_fn(LOG_WARN, "Cached directory was unparseable; ignoring."); + log_fn(LOG_WARN, "Cached directory '%s' was unparseable; ignoring.", filename); } + tor_free(s); } } return 0;