This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Busybox/uClibc segfault with PPPoE


Hi Yann,

My toolchain is gcc-4.3.2/uClibc-0.9.30.1 from crosstool-ng-1.4.1, armeb-unknown-linux-uclibc.

Busybox (v1.12.2 in my case) apps ping/tftp terminate with a segfault when a PPPoE connection is established.

The following link describes the issue as a uClibc problem.

http://lists.busybox.net/pipermail/buildroot/2009-April/027162.html

The link also provides a patch for resolving the issue.  I put the patch in the appropriate crosstool-ng location (patches/uClibc/0.9.30.1), rebuilt my toolchain, and then rebuilt Busybox.  The Busybox apps now function properly in the presence of the PPPoE connection.

I looked in the latest crosstool-ng release and didn't see a patch.  I also didn't see any mention of this in the archive.  (Although, I only lightly scanned the archive.)  I've included the patch for review.  I apologize if I'm bringing to light something that is already known.

Regards,
...doug

---8<-----

diff -Narup uClibc-0.9.30.1.orig/libc/inet/getaddrinfo.c uClibc-0.9.30.1/libc/inet/getaddrinfo.c
--- uClibc-0.9.30.1.orig/libc/inet/getaddrinfo.c	2009-02-26 21:49:14.000000000 +0900
+++ uClibc-0.9.30.1/libc/inet/getaddrinfo.c	2009-03-06 00:59:23.000000000 +0900
@@ -187,6 +187,8 @@ static unsigned __check_pf(void)
 		}
 
 		for (runp = ifa; runp != NULL; runp = runp->ifa_next) {
+			if (runp->ifa_addr == NULL)
+				continue;
 #if defined __UCLIBC_HAS_IPV4__
 			if (runp->ifa_addr->sa_family == PF_INET)
 				seen |= SEEN_IPV4;


      
diff -Narup uClibc-0.9.30.1.orig/libc/inet/getaddrinfo.c uClibc-0.9.30.1/libc/inet/getaddrinfo.c
--- uClibc-0.9.30.1.orig/libc/inet/getaddrinfo.c	2009-02-26 21:49:14.000000000 +0900
+++ uClibc-0.9.30.1/libc/inet/getaddrinfo.c	2009-03-06 00:59:23.000000000 +0900
@@ -187,6 +187,8 @@ static unsigned __check_pf(void)
 		}
 
 		for (runp = ifa; runp != NULL; runp = runp->ifa_next) {
+			if (runp->ifa_addr == NULL)
+				continue;
 #if defined __UCLIBC_HAS_IPV4__
 			if (runp->ifa_addr->sa_family == PF_INET)
 				seen |= SEEN_IPV4;
--
For unsubscribe information see http://sourceware.org/lists.html#faq

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]