aboutsummaryrefslogtreecommitdiff
path: root/src/or
diff options
context:
space:
mode:
authorGeorge Kadianakis <desnacked@gmail.com>2011-09-11 23:34:11 +0200
committerGeorge Kadianakis <desnacked@gmail.com>2011-09-11 23:34:11 +0200
commitc6811c57cb75b2c594b2a6fffaca0c5ae4c19e0a (patch)
tree3b60b2997c9153675e7f77861924c028caab4a02 /src/or
parent31361074216534b0a4c6377730c09b261ca4ef4e (diff)
downloadtor-c6811c57cb75b2c594b2a6fffaca0c5ae4c19e0a.tar
tor-c6811c57cb75b2c594b2a6fffaca0c5ae4c19e0a.tar.gz
Enforce transport names being C identifiers.
Introduce string_is_C_identifier() and use it to enforce transport names according to the 180 spec.
Diffstat (limited to 'src/or')
-rw-r--r--src/or/config.c8
-rw-r--r--src/or/transports.c10
2 files changed, 18 insertions, 0 deletions
diff --git a/src/or/config.c b/src/or/config.c
index d36418b0d..58668b173 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -4724,6 +4724,10 @@ parse_client_transport_line(const char *line, int validate_only)
}
name = smartlist_get(items, 0);
+ if (!string_is_C_identifier(name)) {
+ log_warn(LD_CONFIG, "Transport name is not a C identifier (%s).", name);
+ goto err;
+ }
/* field2 is either a SOCKS version or "exec" */
field2 = smartlist_get(items, 1);
@@ -4826,6 +4830,10 @@ parse_server_transport_line(const char *line, int validate_only)
}
name = smartlist_get(items, 0);
+ if (!string_is_C_identifier(name)) {
+ log_warn(LD_CONFIG, "Transport name is not a C identifier (%s).", name);
+ goto err;
+ }
type = smartlist_get(items, 1);
diff --git a/src/or/transports.c b/src/or/transports.c
index 1b7249fae..6d1ddebe5 100644
--- a/src/or/transports.c
+++ b/src/or/transports.c
@@ -686,6 +686,11 @@ parse_smethod_line(const char *line, managed_proxy_t *mp)
tor_assert(!strcmp(smartlist_get(items,0),PROTO_SMETHOD));
method_name = smartlist_get(items,1);
+ if (!string_is_C_identifier(method_name)) {
+ log_warn(LD_CONFIG, "Transport name is not a C identifier (%s).",
+ method_name);
+ goto err;
+ }
addrport = smartlist_get(items, 2);
if (tor_addr_port_parse(addrport, &addr, &port)<0) {
@@ -754,6 +759,11 @@ parse_cmethod_line(const char *line, managed_proxy_t *mp)
tor_assert(!strcmp(smartlist_get(items,0),PROTO_CMETHOD));
method_name = smartlist_get(items,1);
+ if (!string_is_C_identifier(method_name)) {
+ log_warn(LD_CONFIG, "Transport name is not a C identifier (%s).",
+ method_name);
+ goto err;
+ }
socks_ver_str = smartlist_get(items,2);