[SCM] Samba Shared Repository - branch v3-2-test updated - initial-v3-2-unstable-170-g494bf62

Jeremy Allison jra at samba.org
Fri Nov 2 21:23:47 GMT 2007


The branch, v3-2-test has been updated
       via  494bf6293bedbda4b10aa2eae452377b8130cd01 (commit)
       via  638579d75a2aa00836dc4c0c772381b775944b16 (commit)
      from  6b7ccd3efb05291f3b8779845a3842a09bb9aa07 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test


- Log -----------------------------------------------------------------
commit 494bf6293bedbda4b10aa2eae452377b8130cd01
Author: Jeremy Allison <jra at samba.org>
Date:   Fri Nov 2 14:23:10 2007 -0700

    Fix the snprintf checks, and fix a typo in pointer indirection.
    These fixes are needed for a working getaddrinfo etc. replacement.
    Fixes from Wayne Davison <wayned at samba.org> from rsync.
    Jeremy.

commit 638579d75a2aa00836dc4c0c772381b775944b16
Author: Jeremy Allison <jra at samba.org>
Date:   Fri Nov 2 14:22:19 2007 -0700

    Ensure we use the correct socklen_t values for bind() for
    Solaris.
    Jeremy.

-----------------------------------------------------------------------

Summary of changes:
 source/lib/replace/getaddrinfo.c |   10 +++++-----
 source/lib/util_sock.c           |    4 +++-
 2 files changed, 8 insertions(+), 6 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/lib/replace/getaddrinfo.c b/source/lib/replace/getaddrinfo.c
index 063bacd..c5cd52b 100644
--- a/source/lib/replace/getaddrinfo.c
+++ b/source/lib/replace/getaddrinfo.c
@@ -222,7 +222,7 @@ static int getaddr_info_name(const char *node,
 	}
 
 	for(pptr = hp->h_addr_list; *pptr; pptr++) {
-		struct in_addr ip = *(struct in_addr *)pptr;
+		struct in_addr ip = *(struct in_addr *)*pptr;
 		struct addrinfo *ai = alloc_entry(hints, ip, port);
 
 		if (!ai) {
@@ -407,7 +407,7 @@ static int gethostnameinfo(const struct sockaddr *sa,
 		if (ret == 0) {
 			/* Name looked up successfully. */
 			ret = snprintf(node, nodelen, "%s", hp->h_name);
-			if (ret == -1 || ret > nodelen) {
+			if (ret < 0 || (size_t)ret >= nodelen) {
 				return EAI_MEMORY;
 			}
 			if (flags & NI_NOFQDN) {
@@ -428,7 +428,7 @@ static int gethostnameinfo(const struct sockaddr *sa,
 	}
 	p = inet_ntoa(((struct sockaddr_in *)sa)->sin_addr);
 	ret = snprintf(node, nodelen, "%s", p);
-	if (ret == -1 || ret > nodelen) {
+	if (ret < 0 || (size_t)ret >= nodelen) {
 		return EAI_MEMORY;
 	}
 	return 0;
@@ -449,7 +449,7 @@ static int getservicenameinfo(const struct sockaddr *sa,
 		if (se && se->s_name) {
 			/* Service name looked up successfully. */
 			ret = snprintf(service, servicelen, "%s", se->s_name);
-			if (ret == -1 || ret > servicelen) {
+			if (ret < 0 || (size_t)ret >= servicelen) {
 				return EAI_MEMORY;
 			}
 			return 0;
@@ -457,7 +457,7 @@ static int getservicenameinfo(const struct sockaddr *sa,
 		/* Otherwise just fall into the numeric service code... */
 	}
 	ret = snprintf(service, servicelen, "%d", port);
-	if (ret == -1 || ret > servicelen) {
+	if (ret < 0 || (size_t)ret >= servicelen) {
 		return EAI_MEMORY;
 	}
 	return 0;
diff --git a/source/lib/util_sock.c b/source/lib/util_sock.c
index b4fda54..4a73f92 100644
--- a/source/lib/util_sock.c
+++ b/source/lib/util_sock.c
@@ -1325,12 +1325,14 @@ int open_socket_in(int type,
 {
 	struct sockaddr_storage sock;
 	int res;
+	socklen_t slen = sizeof(struct sockaddr_in);
 
 	sock = *psock;
 
 #if defined(HAVE_IPV6)
 	if (sock.ss_family == AF_INET6) {
 		((struct sockaddr_in6 *)&sock)->sin6_port = htons(port);
+		slen = sizeof(struct sockaddr_in6);
 	}
 #endif
 	if (sock.ss_family == AF_INET) {
@@ -1374,7 +1376,7 @@ int open_socket_in(int type,
 	}
 
 	/* now we've got a socket - we need to bind it */
-	if( bind( res, (struct sockaddr *)&sock, sizeof(sock) ) == -1 ) {
+	if (bind(res, (struct sockaddr *)&sock, slen) == -1 ) {
 		if( DEBUGLVL(dlevel) && (port == SMB_PORT1 ||
 				port == SMB_PORT2 || port == NMB_PORT) ) {
 			char addr[INET6_ADDRSTRLEN];


-- 
Samba Shared Repository


More information about the samba-cvs mailing list