diff options
author | Martin Willi <martin@strongswan.org> | 2009-09-23 11:18:30 +0200 |
---|---|---|
committer | Martin Willi <martin@strongswan.org> | 2009-09-23 11:18:30 +0200 |
commit | 0406ed7a166e732f1b237ecf6198922825f027a7 (patch) | |
tree | ad8d96777b5fd54c6365bb0234425b83e6e93c01 /src/charon/plugins/kernel_netlink/kernel_netlink_net.c | |
parent | a7f79ee9c1e7a12519f39a78e6fe4ab4f1274c27 (diff) | |
download | strongswan-0406ed7a166e732f1b237ecf6198922825f027a7.tar.bz2 strongswan-0406ed7a166e732f1b237ecf6198922825f027a7.tar.xz |
Fixed a crash in source address lookup
Diffstat (limited to 'src/charon/plugins/kernel_netlink/kernel_netlink_net.c')
-rw-r--r-- | src/charon/plugins/kernel_netlink/kernel_netlink_net.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/charon/plugins/kernel_netlink/kernel_netlink_net.c b/src/charon/plugins/kernel_netlink/kernel_netlink_net.c index d9331276c..ab2ca7d13 100644 --- a/src/charon/plugins/kernel_netlink/kernel_netlink_net.c +++ b/src/charon/plugins/kernel_netlink/kernel_netlink_net.c @@ -861,15 +861,18 @@ static host_t *get_route(private_kernel_netlink_net_t *this, host_t *dest, { /* got a source address */ new_src = host_create_from_chunk(msg->rtm_family, rta_src, 0); - if (get_vip_refcount(this, src)) - { /* skip source address if it is installed by us */ - new_src->destroy(new_src); - } - else + if (new_src) { - DESTROY_IF(src); - src = new_src; - best = msg->rtm_dst_len; + if (get_vip_refcount(this, new_src)) + { /* skip source address if it is installed by us */ + new_src->destroy(new_src); + } + else + { + DESTROY_IF(src); + src = new_src; + best = msg->rtm_dst_len; + } } continue; } |