diff options
-rw-r--r-- | src/or/control.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/or/control.c b/src/or/control.c index 775dda3c35..fc4c002d05 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -284,7 +284,7 @@ write_escaped_data(const char *data, size_t len, int translate_newlines, { size_t sz_out = len+8; char *outp; - const char *end; + const char *start = data, *end; int i; int start_of_line; for (i=0; i<(int)len; ++i) { @@ -296,7 +296,7 @@ write_escaped_data(const char *data, size_t len, int translate_newlines, start_of_line = 1; while (data < end) { if (*data == '\n') { - if (translate_newlines) + if (translate_newlines && data > start && data[-1] != '\r') *outp++ = '\r'; start_of_line = 1; } else if (*data == '.') { @@ -1363,9 +1363,9 @@ getinfo_helper_events(control_connection_t *control_conn, slen = strlen(path)+strlen(state)+20; s = tor_malloc(slen+1); - tor_snprintf(s, slen, "%lu %s %s", + tor_snprintf(s, slen, "%lu %s%s%s", (unsigned long)TO_ORIGIN_CIRCUIT(circ)->global_identifier, - state, path); + state, *path ? " " : "", path); smartlist_add(status, s); tor_free(path); } |