Remove the length limit from write_http_status_line

Fixes bug 23908; bugfix on 0.3.1.6-rc when we made the keypin
failure message really long.

Backport from 0.3.2's 771fb7e7ba,
where arma said "get rid of the scary 256-byte-buf landmine".
This commit is contained in:
Nick Mathewson 2017-10-23 09:21:22 -04:00
parent 85115796bb
commit af33fdd7c1
2 changed files with 7 additions and 6 deletions

3
changes/bug23908 Normal file
View File

@ -0,0 +1,3 @@
o Minor bugfixes (directory authority, backport from 0.3.2.1-alpha):
- Remove the length limit on HTTP status lines that authorities can send
in their replies. Fixes bug 23499; bugfix on 0.3.1.6-rc.

View File

@ -3282,14 +3282,12 @@ static void
write_http_status_line(dir_connection_t *conn, int status,
const char *reason_phrase)
{
char buf[256];
if (tor_snprintf(buf, sizeof(buf), "HTTP/1.0 %d %s\r\n\r\n",
status, reason_phrase ? reason_phrase : "OK") < 0) {
log_warn(LD_BUG,"status line too long.");
return;
}
char *buf = NULL;
tor_asprintf(&buf, "HTTP/1.0 %d %s\r\n\r\n",
status, reason_phrase ? reason_phrase : "OK");
log_debug(LD_DIRSERV,"Wrote status 'HTTP/1.0 %d %s'", status, reason_phrase);
connection_write_to_buf(buf, strlen(buf), TO_CONN(conn));
tor_free(buf);
}
/** Write the header for an HTTP/1.0 response onto <b>conn</b>-\>outbuf,