Mercurial > illumos > illumos-gate
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: