[Babel-users] [PATCH] rfc6126bis check for interface buffer on a multihop request

Dave Taht dave at taht.net
Sat Oct 27 01:31:51 BST 2018


while testing "ifdown enp6s0; sleep 2; ifup enp6s0, the current rfc6126
branch segvios on the send_multihop_request.

checking for ifp->buf.buf being null before making this call
appears to solve the problem.

    type=type at entry=10, len=len at entry=14) at message.c:957
957	    buf->buf[buf->len++] = type;
(gdb) up
    prefix=0x1716368 "", plen=<optimized out>, src_prefix=0x1716379 "",
    src_plen=<optimized out>, seqno=<optimized out>,
    id=0x1716360 "\366\362m\377\376\266\240\035", hop_count=127)
    at message.c:1806
1806	    start_message(buf, MESSAGE_MH_REQUEST, len);
(gdb) up
    plen=96 '`', src_prefix=0x1716379 "", src_plen=96 '`',
    seqno=<optimized out>, id=0x1716360 "\366\362m\377\376\266\240\035")
    at message.c:1904
1904	            send_multihop_request(&ifp->buf, prefix, plen, src_prefix, src_plen,
(gdb) up
    at route.c:300
300	        route_lost(src, oldmetric);
(gdb) down
    plen=96 '`', src_prefix=0x1716379 "", src_plen=96 '`',
    seqno=<optimized out>, id=0x1716360 "\366\362m\377\376\266\240\035")
    at message.c:1904
1904	            send_multihop_request(&ifp->buf, prefix, plen, src_prefix, src_plen,
---
 message.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/message.c b/message.c
index 3ca92ff..83183fe 100644
--- a/message.c
+++ b/message.c
@@ -1901,8 +1901,10 @@ send_request_resend(const unsigned char *prefix, unsigned char plen,
     } else {
         struct interface *ifp;
         FOR_ALL_INTERFACES(ifp)
+	    if(ifp->buf.buf) {
             send_multihop_request(&ifp->buf, prefix, plen, src_prefix, src_plen,
                                   seqno, id, 127);
+	    }
     }
 }
 
-- 
2.7.4




More information about the Babel-users mailing list