diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/or/routerlist.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/or/routerlist.c b/src/or/routerlist.c index daed36aad..87a063e33 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -911,11 +911,13 @@ static int router_add_exit_policy(routerinfo_t *router, address = arg; mask = strchr(arg,'/'); port = strchr(mask?mask:arg,':'); - if(!port) - goto policy_read_failed; + /* Break 'arg' into separate strings. 'arg' was already strdup'd by + * _router_get_next_token, so it's safe to modify. + */ if (mask) *mask++ = 0; - *port++ = 0; + if (port) + *port++ = 0; if (strcmp(address, "*") == 0) { newe->addr = 0; @@ -945,7 +947,7 @@ static int router_add_exit_policy(routerinfo_t *router, goto policy_read_failed; } } - if (strcmp(port, "*") == 0) { + if (!port || strcmp(port, "*") == 0) { newe->prt_min = 1; newe->prt_max = 65535; } else { |