mirror of
https://github.com/NLnetLabs/unbound.git
synced 2025-12-20 23:00:56 -05:00
- Fix #1238: segmentation fault when adding through the remote
interface a per-view local zone to a view with no previous (configured) local zones. git-svn-id: file:///svn/unbound/trunk@4077 be551aaa-1e26-0410-a405-d3ace91eadb9
This commit is contained in:
parent
02282ba679
commit
78fecfe558
2 changed files with 35 additions and 2 deletions
|
|
@ -1375,6 +1375,13 @@ do_view_zone_add(SSL* ssl, struct worker* worker, char* arg)
|
|||
ssl_printf(ssl,"no view with name: %s\n", arg);
|
||||
return;
|
||||
}
|
||||
if(!v->local_zones) {
|
||||
if(!(v->local_zones = local_zones_create())){
|
||||
lock_rw_unlock(&v->lock);
|
||||
ssl_printf(ssl,"error out of memory\n");
|
||||
return;
|
||||
}
|
||||
}
|
||||
do_zone_add(ssl, v->local_zones, arg2);
|
||||
lock_rw_unlock(&v->lock);
|
||||
}
|
||||
|
|
@ -1393,6 +1400,11 @@ do_view_zone_remove(SSL* ssl, struct worker* worker, char* arg)
|
|||
ssl_printf(ssl,"no view with name: %s\n", arg);
|
||||
return;
|
||||
}
|
||||
if(!v->local_zones) {
|
||||
lock_rw_unlock(&v->lock);
|
||||
send_ok(ssl);
|
||||
return;
|
||||
}
|
||||
do_zone_remove(ssl, v->local_zones, arg2);
|
||||
lock_rw_unlock(&v->lock);
|
||||
}
|
||||
|
|
@ -1411,6 +1423,13 @@ do_view_data_add(SSL* ssl, struct worker* worker, char* arg)
|
|||
ssl_printf(ssl,"no view with name: %s\n", arg);
|
||||
return;
|
||||
}
|
||||
if(!v->local_zones) {
|
||||
if(!(v->local_zones = local_zones_create())){
|
||||
lock_rw_unlock(&v->lock);
|
||||
ssl_printf(ssl,"error out of memory\n");
|
||||
return;
|
||||
}
|
||||
}
|
||||
do_data_add(ssl, v->local_zones, arg2);
|
||||
lock_rw_unlock(&v->lock);
|
||||
}
|
||||
|
|
@ -1429,6 +1448,11 @@ do_view_data_remove(SSL* ssl, struct worker* worker, char* arg)
|
|||
ssl_printf(ssl,"no view with name: %s\n", arg);
|
||||
return;
|
||||
}
|
||||
if(!v->local_zones) {
|
||||
lock_rw_unlock(&v->lock);
|
||||
send_ok(ssl);
|
||||
return;
|
||||
}
|
||||
do_data_remove(ssl, v->local_zones, arg2);
|
||||
lock_rw_unlock(&v->lock);
|
||||
}
|
||||
|
|
@ -2564,7 +2588,9 @@ do_view_list_local_zones(SSL* ssl, struct worker* worker, char* arg)
|
|||
ssl_printf(ssl,"no view with name: %s\n", arg);
|
||||
return;
|
||||
}
|
||||
if(v->local_zones) {
|
||||
do_list_local_zones(ssl, v->local_zones);
|
||||
}
|
||||
lock_rw_unlock(&v->lock);
|
||||
}
|
||||
|
||||
|
|
@ -2578,7 +2604,9 @@ do_view_list_local_data(SSL* ssl, struct worker* worker, char* arg)
|
|||
ssl_printf(ssl,"no view with name: %s\n", arg);
|
||||
return;
|
||||
}
|
||||
if(v->local_zones) {
|
||||
do_list_local_data(ssl, worker, v->local_zones);
|
||||
}
|
||||
lock_rw_unlock(&v->lock);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,8 @@
|
|||
22 March 2017: Wouter
|
||||
- Fix #1238: segmentation fault when adding through the remote
|
||||
interface a per-view local zone to a view with no previous
|
||||
(configured) local zones.
|
||||
|
||||
21 March 2017: Ralph
|
||||
- Merge EDNS Client subnet implementation from feature branch into main
|
||||
branch, using new EDNS processing framework.
|
||||
|
|
|
|||
Loading…
Reference in a new issue