|
@@ -950,6 +950,7 @@ static void router_free_exit_policy(routerinfo_t *router) {
|
|
|
void router_add_exit_policy_from_config(routerinfo_t *router) {
|
|
|
char *s = options.ExitPolicy, *e;
|
|
|
int last=0;
|
|
|
+ char line[1024];
|
|
|
|
|
|
if(!s) {
|
|
|
log_fn(LOG_INFO,"No exit policy configured. Ok.");
|
|
@@ -962,13 +963,16 @@ void router_add_exit_policy_from_config(routerinfo_t *router) {
|
|
|
|
|
|
for(;;) {
|
|
|
e = strchr(s,',');
|
|
|
- if(!e)
|
|
|
+ if(!e) {
|
|
|
last = 1;
|
|
|
- else
|
|
|
- *e = 0;
|
|
|
- log_fn(LOG_DEBUG,"Adding new entry '%s'",s);
|
|
|
- if(router_add_exit_policy_from_string(router,s) < 0)
|
|
|
- log_fn(LOG_WARNING,"Malformed exit policy %s; skipping.", s);
|
|
|
+ strcpy(line,s);
|
|
|
+ } else {
|
|
|
+ memcpy(line,s,e-s);
|
|
|
+ line[e-s] = 0;
|
|
|
+ }
|
|
|
+ log_fn(LOG_DEBUG,"Adding new entry '%s'",line);
|
|
|
+ if(router_add_exit_policy_from_string(router,line) < 0)
|
|
|
+ log_fn(LOG_WARNING,"Malformed exit policy %s; skipping.", line);
|
|
|
if(last)
|
|
|
return;
|
|
|
s = e+1;
|