svn commit: samba r26487 - in branches/SAMBA_4_0: . source/lib/replace

jelmer at samba.org jelmer at samba.org
Mon Dec 17 05:53:38 GMT 2007


Author: jelmer
Date: 2007-12-17 05:53:37 +0000 (Mon, 17 Dec 2007)
New Revision: 26487

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=26487

Log:
Cope with systems that don't have struct sockaddr.sa_len.
Modified:
   branches/SAMBA_4_0/
   branches/SAMBA_4_0/source/lib/replace/getifaddrs.c
   branches/SAMBA_4_0/source/lib/replace/getifaddrs.m4


Changeset:

Property changes on: branches/SAMBA_4_0
___________________________________________________________________
Name: bzr:revision-info
...skipped...
Name: bzr:revision-id:v3-trunk0
...skipped...

Modified: branches/SAMBA_4_0/source/lib/replace/getifaddrs.c
===================================================================
--- branches/SAMBA_4_0/source/lib/replace/getifaddrs.c	2007-12-17 05:44:38 UTC (rev 26486)
+++ branches/SAMBA_4_0/source/lib/replace/getifaddrs.c	2007-12-17 05:53:37 UTC (rev 26487)
@@ -53,10 +53,17 @@
 
 struct sockaddr *sockaddr_dup(struct sockaddr *sa)
 {
-	struct sockaddr *ret = calloc(1, sa->sa_len);
+	struct sockaddr *ret;
+	socklen_t socklen;
+#ifdef HAVE_SOCKADDR_SA_LEN
+	socklen = sa->sa_len;
+#else
+	socklen = sizeof(struct sockaddr_storage);
+#endif
+	ret = = calloc(1, socklen);
 	if (ret == NULL)
 		return NULL;
-	memcpy(ret, sa, sa->sa_len);
+	memcpy(ret, sa, socklen);
 	return ret;
 }
 #endif

Modified: branches/SAMBA_4_0/source/lib/replace/getifaddrs.m4
===================================================================
--- branches/SAMBA_4_0/source/lib/replace/getifaddrs.m4	2007-12-17 05:44:38 UTC (rev 26486)
+++ branches/SAMBA_4_0/source/lib/replace/getifaddrs.m4	2007-12-17 05:53:37 UTC (rev 26487)
@@ -1,5 +1,11 @@
 AC_CHECK_HEADERS([ifaddrs.h])
 
+dnl Used when getifaddrs is not available
+AC_CHECK_MEMBERS([struct sockaddr.sa_len], 
+	 [AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Whether struct sockaddr has a sa_len member])],
+	 [],
+	 [#include <sys/socket.h>])
+
 dnl test for getifaddrs and freeifaddrs
 AC_CACHE_CHECK([for getifaddrs and freeifaddrs],samba_cv_HAVE_GETIFADDRS,[
 AC_TRY_COMPILE([



More information about the samba-cvs mailing list