From: George Kadianakis Date: Sun, 11 Sep 2011 19:33:02 +0000 (+0200) Subject: Be more defensive in get_transport_bindaddr(). X-Git-Tag: tor-0.2.3.6-alpha~40^2~10 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9a42ec685751b5c5fd21f33cd788810d997f0d6e;p=thirdparty%2Ftor.git Be more defensive in get_transport_bindaddr(). Make sure that lines in get_transport_bindaddr() begin with the name of the transport and a space. --- diff --git a/src/or/config.c b/src/or/config.c index 792124c08b..79c1b1e199 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -5823,10 +5823,24 @@ get_transport_in_state_by_name(const char *transport) const char * get_transport_bindaddr(const char *line, const char *transport) { - if (strlen(line) < strlen(transport) + 2) - return NULL; - else + char *line_tmp = NULL; + + if (strlen(line) < strlen(transport) + 2) { + goto broken_state; + } else { + /* line should start with the name of the transport and a space. + (for example, "obfs2 127.0.0.1:47245") */ + tor_asprintf(&line_tmp, "%s ", transport); + if (strcmpstart(line, line_tmp)) + goto broken_state; + + tor_free(line_tmp); return (line+strlen(transport)+1); + } + + broken_state: + tor_free(line_tmp); + return NULL; } /** Return a static string containing the address:port a proxy