[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

(usagi-users 00906) libinet6 && getifaddrs && alpha



Hi,

On our alpha getifaddrs() after many reallocs was trying to allocate
buff of size 4GB.

Jakub Bogusz <qboosh@xxxxxxxxxx> was debugging this and here is his
fix against 20010420 snap:

diff -Nur libinet6.orig/ifaddrs.c libinet6/ifaddrs.c
--- libinet6.orig/ifaddrs.c	Fri Apr 20 15:24:56 2001
+++ libinet6/ifaddrs.c	Thu Oct 18 15:05:39 2001
@@ -233,10 +233,11 @@
   pid_t pid = getpid();
   for (;;){
     void *newbuff = realloc(buff, bufsize);
-    if (newbuff == NULL){
+    if (newbuff == NULL || !bufsize){
       if (buff){
 	int saved_errno = errno;
 	free(buff);
+	buff=NULL;
 	__set_errno(saved_errno);
       }
       result = -1;

-- 
Arkadiusz Miśkiewicz   IPv6 ready PLD Linux at http://www.pld.org.pl
misiek(at)pld.org.pl   AM2-6BONE, 1024/3DB19BBD, arekm(at)ircnet, PWr