diff --git a/src/or/directory.c b/src/or/directory.c index 0c79b4659a..ba94c97471 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -3479,7 +3479,7 @@ static void write_http_status_line(dir_connection_t *conn, int status, const char *reason_phrase) { - char buf[256+RFC1123_TIME_LEN+1]; + char *buf = NULL; char *datestring = NULL; if (!reason_phrase) { /* bullet-proofing */ @@ -3493,16 +3493,14 @@ write_http_status_line(dir_connection_t *conn, int status, tor_asprintf(&datestring, "Date: %s\r\n", datebuf); } - if (tor_snprintf(buf, sizeof(buf), "HTTP/1.0 %d %s\r\n%s\r\n", - status, reason_phrase, datestring?datestring:"") < 0) { - log_warn(LD_BUG,"status line too long."); - tor_free(datestring); - return; - } - tor_free(datestring); + tor_asprintf(&buf, "HTTP/1.0 %d %s\r\n%s\r\n", + status, reason_phrase, datestring?datestring:""); log_debug(LD_DIRSERV,"Wrote status 'HTTP/1.0 %d %s'", status, reason_phrase); connection_buf_add(buf, strlen(buf), TO_CONN(conn)); + + tor_free(datestring); + tor_free(buf); } /** Write the header for an HTTP/1.0 response onto conn-\>outbuf,