[prev in list] [next in list] [prev in thread] [next in thread] 

List:       quagga-dev
Subject:    [quagga-dev 8708] [PATCH 7/8] Solve segfaults with ospf6d on FreeBSD
From:       if () xip ! at
Date:       2011-04-17 19:28:20
Message-ID: 1303068500-7199-1-git-send-email-if () xip ! at
[Download RAW message or body]

From: Ingo Flaschberger <if@xip.at>

Do not send ospf6d hellos on fresh created interfaces without configuration (ie. no vlan configured).
Ospf6d use ip6_mtu, if it's not initalised, Ospf6d tries to alloc indefinite size of memory.
---
 ospf6d/ospf6_message.c |    7 +++++++
 zebra/kernel_socket.c  |    1 +
 2 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/ospf6d/ospf6_message.c b/ospf6d/ospf6_message.c
index d06eba2..86a83e0 100644
--- a/ospf6d/ospf6_message.c
+++ b/ospf6d/ospf6_message.c
@@ -1396,6 +1396,13 @@ ospf6_hello_send (struct thread *thread)
       return 0;
     }
 
+  if (iobuflen == 0)
+    {
+      zlog_debug ("Unable to send Hello on interface %s iobuflen is 0",
+                 oi->interface->name);
+      return 0;
+    }
+
   /* set next thread */
   oi->thread_send_hello = thread_add_timer (master, ospf6_hello_send,
                                             oi, oi->hello_interval);
diff --git a/zebra/kernel_socket.c b/zebra/kernel_socket.c
index feeaf5d..7f27a8a 100644
--- a/zebra/kernel_socket.c
+++ b/zebra/kernel_socket.c
@@ -280,6 +280,7 @@ ifan_read (struct if_announcemsghdr *ifan)
 				       sizeof(ifan->ifan_name)));
       ifp->ifindex = ifan->ifan_index;
 
+      if_get_metric (ifp);
       if_add_update (ifp);
     }
   else if (ifp != NULL && ifan->ifan_what == IFAN_DEPARTURE)
-- 
1.7.1.1

_______________________________________________
Quagga-dev mailing list
Quagga-dev@lists.quagga.net
http://lists.quagga.net/mailman/listinfo/quagga-dev
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic