From 16d8f5d34df3c1fd2f3895fae64e1b77a5c8e6b1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=2E=C3=87a=C4=9Flar=20Onur?= Date: Tue, 12 Oct 2010 15:09:08 -0400 Subject: [PATCH] Check ifa->ifa_addr otherwise existing TUN device causes following segfault; >>> import vserver >>> q = vserver.VServer("princeton_caglar") >>> q.set_ipaddresses_config("0.0.0.0") Program received signal SIGSEGV, Segmentation fault. [Switching to Thread -1220499776 (LWP 831)] 0xb72a8556 in get_mask (addr=0xbfa7761c) at python/vserverimpl.c:404 404 if (ifa->ifa_addr->sa_family == family && tun1095-0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:500 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) --- python/vserverimpl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/vserverimpl.c b/python/vserverimpl.c index c1725f3..1f0d913 100644 --- a/python/vserverimpl.c +++ b/python/vserverimpl.c @@ -401,7 +401,7 @@ get_mask(struct vc_net_addr *addr) if (getifaddrs(&head) == -1) return -1; for (ifa = head; ifa; ifa = ifa->ifa_next) { - if (ifa->ifa_addr->sa_family == family && + if (ifa->ifa_addr && ifa->ifa_addr->sa_family == family && memcmp((char *) ifa->ifa_addr + offset, ip, len) == 0) { switch (addr->vna_type) { case VC_NXA_TYPE_IPV4: -- 2.43.0