[tor-commits] [tor/master] Merge remote-tracking branch 'public/bug1666'
nickm at torproject.org
nickm at torproject.org
Wed Jul 13 16:13:22 UTC 2011
commit 1aab5b6b391ca179d9acded9465ee4941ec4700b
Merge: 9a6642f 16c5a62
Author: Nick Mathewson <nickm at torproject.org>
Date: Wed Jul 13 12:12:16 2011 -0400
Merge remote-tracking branch 'public/bug1666'
Conflicts:
doc/spec/socks-extensions.txt
src/or/buffers.c
src/or/config.c
src/or/connection_edge.c
changes/bug1666 | 4 +
src/or/buffers.c | 182 ++++++++++++++++------
src/or/buffers.h | 2 +
src/or/config.c | 3 +-
src/or/config.h | 2 +
src/or/connection.c | 8 +-
src/or/connection_edge.c | 23 ++--
src/or/or.h | 26 +++-
src/test/test.c | 384 ++++++++++++++++++++++++++++++++++++++++++++++
9 files changed, 566 insertions(+), 68 deletions(-)
diff --cc src/or/buffers.c
index 7312749,b7567bf..256b507
--- a/src/or/buffers.c
+++ b/src/or/buffers.c
@@@ -1482,10 -1475,25 +1482,29 @@@ log_unsafe_socks_warning(int socks_prot
socks_protocol, address, (int)port);
}
+/** Do not attempt to parse socks messages longer than this. This value is
+ * actually significantly higher than the longest possible socks message. */
+#define MAX_SOCKS_MESSAGE_LEN 512
+
+ /** Return a new socks_request_t. */
+ socks_request_t *
+ socks_request_new(void)
+ {
+ return tor_malloc_zero(sizeof(socks_request_t));
+ }
+
+ /** Free all storage held in the socks_request_t <b>req</b>. */
+ void
+ socks_request_free(socks_request_t *req)
+ {
+ if (!req)
+ return;
+ tor_free(req->username);
+ tor_free(req->password);
+ memset(req, 0xCC, sizeof(socks_request_t));
+ tor_free(req);
+ }
+
/** There is a (possibly incomplete) socks handshake on <b>buf</b>, of one
* of the forms
* - socks4: "socksheader username\\0"
diff --cc src/or/config.c
index 4a9d2c9,d2dbdaa..cdf0122
--- a/src/or/config.c
+++ b/src/or/config.c
@@@ -547,44 -521,38 +547,43 @@@ static char *get_windows_conf_root(void
#endif
static void config_line_append(config_line_t **lst,
const char *key, const char *val);
-static void option_clear(config_format_t *fmt, or_options_t *options,
- config_var_t *var);
-static void option_reset(config_format_t *fmt, or_options_t *options,
- config_var_t *var, int use_defaults);
-static void config_free(config_format_t *fmt, void *options);
+static void option_clear(const config_format_t *fmt, or_options_t *options,
+ const config_var_t *var);
+static void option_reset(const config_format_t *fmt, or_options_t *options,
+ const config_var_t *var, int use_defaults);
+static void config_free(const config_format_t *fmt, void *options);
static int config_lines_eq(config_line_t *a, config_line_t *b);
-static int option_is_same(config_format_t *fmt,
- or_options_t *o1, or_options_t *o2,
+static int option_is_same(const config_format_t *fmt,
+ const or_options_t *o1, const or_options_t *o2,
const char *name);
-static or_options_t *options_dup(config_format_t *fmt, or_options_t *old);
-static int options_validate(or_options_t *old_options, or_options_t *options,
+static or_options_t *options_dup(const config_format_t *fmt,
+ const or_options_t *old);
+static int options_validate(or_options_t *old_options,
+ or_options_t *options,
int from_setconf, char **msg);
-static int options_act_reversible(or_options_t *old_options, char **msg);
-static int options_act(or_options_t *old_options);
-static int options_transition_allowed(or_options_t *old, or_options_t *new,
+static int options_act_reversible(const or_options_t *old_options, char **msg);
+static int options_act(const or_options_t *old_options);
+static int options_transition_allowed(const or_options_t *old,
+ const or_options_t *new,
char **msg);
-static int options_transition_affects_workers(or_options_t *old_options,
- or_options_t *new_options);
-static int options_transition_affects_descriptor(or_options_t *old_options,
- or_options_t *new_options);
+static int options_transition_affects_workers(
+ const or_options_t *old_options, const or_options_t *new_options);
+static int options_transition_affects_descriptor(
+ const or_options_t *old_options, const or_options_t *new_options);
static int check_nickname_list(const char *lst, const char *name, char **msg);
- static void config_register_addressmaps(const or_options_t *options);
static int parse_bridge_line(const char *line, int validate_only);
+static int parse_client_transport_line(const char *line, int validate_only);
static int parse_dir_server_line(const char *line,
- authority_type_t required_type,
+ dirinfo_type_t required_type,
int validate_only);
static int validate_data_directory(or_options_t *options);
-static int write_configuration_file(const char *fname, or_options_t *options);
-static config_line_t *get_assigned_option(config_format_t *fmt,
- void *options, const char *key,
- int escape_val);
-static void config_init(config_format_t *fmt, void *options);
+static int write_configuration_file(const char *fname,
+ const or_options_t *options);
+static config_line_t *get_assigned_option(const config_format_t *fmt,
+ const void *options, const char *key,
+ int escape_val);
+static void config_init(const config_format_t *fmt, void *options);
static int or_state_validate(or_state_t *old_options, or_state_t *options,
int from_setconf, char **msg);
static int or_state_load(void);
@@@ -4430,8 -4313,8 +4429,8 @@@ get_torrc_fname(void
/** Adjust the address map based on the MapAddress elements in the
* configuration <b>options</b>
*/
- static void
+ void
-config_register_addressmaps(or_options_t *options)
+config_register_addressmaps(const or_options_t *options)
{
smartlist_t *elts;
config_line_t *opt;
diff --cc src/or/config.h
index bc71191,db871d4..8a06f44
--- a/src/or/config.h
+++ b/src/or/config.h
@@@ -79,5 -76,7 +79,7 @@@ uint32_t get_effective_bwburst(const or
or_options_t *options_new(void);
#endif
-void config_register_addressmaps(or_options_t *options);
++void config_register_addressmaps(const or_options_t *options);
+
#endif
diff --cc src/or/connection_edge.c
index 7516716,bff73d4..c19e8b7
--- a/src/or/connection_edge.c
+++ b/src/or/connection_edge.c
@@@ -2144,7 -1882,8 +2144,8 @@@ connection_ap_handshake_process_socks(e
{
socks_request_t *socks;
int sockshere;
- or_options_t *options = get_options();
+ const or_options_t *options = get_options();
+ int had_reply = 0;
tor_assert(conn);
tor_assert(conn->_base.type == CONN_TYPE_AP);
More information about the tor-commits
mailing list