[tor-commits] [stegotorus/master] Vinod fixed a buf overflow bug in http_server_receive

zwol at torproject.org zwol at torproject.org
Fri Jul 20 23:17:06 UTC 2012


commit 13527f93876020861ed6dc8701e94fc6beba0d45
Author: Steven Cheung <cheung at csl.sri.com>
Date:   Wed Dec 21 18:51:54 2011 +0000

    Vinod fixed a buf overflow bug in http_server_receive
    
    git-svn-id: svn+ssh://spartan.csl.sri.com/svn/private/DEFIANCE@188 a58ff0ac-194c-e011-a152-003048836090
---
 src/steg/http.cc |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/src/steg/http.cc b/src/steg/http.cc
index e4bdb0e..47290b0 100644
--- a/src/steg/http.cc
+++ b/src/steg/http.cc
@@ -730,7 +730,7 @@ http_server_receive(http *s, conn_t *conn, struct evbuffer *dest, struct evbuffe
     c = 0;
 
 
-    while (strncmp((char*) p, "\r\n", 2) != 0 && (cookie_mode != 0 || p[0] != '.')) {
+    while (strncmp((char*) p, "\r\n", 2) != 0 && (cookie_mode != 0 || p[0] != '.') && sofar < MAX_COOKIE_SIZE) {
       if (!secondhalf)
         c = 0;
       if ('0' <= *p && *p <= '9')
@@ -751,6 +751,12 @@ http_server_receive(http *s, conn_t *conn, struct evbuffer *dest, struct evbuffe
       p++;
     }
 
+
+    if (sofar >= MAX_COOKIE_SIZE) {
+       fprintf(stderr, "cookie buffer overflow\n"); 
+       exit(-1);
+    }
+
     outbuf[sofar] = 0;
 
     if (secondhalf) {





More information about the tor-commits mailing list