Author: hrs
Date: Wed Jan 20 09:29:07 2010
New Revision: 202686
URL: http://svn.freebsd.org/changeset/base/202686

Log:
  Try a privileged port for binding whenever possible because the
  ypbind daemon requires the ypserv daemon is running on a
  privileged port.
  
  Reported by:  Andrzej Tobola

Modified:
  head/usr.sbin/ypserv/yp_main.c

Modified: head/usr.sbin/ypserv/yp_main.c
==============================================================================
--- head/usr.sbin/ypserv/yp_main.c      Wed Jan 20 09:26:28 2010        
(r202685)
+++ head/usr.sbin/ypserv/yp_main.c      Wed Jan 20 09:29:07 2010        
(r202686)
@@ -303,13 +303,18 @@ create_service(const int sock, const str
                                        freeaddrinfo(res0);
                                        return -1;
                                }
-                               if (bind(s, res->ai_addr,
-                                   res->ai_addrlen) == -1) {
-                                       _msgout("cannot bind %s socket: %s",
-                                           nconf->nc_netid, strerror(errno));
-                                       freeaddrinfo(res0);
-                                       close(sock);
-                                       return -1;
+                               if (bindresvport_sa(s, res->ai_addr) == -1) {
+                                       if ((errno != EPERM) ||
+                                           (bind(s, res->ai_addr,
+                                           res->ai_addrlen) == -1)) {
+                                               _msgout("cannot bind "
+                                                   "%s socket: %s",
+                                                   nconf->nc_netid,
+                                               strerror(errno));
+                                               freeaddrinfo(res0);
+                                               close(sock);
+                                               return -1;
+                                       }
                                }
                                if (nconf->nc_semantics != NC_TPI_CLTS)
                                        listen(s, SOMAXCONN);
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to