Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 3 Aug 2005 13:20:21 GMT
From:      Kai <kai@xs4all.nl>
To:        freebsd-bugs@FreeBSD.org
Subject:   Re: bin/73422: portmap forks ad infinitum when the NIS domain name is set, probably a bug in the RPC library
Message-ID:  <200508031320.j73DKLLP012556@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR bin/73422; it has been noted by GNATS.

From: Kai <kai@xs4all.nl>
To: bug-followup@FreeBSD.org, Trond.Endrestol@gtf.ol.no
Cc:  
Subject: Re: bin/73422: portmap forks ad infinitum when the NIS domain name is set, probably a bug in the RPC library
Date: Wed, 3 Aug 2005 15:12:38 +0200

 Hello,
 
 We're having trouble with our nis servers running in the same problems as
 the above problems, though we are running *without* the -v option.
 
 Having a look at the endless problem reports on portmap I can only come
 to the conclusioin that one shouldn't try to do any conversion of
 portnumbers to names in the logit() function. Or even, which flabbergasted
 me even more, a call to getnameinfo() in freebsd5's rpcbind.
 
 I surely can see that one can stall the process on purpose this way.
 
 The thing is that this only triggers when a lot of logging is done. Ofcourse
 "a lot of logging" isn't supposed to happen that often, but when it does,
 as with the '-v' option, it triggers this bug.
 
 I therefore suggest the following patches to rpcbind in
 usr.sbin/rpcbind/security.c, and the almost identical patch to portmap in
 usr.sbin/portmap/pmap_check.c.
 
 Regards,
 
 Kai Storbeck
 XS4ALL Internet
 
 --- security.c.orig     Wed Aug  3 14:48:24 2005
 +++ security.c  Wed Aug  3 14:59:03 2005
 @@ -165,7 +165,7 @@
         char    procbuf[32];
         char   *progname;
         char    progbuf[32];
 -       char fromname[NI_MAXHOST];
 +       /* char fromname[NI_MAXHOST]; */
         struct rpcent *rpc;
         static const char *procmap[] = {
         /* RPCBPROC_NULL */             "null",
 @@ -195,8 +195,9 @@
  
                 if (prognum == 0) {
                         progname = "";
 -               } else if ((rpc = getrpcbynumber((int) prognum))) {
 -                       progname = rpc->r_name;
 +               /* } else if ((rpc = getrpcbynumber((int) prognum))) {
 +                *      progname = rpc->r_name;
 +                */
                 } else {
                         snprintf(progname = progbuf, sizeof(progbuf), "%u",
                             (unsigned)prognum);
 @@ -213,14 +214,15 @@
  
                 /* Write syslog record. */
  
 -               if (addr->sa_family == AF_LOCAL)
 -                       strcpy(fromname, "local");
 -               else
 -                       getnameinfo(addr, addr->sa_len, fromname,
 -                           sizeof fromname, NULL, 0, NI_NUMERICHOST);
 +               /* if (addr->sa_family == AF_LOCAL)
 +                *      strcpy(fromname, "local");
 +                * else
 +                *      getnameinfo(addr, addr->sa_len, fromname,
 +                *          sizeof fromname, NULL, 0, NI_NUMERICHOST);
 +                */
  
                 syslog(severity, "connect from %s to %s(%s)%s",
 -                       fromname, procname, progname, text);
 +                       inet_ntoa(addr->sin_addr), procname, progname,
 text);
                 _exit(0);
         }
  }
 
 
 
 --- pmap_check.c.orig   Wed Aug  3 15:00:28 2005
 +++ pmap_check.c        Wed Aug  3 15:02:37 2005
 @@ -238,8 +238,9 @@
  
         if (prognum == 0) {
             progname = "";
 -       } else if ((rpc = getrpcbynumber((int) prognum))) {
 -           progname = rpc->r_name;
 +       /* } else if ((rpc = getrpcbynumber((int) prognum))) {
 +        *    progname = rpc->r_name;
 +        */
         } else {
             sprintf(progbuf, "%lu", prognum);
             progname = progbuf;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200508031320.j73DKLLP012556>