changeset 13641:9efb7f317b8a

2072 netdir_inet.c contains macro in the middle of function with problematic format Reviewed by: Steve Gonczi <gonczi@comcast.net> Reviewed by: Bayard Bell <buffer.g.overflow@gmail.com> Reviewed by: Dan McDonald <danmcd@nexenta.com> Reviewed by: Andrew Stormont <Andrew.Stormont@nexenta.com> Approved by: Richard Lowe <richlowe@richlowe.net>
author Milan Jurik <milan.jurik@xylab.cz>
date Sat, 17 Mar 2012 14:03:50 -0500
parents 2cb107f54874
children 8107b374f945
files usr/src/lib/libnsl/nss/netdir_inet.c
diffstat 1 files changed, 27 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/lib/libnsl/nss/netdir_inet.c	Sat Mar 17 13:50:09 2012 -0500
+++ b/usr/src/lib/libnsl/nss/netdir_inet.c	Sat Mar 17 14:03:50 2012 -0500
@@ -23,6 +23,7 @@
  * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
+ * Copyright 2012 Milan Jurik. All rights reserved.
  */
 
 /*
@@ -160,6 +161,17 @@
  * Top Level Interfaces that gethost/serv/netdir funnel through.
  */
 
+static int
+inetdir_free(int ret, struct in_addr *inaddrs, char **baddrlist)
+{
+	if (inaddrs)
+		free(inaddrs);
+	if (baddrlist)
+		free(baddrlist);
+	_nderror = ret;
+	return (ret);
+}
+
 /*
  * gethost/servbyname always call this function; if they call
  * with nametoaddr libs in nconf, we call netdir_getbyname
@@ -182,7 +194,6 @@
 	struct in6_addr	v6nameaddr;
 	char	**baddrlist = NULL;
 
-
 	if (nconf == NULL) {
 		_nderror = ND_BADARG;
 		return (ND_BADARG);
@@ -332,7 +343,7 @@
 				 * memory at each 'return()' point.
 				 *
 				 * Early return protection (using
-				 * FREE_return()) is needed only in NETDIR_BY
+				 * inetdir_free()) is needed only in NETDIR_BY
 				 * cases because dynamic allocation is used
 				 * when args->op_t == NETDIR_BY.
 				 *
@@ -344,15 +355,6 @@
 				 * servp!=0 conditionals because this is handled
 				 * (and returned) first.
 				 */
-#define	FREE_return(ret) \
-				{ \
-					if (inaddrs) \
-						free(inaddrs); \
-					if (baddrlist) \
-						free(baddrlist); \
-					_nderror = ret; \
-					return (ret); \
-				}
 				int i, bnets;
 
 				bnets = getbroadcastnets(nconf, &inaddrs);
@@ -362,7 +364,8 @@
 				}
 				baddrlist = malloc((bnets+1)*sizeof (char *));
 				if (baddrlist == NULL)
-					FREE_return(ND_NOMEM);
+					return (inetdir_free(ND_NOMEM, inaddrs,
+					    baddrlist));
 				for (i = 0; i < bnets; i++)
 					baddrlist[i] = (char *)&inaddrs[i];
 				baddrlist[i] = NULL;
@@ -381,7 +384,7 @@
 				 */
 				ret = hent2ndaddr(AF_INET, haddrlist, servp,
 				    res->nd_alist);
-				FREE_return(ret);
+				return (inetdir_free(ret, inaddrs, baddrlist));
 			}
 			break;
 
@@ -475,7 +478,7 @@
 				 */
 				ret = hent2ndaddr(AF_INET6, haddrlist,
 				    servp, res->nd_alist);
-				FREE_return(ret);
+				return (inetdir_free(ret, inaddrs, baddrlist));
 			}
 			break;
 
@@ -544,13 +547,15 @@
 			ndbuf4switch = _nss_XbyY_buf_alloc(
 			    sizeof (struct servent), NSS_BUFLEN_SERVICES);
 			if (ndbuf4switch == 0)
-				FREE_return(ND_NOMEM);
+				return (inetdir_free(ND_NOMEM, inaddrs,
+				    baddrlist));
 			se = _switch_getservbyname_r(args->arg.nd_hs->h_serv,
 			    proto, ndbuf4switch->result,
 			    ndbuf4switch->buffer, ndbuf4switch->buflen);
 			if (!se) {
 				NSS_XbyY_FREE(&ndbuf4switch);
-				FREE_return(ND_NOSERV);
+				return (inetdir_free(ND_NOSERV, inaddrs,
+				    baddrlist));
 			}
 			server_port = se->s_port;
 			NSS_XbyY_FREE(&ndbuf4switch);
@@ -618,7 +623,7 @@
 			 */
 			ret = hent2ndaddr(AF_INET, haddrlist,
 			    &server_port, res->nd_alist);
-			FREE_return(ret);
+			return (inetdir_free(ret, inaddrs, baddrlist));
 		}
 
 
@@ -641,14 +646,16 @@
 				    sizeof (struct servent),
 				    NSS_BUFLEN_SERVICES);
 				if (ndbuf4switch == 0)
-					FREE_return(ND_NOMEM);
+					return (inetdir_free(ND_NOMEM, inaddrs,
+					    baddrlist));
 				se = _switch_getservbyname_r(
 				    args->arg.nd_hs->h_serv,
 				    proto, ndbuf4switch->result,
 				    ndbuf4switch->buffer, ndbuf4switch->buflen);
 				if (!se) {
 					NSS_XbyY_FREE(&ndbuf4switch);
-					FREE_return(ND_NOSERV);
+					return (inetdir_free(ND_NOSERV, inaddrs,
+					    baddrlist));
 				}
 				server_port = se->s_port;
 				NSS_XbyY_FREE(&ndbuf4switch);
@@ -696,7 +703,7 @@
 				 */
 				ret = hent2ndaddr(AF_INET6, haddrlist,
 				    &server_port, res->nd_alist);
-				FREE_return(ret);
+				return (inetdir_free(ret, inaddrs, baddrlist));
 			}
 
 		default: