summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2017-10-23 09:21:22 -0400
committerNick Mathewson <nickm@torproject.org>2017-10-23 09:21:22 -0400
commitaf33fdd7c1860399fe8d6861c163e5d64b0292b9 (patch)
treea66f4e8d88ccb0c808d48fc5ee4e956303559833
parent85115796bb9095db2b59624b16c005f2252d4d71 (diff)
downloadtor-af33fdd7c1860399fe8d6861c163e5d64b0292b9.tar.gz
tor-af33fdd7c1860399fe8d6861c163e5d64b0292b9.zip
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 771fb7e7baa789c55ba15c4c26c8a4889ff9fe8d, where arma said "get rid of the scary 256-byte-buf landmine".
-rw-r--r--changes/bug239083
-rw-r--r--src/or/directory.c10
2 files changed, 7 insertions, 6 deletions
diff --git a/changes/bug23908 b/changes/bug23908
new file mode 100644
index 0000000000..f641b66bb9
--- /dev/null
+++ b/changes/bug23908
@@ -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.
diff --git a/src/or/directory.c b/src/or/directory.c
index 45fbd1dd33..bef65d3498 100644
--- a/src/or/directory.c
+++ b/src/or/directory.c
@@ -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,