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