mirror of
https://github.com/OpenVPN/openvpn.git
synced 2026-06-11 09:50:26 -04:00
Fix NULL-pointer crash in route_list_add_vpn_gateway().
Add ASSERT() check to route_list_add_vpn_gateway() to ensure that *rl is valid (and if not, crash with a somewhat more meaningful message than "segmentation violation"). For the actual bugfix, change init code to always allocate a "struct route_list" for IPv4, even if no --route options have been seen in the config. Fix trac#281 and trac#258. Signed-off-by: Gert Doering <gert@greenie.muc.de> Acked-by: Josh Cepek <josh.cepek@usa.net> Message-Id: <1367608404-2257-1-git-send-email-gert@greenie.muc.de> URL: http://article.gmane.org/gmane.network.openvpn.devel/7581
This commit is contained in:
parent
bd25aa66b7
commit
eb95f36734
2 changed files with 5 additions and 3 deletions
|
|
@ -1145,13 +1145,14 @@ do_init_traffic_shaper (struct context *c)
|
|||
}
|
||||
|
||||
/*
|
||||
* Allocate a route list structure if at least one
|
||||
* --route option was specified.
|
||||
* Allocate route list structures for IPv4 and IPv6
|
||||
* (we do this for IPv4 even if no --route option has been seen, as other
|
||||
* parts of OpenVPN might want to fill the route-list with info, e.g. DHCP)
|
||||
*/
|
||||
static void
|
||||
do_alloc_route_list (struct context *c)
|
||||
{
|
||||
if (c->options.routes && !c->c1.route_list)
|
||||
if (!c->c1.route_list)
|
||||
c->c1.route_list = new_route_list (c->options.max_routes, &c->gc);
|
||||
if (c->options.routes_ipv6 && !c->c1.route_ipv6_list)
|
||||
c->c1.route_ipv6_list = new_route_ipv6_list (c->options.max_routes, &c->gc);
|
||||
|
|
|
|||
|
|
@ -503,6 +503,7 @@ route_list_add_vpn_gateway (struct route_list *rl,
|
|||
struct env_set *es,
|
||||
const in_addr_t addr)
|
||||
{
|
||||
ASSERT(rl);
|
||||
rl->spec.remote_endpoint = addr;
|
||||
rl->spec.flags |= RTSA_REMOTE_ENDPOINT;
|
||||
setenv_route_addr (es, "vpn_gateway", rl->spec.remote_endpoint, -1);
|
||||
|
|
|
|||
Loading…
Reference in a new issue