[tor-commits] [tor/master] get rid of the scary 256-byte-buf landmine

nickm at torproject.org nickm at torproject.org
Thu Sep 14 21:20:54 UTC 2017


commit 771fb7e7baa789c55ba15c4c26c8a4889ff9fe8d
Author: Roger Dingledine <arma at torproject.org>
Date:   Thu Sep 14 02:52:00 2017 -0400

    get rid of the scary 256-byte-buf landmine
---
 src/or/directory.c | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/src/or/directory.c b/src/or/directory.c
index 0c79b4659..ba94c9747 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 <b>conn</b>-\>outbuf,





More information about the tor-commits mailing list