svn commit: samba r12073 - in branches/SAMBA_4_0/source/lib/socket_wrapper: .

metze at samba.org metze at samba.org
Mon Dec 5 15:22:40 GMT 2005


Author: metze
Date: 2005-12-05 15:22:38 +0000 (Mon, 05 Dec 2005)
New Revision: 12073

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

Log:
fix vlgrind error, calculate the correct size for memcpy()
and don't assume out_len is >= sizeof(*in_addr)

metze
Modified:
   branches/SAMBA_4_0/source/lib/socket_wrapper/socket_wrapper.c


Changeset:
Modified: branches/SAMBA_4_0/source/lib/socket_wrapper/socket_wrapper.c
===================================================================
--- branches/SAMBA_4_0/source/lib/socket_wrapper/socket_wrapper.c	2005-12-05 12:47:32 UTC (rev 12072)
+++ branches/SAMBA_4_0/source/lib/socket_wrapper/socket_wrapper.c	2005-12-05 15:22:38 UTC (rev 12073)
@@ -357,16 +357,23 @@
 				    socklen_t un_addrlen,
 				    int family,
 				    struct sockaddr *out_addr,
-				    socklen_t *out_len)
+				    socklen_t *_out_addrlen)
 {
-	if (out_addr == NULL || out_len == NULL) 
+	socklen_t out_addrlen;
+
+	if (out_addr == NULL || _out_addrlen == NULL) 
 		return 0;
 
 	if (un_addrlen == 0) {
-		*out_len = 0;
+		*_out_addrlen = 0;
 		return 0;
 	}
 
+	out_addrlen = *_out_addrlen;
+	if (out_addrlen > un_addrlen) {
+		out_addrlen = un_addrlen;
+	}
+
 	switch (family) {
 	case AF_INET:
 		switch (si->type) {
@@ -377,10 +384,10 @@
 			errno = ESOCKTNOSUPPORT;
 			return -1;
 		}
-		return convert_un_in(in_addr, (struct sockaddr_in *)out_addr, out_len);
+		return convert_un_in(in_addr, (struct sockaddr_in *)out_addr, _out_addrlen);
 	case AF_UNIX:
-		memcpy(out_addr, in_addr, sizeof(*in_addr));
-		*out_len = sizeof(*in_addr);
+		memcpy(out_addr, in_addr, out_addrlen);
+		*_out_addrlen = out_addrlen;
 		return 0;
 	default:
 		break;



More information about the samba-cvs mailing list