Loading src/common/crypto.c +2 −2 Original line number Diff line number Diff line Loading @@ -345,7 +345,7 @@ int crypto_pk_read_private_key_from_filename(crypto_pk_env_t *env, const char *k tor_assert(env && keyfile); /* open the keyfile */ f_pr=fopen(keyfile,"rb"); f_pr=fopen(keyfile,"r"); if (!f_pr) return -1; Loading Loading @@ -449,7 +449,7 @@ crypto_pk_write_private_key_to_filename(crypto_pk_env_t *env, s = tor_malloc(len+1); strncpy(s, cp, len); s[len] = '\0'; r = write_str_to_file(fname, s); r = write_str_to_file(fname, s, 0); BIO_free(bio); free(s); return r; Loading src/common/util.c +14 −14 Original line number Diff line number Diff line Loading @@ -119,6 +119,10 @@ #include "strlcat.c" #endif #ifndef O_BINARY #define O_BINARY 0 #endif /** Allocate a chunk of <b>size</b> bytes of memory, and return a pointer to * result. On error, log and terminate the process. (Same as malloc(size), * but never returns NULL.) Loading Loading @@ -1459,33 +1463,29 @@ int check_private_dir(const char *dirname, int create) * This function replaces the old file atomically, if possible. */ int write_str_to_file(const char *fname, const char *str) write_str_to_file(const char *fname, const char *str, int bin) { char tempname[1024]; int fd; FILE *file; size_t len; if ((strlcpy(tempname,fname,1024) >= 1024) || (strlcat(tempname,".tmp",1024) >= 1024)) { log(LOG_WARN, "Filename %s.tmp too long (>1024 chars)", fname); return -1; } if ((fd = open(tempname, O_WRONLY|O_CREAT|O_TRUNC, 0600)) < 0) { if ((fd = open(tempname, O_WRONLY|O_CREAT|O_TRUNC|(bin?O_BINARY:0), 0600)) < 0) { log(LOG_WARN, "Couldn't open %s for writing: %s", tempname, strerror(errno)); return -1; } if (!(file = fdopen(fd, "w"))) { log(LOG_WARN, "Couldn't fdopen %s for writing: %s", tempname, strerror(errno)); close(fd); return -1; } if (fputs(str,file) == EOF) { len = strlen(str); if (write_all(fd, str, len, 0) != len) { log(LOG_WARN, "Error writing to %s: %s", tempname, strerror(errno)); fclose(file); close(fd); return -1; } if (fclose(file) == EOF) { if (close(fd)) { log(LOG_WARN,"Error flushing to %s: %s", tempname, strerror(errno)); return -1; } Loading Loading @@ -1521,7 +1521,7 @@ write_str_to_file(const char *fname, const char *str) /** Read the contents of <b>filename</b> into a newly allocated string; return the * string on success or NULL on failure. */ char *read_file_to_str(const char *filename) { char *read_file_to_str(const char *filename, int bin) { int fd; /* router file */ struct stat statbuf; char *string; Loading @@ -1533,7 +1533,7 @@ char *read_file_to_str(const char *filename) { return NULL; } fd = open(filename,O_RDONLY,0); fd = open(filename,O_RDONLY|(bin?O_BINARY:0),0); if (fd<0) { log_fn(LOG_WARN,"Could not open %s.",filename); return NULL; Loading src/common/util.h +2 −2 Original line number Diff line number Diff line Loading @@ -219,8 +219,8 @@ typedef enum { FN_ERROR, FN_NOENT, FN_FILE, FN_DIR} file_status_t; file_status_t file_status(const char *filename); int check_private_dir(const char *dirname, int create); int write_str_to_file(const char *fname, const char *str); char *read_file_to_str(const char *filename); int write_str_to_file(const char *fname, const char *str, int bin); char *read_file_to_str(const char *filename, int bin); int parse_line_from_file(char *line, int maxlen, FILE *f, char **key_out, char **value_out); char *expand_filename(const char *filename); int replace_file(const char *from, const char *to); Loading src/or/dirserv.c +2 −2 Original line number Diff line number Diff line Loading @@ -652,7 +652,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)); if(write_str_to_file(filename,cached_directory) < 0) { if(write_str_to_file(filename,cached_directory,0) < 0) { log_fn(LOG_WARN, "Couldn't write cached directory to disk. Ignoring."); } } Loading Loading @@ -725,7 +725,7 @@ static int dirserv_regenerate_directory(void) free(new_directory); if(get_data_directory(&options)) { sprintf(filename,"%s/cached-directory", get_data_directory(&options)); if(write_str_to_file(filename,the_directory) < 0) { if(write_str_to_file(filename,the_directory,0) < 0) { log_fn(LOG_WARN, "Couldn't write cached directory to disk. Ignoring."); } } Loading src/or/main.c +1 −1 Original line number Diff line number Diff line Loading @@ -764,7 +764,7 @@ static int do_hup(void) { router_rebuild_descriptor(); sprintf(keydir,"%s/router.desc", get_data_directory(&options)); log_fn(LOG_INFO,"Dumping descriptor to %s...",keydir); if (write_str_to_file(keydir, router_get_my_descriptor())) { if (write_str_to_file(keydir, router_get_my_descriptor(), 0)) { return -1; } } Loading Loading
src/common/crypto.c +2 −2 Original line number Diff line number Diff line Loading @@ -345,7 +345,7 @@ int crypto_pk_read_private_key_from_filename(crypto_pk_env_t *env, const char *k tor_assert(env && keyfile); /* open the keyfile */ f_pr=fopen(keyfile,"rb"); f_pr=fopen(keyfile,"r"); if (!f_pr) return -1; Loading Loading @@ -449,7 +449,7 @@ crypto_pk_write_private_key_to_filename(crypto_pk_env_t *env, s = tor_malloc(len+1); strncpy(s, cp, len); s[len] = '\0'; r = write_str_to_file(fname, s); r = write_str_to_file(fname, s, 0); BIO_free(bio); free(s); return r; Loading
src/common/util.c +14 −14 Original line number Diff line number Diff line Loading @@ -119,6 +119,10 @@ #include "strlcat.c" #endif #ifndef O_BINARY #define O_BINARY 0 #endif /** Allocate a chunk of <b>size</b> bytes of memory, and return a pointer to * result. On error, log and terminate the process. (Same as malloc(size), * but never returns NULL.) Loading Loading @@ -1459,33 +1463,29 @@ int check_private_dir(const char *dirname, int create) * This function replaces the old file atomically, if possible. */ int write_str_to_file(const char *fname, const char *str) write_str_to_file(const char *fname, const char *str, int bin) { char tempname[1024]; int fd; FILE *file; size_t len; if ((strlcpy(tempname,fname,1024) >= 1024) || (strlcat(tempname,".tmp",1024) >= 1024)) { log(LOG_WARN, "Filename %s.tmp too long (>1024 chars)", fname); return -1; } if ((fd = open(tempname, O_WRONLY|O_CREAT|O_TRUNC, 0600)) < 0) { if ((fd = open(tempname, O_WRONLY|O_CREAT|O_TRUNC|(bin?O_BINARY:0), 0600)) < 0) { log(LOG_WARN, "Couldn't open %s for writing: %s", tempname, strerror(errno)); return -1; } if (!(file = fdopen(fd, "w"))) { log(LOG_WARN, "Couldn't fdopen %s for writing: %s", tempname, strerror(errno)); close(fd); return -1; } if (fputs(str,file) == EOF) { len = strlen(str); if (write_all(fd, str, len, 0) != len) { log(LOG_WARN, "Error writing to %s: %s", tempname, strerror(errno)); fclose(file); close(fd); return -1; } if (fclose(file) == EOF) { if (close(fd)) { log(LOG_WARN,"Error flushing to %s: %s", tempname, strerror(errno)); return -1; } Loading Loading @@ -1521,7 +1521,7 @@ write_str_to_file(const char *fname, const char *str) /** Read the contents of <b>filename</b> into a newly allocated string; return the * string on success or NULL on failure. */ char *read_file_to_str(const char *filename) { char *read_file_to_str(const char *filename, int bin) { int fd; /* router file */ struct stat statbuf; char *string; Loading @@ -1533,7 +1533,7 @@ char *read_file_to_str(const char *filename) { return NULL; } fd = open(filename,O_RDONLY,0); fd = open(filename,O_RDONLY|(bin?O_BINARY:0),0); if (fd<0) { log_fn(LOG_WARN,"Could not open %s.",filename); return NULL; Loading
src/common/util.h +2 −2 Original line number Diff line number Diff line Loading @@ -219,8 +219,8 @@ typedef enum { FN_ERROR, FN_NOENT, FN_FILE, FN_DIR} file_status_t; file_status_t file_status(const char *filename); int check_private_dir(const char *dirname, int create); int write_str_to_file(const char *fname, const char *str); char *read_file_to_str(const char *filename); int write_str_to_file(const char *fname, const char *str, int bin); char *read_file_to_str(const char *filename, int bin); int parse_line_from_file(char *line, int maxlen, FILE *f, char **key_out, char **value_out); char *expand_filename(const char *filename); int replace_file(const char *from, const char *to); Loading
src/or/dirserv.c +2 −2 Original line number Diff line number Diff line Loading @@ -652,7 +652,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)); if(write_str_to_file(filename,cached_directory) < 0) { if(write_str_to_file(filename,cached_directory,0) < 0) { log_fn(LOG_WARN, "Couldn't write cached directory to disk. Ignoring."); } } Loading Loading @@ -725,7 +725,7 @@ static int dirserv_regenerate_directory(void) free(new_directory); if(get_data_directory(&options)) { sprintf(filename,"%s/cached-directory", get_data_directory(&options)); if(write_str_to_file(filename,the_directory) < 0) { if(write_str_to_file(filename,the_directory,0) < 0) { log_fn(LOG_WARN, "Couldn't write cached directory to disk. Ignoring."); } } Loading
src/or/main.c +1 −1 Original line number Diff line number Diff line Loading @@ -764,7 +764,7 @@ static int do_hup(void) { router_rebuild_descriptor(); sprintf(keydir,"%s/router.desc", get_data_directory(&options)); log_fn(LOG_INFO,"Dumping descriptor to %s...",keydir); if (write_str_to_file(keydir, router_get_my_descriptor())) { if (write_str_to_file(keydir, router_get_my_descriptor(), 0)) { return -1; } } Loading