aboutsummaryrefslogtreecommitdiffstats
path: root/src/charon/plugins/kernel_netlink/kernel_netlink_net.c
diff options
context:
space:
mode:
authorMartin Willi <martin@strongswan.org>2009-09-23 11:18:30 +0200
committerMartin Willi <martin@strongswan.org>2009-09-23 11:18:30 +0200
commit0406ed7a166e732f1b237ecf6198922825f027a7 (patch)
treead8d96777b5fd54c6365bb0234425b83e6e93c01 /src/charon/plugins/kernel_netlink/kernel_netlink_net.c
parenta7f79ee9c1e7a12519f39a78e6fe4ab4f1274c27 (diff)
downloadstrongswan-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.c19
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;
}