dovecot-2.2: net_ip2addr() changed to return "" instead of NULL ...

dovecot at dovecot.org dovecot at dovecot.org
Tue Aug 6 14:54:38 EEST 2013


details:   http://hg.dovecot.org/dovecot-2.2/rev/58be84a381e5
changeset: 16666:58be84a381e5
user:      Timo Sirainen <tss at iki.fi>
date:      Tue Aug 06 14:53:23 2013 +0300
description:
net_ip2addr() changed to return "" instead of NULL on failure.
Pretty much everything in the code assumed that it would never fail, which
it normally doesn't except if the ip_addr was created for UNIX sockets.

diffstat:

 src/auth/auth-request.c    |   2 +-
 src/auth/passdb-pam.c      |   2 +-
 src/auth/passdb-vpopmail.c |   2 +-
 src/lib/net.c              |   4 ++--
 src/lib/net.h              |   2 +-
 src/lib/uri-util.c         |   2 --
 src/lmtp/client.c          |   2 +-
 src/login-common/main.c    |  11 +++++++----
 8 files changed, 14 insertions(+), 13 deletions(-)

diffs (114 lines):

diff -r 7057d4ad8891 -r 58be84a381e5 src/auth/auth-request.c
--- a/src/auth/auth-request.c	Tue Aug 06 14:46:36 2013 +0300
+++ b/src/auth/auth-request.c	Tue Aug 06 14:53:23 2013 +0300
@@ -2021,7 +2021,7 @@
 	}
 
 	ip = net_ip2addr(&auth_request->remote_ip);
-	if (ip != NULL) {
+	if (ip[0] != '\0') {
 		str_append_c(str, ',');
 		str_append(str, ip);
 	}
diff -r 7057d4ad8891 -r 58be84a381e5 src/auth/passdb-pam.c
--- a/src/auth/passdb-pam.c	Tue Aug 06 14:46:36 2013 +0300
+++ b/src/auth/passdb-pam.c	Tue Aug 06 14:53:23 2013 +0300
@@ -238,7 +238,7 @@
 
 	/* These shouldn't fail, and we don't really care if they do. */
 	host = net_ip2addr(&request->remote_ip);
-	if (host != NULL)
+	if (host[0] != '\0')
 		(void)pam_set_item(pamh, PAM_RHOST, host);
 	(void)pam_set_item(pamh, PAM_RUSER, request->user);
 	/* TTY is needed by eg. pam_access module */
diff -r 7057d4ad8891 -r 58be84a381e5 src/auth/passdb-vpopmail.c
--- a/src/auth/passdb-vpopmail.c	Tue Aug 06 14:46:36 2013 +0300
+++ b/src/auth/passdb-vpopmail.c	Tue Aug 06 14:53:23 2013 +0300
@@ -153,7 +153,7 @@
 	    strcasecmp(request->service, "IMAP") == 0) {
 		const char *host = net_ip2addr(&request->remote_ip);
 		/* vpopmail 5.4 does not understand IPv6 */
-		if (host != NULL && IPADDR_IS_V4(&request->remote_ip)) {
+		if (host[0] != '\0' && IPADDR_IS_V4(&request->remote_ip)) {
 			/* use putenv() directly rather than env_put() which
 			   would leak memory every time we got here. use a
 			   static buffer for putenv() as SUSv2 requirements
diff -r 7057d4ad8891 -r 58be84a381e5 src/lib/net.c
--- a/src/lib/net.c	Tue Aug 06 14:46:36 2013 +0300
+++ b/src/lib/net.c	Tue Aug 06 14:53:23 2013 +0300
@@ -870,14 +870,14 @@
 
 	addr[MAX_IP_LEN] = '\0';
 	if (inet_ntop(ip->family, &ip->u.ip6, addr, MAX_IP_LEN) == NULL)
-		return NULL;
+		return "";
 
 	return t_strdup(addr);
 #else
 	unsigned long ip4;
 
 	if (ip->family != AF_INET)
-		return NULL;
+		return "";
 
 	ip4 = ntohl(ip->u.ip4.s_addr);
 	return t_strdup_printf("%lu.%lu.%lu.%lu",
diff -r 7057d4ad8891 -r 58be84a381e5 src/lib/net.h
--- a/src/lib/net.h	Tue Aug 06 14:46:36 2013 +0300
+++ b/src/lib/net.h	Tue Aug 06 14:53:23 2013 +0300
@@ -133,7 +133,7 @@
    unavailable. */
 int net_getunixcred(int fd, struct net_unix_cred *cred_r);
 
-/* Returns ip_addr as string, or NULL if ip is invalid. */
+/* Returns ip_addr as string, or "" if ip isn't valid IPv4 or IPv6 address. */
 const char *net_ip2addr(const struct ip_addr *ip);
 /* char* -> struct ip_addr translation. */
 int net_addr2ip(const char *addr, struct ip_addr *ip);
diff -r 7057d4ad8891 -r 58be84a381e5 src/lib/uri-util.c
--- a/src/lib/uri-util.c	Tue Aug 06 14:46:36 2013 +0300
+++ b/src/lib/uri-util.c	Tue Aug 06 14:53:23 2013 +0300
@@ -799,8 +799,6 @@
 {
 	const char *addr = net_ip2addr(host_ip);
 
-	i_assert(addr != NULL);
-
 	if (host_ip->family == AF_INET) {
 		str_append(out, addr);
 		return;
diff -r 7057d4ad8891 -r 58be84a381e5 src/lmtp/client.c
--- a/src/lmtp/client.c	Tue Aug 06 14:46:36 2013 +0300
+++ b/src/lmtp/client.c	Tue Aug 06 14:53:23 2013 +0300
@@ -195,7 +195,7 @@
 	const char *addr;
 
 	addr = net_ip2addr(&client->remote_ip);
-	if (addr == NULL)
+	if (addr[0] == '\0')
 		addr = "local";
 	return addr;
 }
diff -r 7057d4ad8891 -r 58be84a381e5 src/login-common/main.c
--- a/src/login-common/main.c	Tue Aug 06 14:46:36 2013 +0300
+++ b/src/login-common/main.c	Tue Aug 06 14:53:23 2013 +0300
@@ -64,11 +64,14 @@
 	} else if (clients_get_count() > 1 || client == NULL) {
 		process_title_set(t_strdup_printf("[%u connections (%u TLS)]",
 			clients_get_count(), ssl_proxy_get_count()));
-	} else if ((addr = net_ip2addr(&client->ip)) != NULL) {
-		process_title_set(t_strdup_printf(client->tls ?
-						  "[%s TLS]" : "[%s]", addr));
 	} else {
-		process_title_set(client->tls ? "[TLS]" : "");
+		addr = net_ip2addr(&client->ip);
+		if (addr[0] != '\0') {
+			process_title_set(t_strdup_printf(client->tls ?
+				"[%s TLS]" : "[%s]", addr));
+		} else {
+			process_title_set(client->tls ? "[TLS]" : "");
+		}
 	}
 }
 


More information about the dovecot-cvs mailing list