ypbind.c (90298) | ypbind.c (95658) |
---|---|
1/* 2 * Copyright (c) 1992/3 Theo de Raadt <deraadt@fsa.ca> 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 15 unchanged lines hidden (view full) --- 24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 */ 29 30#ifndef lint 31static const char rcsid[] = | 1/* 2 * Copyright (c) 1992/3 Theo de Raadt <deraadt@fsa.ca> 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 15 unchanged lines hidden (view full) --- 24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 */ 29 30#ifndef lint 31static const char rcsid[] = |
32 "$FreeBSD: head/usr.sbin/ypbind/ypbind.c 90298 2002-02-06 15:26:07Z des $"; | 32 "$FreeBSD: head/usr.sbin/ypbind/ypbind.c 95658 2002-04-28 15:18:50Z des $"; |
33#endif /* not lint */ 34 35#include <sys/param.h> 36#include <sys/types.h> 37#include <sys/wait.h> 38#include <sys/ioctl.h> 39#include <sys/signal.h> 40#include <sys/socket.h> --- 114 unchanged lines hidden (view full) --- 155 156SVCXPRT *udptransp, *tcptransp; 157 158void * 159ypbindproc_null_2_yp(SVCXPRT *transp, void *argp, CLIENT *clnt) 160{ 161 static char res; 162 | 33#endif /* not lint */ 34 35#include <sys/param.h> 36#include <sys/types.h> 37#include <sys/wait.h> 38#include <sys/ioctl.h> 39#include <sys/signal.h> 40#include <sys/socket.h> --- 114 unchanged lines hidden (view full) --- 155 156SVCXPRT *udptransp, *tcptransp; 157 158void * 159ypbindproc_null_2_yp(SVCXPRT *transp, void *argp, CLIENT *clnt) 160{ 161 static char res; 162 |
163 bzero((char *)&res, sizeof(res)); 164 return (void *)&res; | 163 bzero(&res, sizeof(res)); 164 return &res; |
165} 166 167struct ypbind_resp * 168ypbindproc_domain_2_yp(SVCXPRT *transp, domainname *argp, CLIENT *clnt) 169{ 170 static struct ypbind_resp res; 171 struct _dom_binding *ypdb; 172 char path[MAXPATHLEN]; 173 | 165} 166 167struct ypbind_resp * 168ypbindproc_domain_2_yp(SVCXPRT *transp, domainname *argp, CLIENT *clnt) 169{ 170 static struct ypbind_resp res; 171 struct _dom_binding *ypdb; 172 char path[MAXPATHLEN]; 173 |
174 bzero((char *)&res, sizeof res); | 174 bzero(&res, sizeof res); |
175 res.ypbind_status = YPBIND_FAIL_VAL; 176 res.ypbind_resp_u.ypbind_error = YPBIND_ERR_NOSERV; 177 178 if (strchr(*argp, '/')) { 179 syslog(LOG_WARNING, "Domain name '%s' has embedded slash -- \ 180rejecting.", *argp); 181 return(&res); 182 } --- 16 unchanged lines hidden (view full) --- 199 return (&res); 200 } 201 ypdb = (struct _dom_binding *)malloc(sizeof *ypdb); 202 if (ypdb == NULL) { 203 syslog(LOG_WARNING, "malloc: %m"); 204 res.ypbind_resp_u.ypbind_error = YPBIND_ERR_RESC; 205 return (&res); 206 } | 175 res.ypbind_status = YPBIND_FAIL_VAL; 176 res.ypbind_resp_u.ypbind_error = YPBIND_ERR_NOSERV; 177 178 if (strchr(*argp, '/')) { 179 syslog(LOG_WARNING, "Domain name '%s' has embedded slash -- \ 180rejecting.", *argp); 181 return(&res); 182 } --- 16 unchanged lines hidden (view full) --- 199 return (&res); 200 } 201 ypdb = (struct _dom_binding *)malloc(sizeof *ypdb); 202 if (ypdb == NULL) { 203 syslog(LOG_WARNING, "malloc: %m"); 204 res.ypbind_resp_u.ypbind_error = YPBIND_ERR_RESC; 205 return (&res); 206 } |
207 bzero((char *)ypdb, sizeof *ypdb); | 207 bzero(ypdb, sizeof *ypdb); |
208 strncpy(ypdb->dom_domain, *argp, sizeof ypdb->dom_domain); 209 ypdb->dom_vers = YPVERS; 210 ypdb->dom_alive = 0; 211 ypdb->dom_default = 0; 212 ypdb->dom_lockfd = -1; 213 sprintf(path, "%s/%s.%ld", BINDINGDIR, 214 ypdb->dom_domain, ypdb->dom_vers); 215 unlink(path); --- 51 unchanged lines hidden (view full) --- 267 return(NULL); 268 } 269 270 if (argp->ypsetdom_vers != YPVERS) { 271 svcerr_noprog(transp); 272 return(NULL); 273 } 274 | 208 strncpy(ypdb->dom_domain, *argp, sizeof ypdb->dom_domain); 209 ypdb->dom_vers = YPVERS; 210 ypdb->dom_alive = 0; 211 ypdb->dom_default = 0; 212 ypdb->dom_lockfd = -1; 213 sprintf(path, "%s/%s.%ld", BINDINGDIR, 214 ypdb->dom_domain, ypdb->dom_vers); 215 unlink(path); --- 51 unchanged lines hidden (view full) --- 267 return(NULL); 268 } 269 270 if (argp->ypsetdom_vers != YPVERS) { 271 svcerr_noprog(transp); 272 return(NULL); 273 } 274 |
275 bzero((char *)&bindsin, sizeof bindsin); | 275 bzero(&bindsin, sizeof bindsin); |
276 bindsin.sin_family = AF_INET; 277 bindsin.sin_addr.s_addr = *(u_int32_t *)argp->ypsetdom_binding.ypbind_binding_addr; 278 bindsin.sin_port = *(u_short *)argp->ypsetdom_binding.ypbind_binding_port; 279 rpc_received(argp->ypsetdom_domain, &bindsin, 1); 280 281 return((void *) &result); 282} 283 | 276 bindsin.sin_family = AF_INET; 277 bindsin.sin_addr.s_addr = *(u_int32_t *)argp->ypsetdom_binding.ypbind_binding_addr; 278 bindsin.sin_port = *(u_short *)argp->ypsetdom_binding.ypbind_binding_port; 279 rpc_received(argp->ypsetdom_domain, &bindsin, 1); 280 281 return((void *) &result); 282} 283 |
284static void | 284void |
285ypbindprog_2(struct svc_req *rqstp, register SVCXPRT *transp) 286{ 287 union { 288 domainname ypbindproc_domain_2_arg; 289 struct ypbind_setdom ypbindproc_setdom_2_arg; 290 } argument; 291 struct authunix_parms *creds; 292 char *result; --- 31 unchanged lines hidden (view full) --- 324 xdr_result = xdr_void; 325 local = (char *(*)()) ypbindproc_setdom_2_yp; 326 break; 327 328 default: 329 svcerr_noproc(transp); 330 return; 331 } | 285ypbindprog_2(struct svc_req *rqstp, register SVCXPRT *transp) 286{ 287 union { 288 domainname ypbindproc_domain_2_arg; 289 struct ypbind_setdom ypbindproc_setdom_2_arg; 290 } argument; 291 struct authunix_parms *creds; 292 char *result; --- 31 unchanged lines hidden (view full) --- 324 xdr_result = xdr_void; 325 local = (char *(*)()) ypbindproc_setdom_2_yp; 326 break; 327 328 default: 329 svcerr_noproc(transp); 330 return; 331 } |
332 bzero((char *)&argument, sizeof(argument)); 333 if (!svc_getargs(transp, xdr_argument, (caddr_t)&argument)) { | 332 bzero(&argument, sizeof(argument)); 333 if (!svc_getargs(transp, (xdrproc_t)xdr_argument, &argument)) { |
334 svcerr_decode(transp); 335 return; 336 } 337 result = (*local)(transp, &argument, rqstp); | 334 svcerr_decode(transp); 335 return; 336 } 337 result = (*local)(transp, &argument, rqstp); |
338 if (result != NULL && !svc_sendreply(transp, xdr_result, result)) { | 338 if (result != NULL && 339 !svc_sendreply(transp, (xdrproc_t)xdr_result, result)) { |
339 svcerr_systemerr(transp); 340 } 341 return; 342} 343 344/* Jack the reaper */ 345void 346reaper(int sig) --- 97 unchanged lines hidden (view full) --- 444 if (!svc_register(tcptransp, YPBINDPROG, YPBINDVERS, ypbindprog_2, 445 IPPROTO_TCP)) 446 errx(1, "unable to register (YPBINDPROG, YPBINDVERS, tcp)"); 447 448 /* build initial domain binding, make it "unsuccessful" */ 449 ypbindlist = (struct _dom_binding *)malloc(sizeof *ypbindlist); 450 if (ypbindlist == NULL) 451 errx(1, "malloc"); | 340 svcerr_systemerr(transp); 341 } 342 return; 343} 344 345/* Jack the reaper */ 346void 347reaper(int sig) --- 97 unchanged lines hidden (view full) --- 445 if (!svc_register(tcptransp, YPBINDPROG, YPBINDVERS, ypbindprog_2, 446 IPPROTO_TCP)) 447 errx(1, "unable to register (YPBINDPROG, YPBINDVERS, tcp)"); 448 449 /* build initial domain binding, make it "unsuccessful" */ 450 ypbindlist = (struct _dom_binding *)malloc(sizeof *ypbindlist); 451 if (ypbindlist == NULL) 452 errx(1, "malloc"); |
452 bzero((char *)ypbindlist, sizeof *ypbindlist); | 453 bzero(ypbindlist, sizeof *ypbindlist); |
453 strncpy(ypbindlist->dom_domain, domain_name, sizeof ypbindlist->dom_domain); 454 ypbindlist->dom_vers = YPVERS; 455 ypbindlist->dom_alive = 0; 456 ypbindlist->dom_lockfd = -1; 457 ypbindlist->dom_default = 1; 458 domains++; 459 460 signal(SIGCHLD, reaper); --- 74 unchanged lines hidden (view full) --- 535 if ((a = read(READFD, &addr, sizeof(struct sockaddr_in))) < 0) 536 syslog(LOG_WARNING, "could not read from child: %m"); 537 538 close(READFD); 539 FD_CLR(READFD, &fdsr); 540 FD_CLR(READFD, &svc_fdset); 541 READFD = WRITEFD = -1; 542 if (d > 0 && a > 0) | 454 strncpy(ypbindlist->dom_domain, domain_name, sizeof ypbindlist->dom_domain); 455 ypbindlist->dom_vers = YPVERS; 456 ypbindlist->dom_alive = 0; 457 ypbindlist->dom_lockfd = -1; 458 ypbindlist->dom_default = 1; 459 domains++; 460 461 signal(SIGCHLD, reaper); --- 74 unchanged lines hidden (view full) --- 536 if ((a = read(READFD, &addr, sizeof(struct sockaddr_in))) < 0) 537 syslog(LOG_WARNING, "could not read from child: %m"); 538 539 close(READFD); 540 FD_CLR(READFD, &fdsr); 541 FD_CLR(READFD, &svc_fdset); 542 READFD = WRITEFD = -1; 543 if (d > 0 && a > 0) |
543 rpc_received((char *)&buf, &addr, 0); | 544 rpc_received(buf, &addr, 0); |
544 else { 545 for (y = ypbindlist; y; y = y->dom_pnext) { 546 if (y == ypdb) 547 break; 548 prev = y; 549 } 550 switch (ypdb->dom_default) { 551 case 0: --- 58 unchanged lines hidden (view full) --- 610 return (0); 611} 612 613bool_t broadcast_result(out, addr) 614bool_t *out; 615struct sockaddr_in *addr; 616{ 617 if (retries >= MAX_RETRIES) { | 545 else { 546 for (y = ypbindlist; y; y = y->dom_pnext) { 547 if (y == ypdb) 548 break; 549 prev = y; 550 } 551 switch (ypdb->dom_default) { 552 case 0: --- 58 unchanged lines hidden (view full) --- 611 return (0); 612} 613 614bool_t broadcast_result(out, addr) 615bool_t *out; 616struct sockaddr_in *addr; 617{ 618 if (retries >= MAX_RETRIES) { |
618 bzero((char *)addr, sizeof(struct sockaddr_in)); | 619 bzero(addr, sizeof(struct sockaddr_in)); |
619 if (tell_parent(broad_domain->dom_domain, addr)) 620 syslog(LOG_WARNING, "lost connection to parent"); 621 return (TRUE); 622 } 623 624 if (yp_restricted && verify(addr->sin_addr)) { 625 retries++; 626 syslog(LOG_NOTICE, "NIS server at %s not in restricted mode access list -- rejecting.\n",inet_ntoa(addr->sin_addr)); --- 72 unchanged lines hidden (view full) --- 699 if (yp_restricted && yp_manycast) { 700 short port; 701 int i; 702 struct sockaddr_in sin; 703 704 i = __yp_ping(restricted_addrs, yp_restricted, 705 ypdb->dom_domain, &port); 706 if (i == -1) { | 620 if (tell_parent(broad_domain->dom_domain, addr)) 621 syslog(LOG_WARNING, "lost connection to parent"); 622 return (TRUE); 623 } 624 625 if (yp_restricted && verify(addr->sin_addr)) { 626 retries++; 627 syslog(LOG_NOTICE, "NIS server at %s not in restricted mode access list -- rejecting.\n",inet_ntoa(addr->sin_addr)); --- 72 unchanged lines hidden (view full) --- 700 if (yp_restricted && yp_manycast) { 701 short port; 702 int i; 703 struct sockaddr_in sin; 704 705 i = __yp_ping(restricted_addrs, yp_restricted, 706 ypdb->dom_domain, &port); 707 if (i == -1) { |
707 bzero((char *)&ypdb->dom_server_addr, 708 sizeof(struct sockaddr_in)); | 708 bzero(&ypdb->dom_server_addr, 709 sizeof(struct sockaddr_in)); |
709 if (tell_parent(ypdb->dom_domain, | 710 if (tell_parent(ypdb->dom_domain, |
710 &ypdb->dom_server_addr)) | 711 &ypdb->dom_server_addr)) |
711 syslog(LOG_WARNING, "lost connection to parent"); 712 } else { | 712 syslog(LOG_WARNING, "lost connection to parent"); 713 } else { |
713 bzero((char *)&sin, sizeof(struct sockaddr_in)); 714 bcopy((char *)&restricted_addrs[i], 715 (char *)&sin.sin_addr, sizeof(struct in_addr)); | 714 bzero(&sin, sizeof(struct sockaddr_in)); 715 bcopy(&restricted_addrs[i], 716 &sin.sin_addr, sizeof(struct in_addr)); |
716 sin.sin_family = AF_INET; 717 sin.sin_port = port; 718 if (tell_parent(broad_domain->dom_domain, &sin)) 719 syslog(LOG_WARNING, 720 "lost connection to parent"); 721 } 722 _exit(0); 723 } 724 725 retries = 0; 726 727 { 728 char *ptr; 729 | 717 sin.sin_family = AF_INET; 718 sin.sin_port = port; 719 if (tell_parent(broad_domain->dom_domain, &sin)) 720 syslog(LOG_WARNING, 721 "lost connection to parent"); 722 } 723 _exit(0); 724 } 725 726 retries = 0; 727 728 { 729 char *ptr; 730 |
730 ptr = (char *)&ypdb->dom_domain; | 731 ptr = ypdb->dom_domain; |
731 stat = clnt_broadcast(YPPROG, YPVERS, YPPROC_DOMAIN_NONACK, | 732 stat = clnt_broadcast(YPPROG, YPVERS, YPPROC_DOMAIN_NONACK, |
732 xdr_domainname, (char *)&ptr, xdr_bool, (char *)&out, | 733 (xdrproc_t)xdr_domainname, &ptr, 734 (xdrproc_t)xdr_bool, &out, |
733 (resultproc_t)broadcast_result); 734 } 735 736 if (stat != RPC_SUCCESS) { | 735 (resultproc_t)broadcast_result); 736 } 737 738 if (stat != RPC_SUCCESS) { |
737 bzero((char *)&ypdb->dom_server_addr, 738 sizeof(struct sockaddr_in)); | 739 bzero(&ypdb->dom_server_addr, 740 sizeof(struct sockaddr_in)); |
739 if (tell_parent(ypdb->dom_domain, &ypdb->dom_server_addr)) 740 syslog(LOG_WARNING, "lost connection to parent"); 741 } 742 743 _exit(0); 744} 745 746/* --- 33 unchanged lines hidden (view full) --- 780 ypdb->dom_vers = -1; 781 broadcast(ypdb); 782 return(1); 783 } 784 785 { 786 char *ptr; 787 | 741 if (tell_parent(ypdb->dom_domain, &ypdb->dom_server_addr)) 742 syslog(LOG_WARNING, "lost connection to parent"); 743 } 744 745 _exit(0); 746} 747 748/* --- 33 unchanged lines hidden (view full) --- 782 ypdb->dom_vers = -1; 783 broadcast(ypdb); 784 return(1); 785 } 786 787 { 788 char *ptr; 789 |
788 ptr = (char *)&ypdb->dom_domain; | 790 ptr = ypdb->dom_domain; |
789 | 791 |
790 if ((stat = clnt_call(client_handle, YPPROC_DOMAIN, 791 xdr_domainname, (char *)&ptr, xdr_bool, (char *)&out, 792 timeout)) != RPC_SUCCESS || out == FALSE) { | 792 stat = clnt_call(client_handle, YPPROC_DOMAIN, 793 (xdrproc_t)xdr_domainname, &ptr, 794 (xdrproc_t)xdr_bool, &out, timeout); 795 if (stat != RPC_SUCCESS || out == FALSE) { |
793 ypdb->dom_alive = 0; 794 ypdb->dom_vers = -1; 795 clnt_destroy(client_handle); 796 broadcast(ypdb); 797 return(1); 798 } 799 } 800 --- 71 unchanged lines hidden (view full) --- 872 if (ypdb == NULL) { 873 if (force == 0) 874 return; 875 ypdb = (struct _dom_binding *)malloc(sizeof *ypdb); 876 if (ypdb == NULL) { 877 syslog(LOG_WARNING, "malloc: %m"); 878 return; 879 } | 796 ypdb->dom_alive = 0; 797 ypdb->dom_vers = -1; 798 clnt_destroy(client_handle); 799 broadcast(ypdb); 800 return(1); 801 } 802 } 803 --- 71 unchanged lines hidden (view full) --- 875 if (ypdb == NULL) { 876 if (force == 0) 877 return; 878 ypdb = (struct _dom_binding *)malloc(sizeof *ypdb); 879 if (ypdb == NULL) { 880 syslog(LOG_WARNING, "malloc: %m"); 881 return; 882 } |
880 bzero((char *)ypdb, sizeof *ypdb); | 883 bzero(ypdb, sizeof *ypdb); |
881 strncpy(ypdb->dom_domain, dom, sizeof ypdb->dom_domain); 882 ypdb->dom_lockfd = -1; 883 ypdb->dom_default = 0; 884 ypdb->dom_pnext = ypbindlist; 885 ypbindlist = ypdb; 886 } 887 888 /* We've recovered from a crash: inform the world. */ 889 if (ypdb->dom_vers == -1 && ypdb->dom_server_addr.sin_addr.s_addr) 890 syslog(LOG_WARNING, "NIS server [%s] for domain \"%s\" OK", 891 inet_ntoa(raddrp->sin_addr), ypdb->dom_domain); 892 | 884 strncpy(ypdb->dom_domain, dom, sizeof ypdb->dom_domain); 885 ypdb->dom_lockfd = -1; 886 ypdb->dom_default = 0; 887 ypdb->dom_pnext = ypbindlist; 888 ypbindlist = ypdb; 889 } 890 891 /* We've recovered from a crash: inform the world. */ 892 if (ypdb->dom_vers == -1 && ypdb->dom_server_addr.sin_addr.s_addr) 893 syslog(LOG_WARNING, "NIS server [%s] for domain \"%s\" OK", 894 inet_ntoa(raddrp->sin_addr), ypdb->dom_domain); 895 |
893 bcopy((char *)raddrp, (char *)&ypdb->dom_server_addr, | 896 bcopy(raddrp, &ypdb->dom_server_addr, |
894 sizeof ypdb->dom_server_addr); 895 896 ypdb->dom_vers = YPVERS; 897 ypdb->dom_alive = 1; 898 ypdb->dom_broadcast_pid = 0; 899 900 if (ypdb->dom_lockfd != -1) 901 close(ypdb->dom_lockfd); --- 16 unchanged lines hidden (view full) --- 918#endif 919 920 /* 921 * ok, if BINDINGDIR exists, and we can create the binding file, 922 * then write to it.. 923 */ 924 ypdb->dom_lockfd = fd; 925 | 897 sizeof ypdb->dom_server_addr); 898 899 ypdb->dom_vers = YPVERS; 900 ypdb->dom_alive = 1; 901 ypdb->dom_broadcast_pid = 0; 902 903 if (ypdb->dom_lockfd != -1) 904 close(ypdb->dom_lockfd); --- 16 unchanged lines hidden (view full) --- 921#endif 922 923 /* 924 * ok, if BINDINGDIR exists, and we can create the binding file, 925 * then write to it.. 926 */ 927 ypdb->dom_lockfd = fd; 928 |
926 iov[0].iov_base = (caddr_t)&(udptransp->xp_port); | 929 iov[0].iov_base = (char *)&(udptransp->xp_port); |
927 iov[0].iov_len = sizeof udptransp->xp_port; | 930 iov[0].iov_len = sizeof udptransp->xp_port; |
928 iov[1].iov_base = (caddr_t)&ybr; | 931 iov[1].iov_base = (char *)&ybr; |
929 iov[1].iov_len = sizeof ybr; 930 931 bzero(&ybr, sizeof ybr); 932 ybr.ypbind_status = YPBIND_SUCC_VAL; 933 *(u_int32_t *)&ybr.ypbind_resp_u.ypbind_bindinfo.ypbind_binding_addr = raddrp->sin_addr.s_addr; 934 *(u_short *)&ybr.ypbind_resp_u.ypbind_bindinfo.ypbind_binding_port = raddrp->sin_port; 935 936 if (writev(ypdb->dom_lockfd, iov, 2) != iov[0].iov_len + iov[1].iov_len) { --- 9 unchanged lines hidden (view full) --- 946 * 1 if not matched. 947 */ 948int 949verify(struct in_addr addr) 950{ 951 int i; 952 953 for (i = 0; i < RESTRICTED_SERVERS; i++) | 932 iov[1].iov_len = sizeof ybr; 933 934 bzero(&ybr, sizeof ybr); 935 ybr.ypbind_status = YPBIND_SUCC_VAL; 936 *(u_int32_t *)&ybr.ypbind_resp_u.ypbind_bindinfo.ypbind_binding_addr = raddrp->sin_addr.s_addr; 937 *(u_short *)&ybr.ypbind_resp_u.ypbind_bindinfo.ypbind_binding_port = raddrp->sin_port; 938 939 if (writev(ypdb->dom_lockfd, iov, 2) != iov[0].iov_len + iov[1].iov_len) { --- 9 unchanged lines hidden (view full) --- 949 * 1 if not matched. 950 */ 951int 952verify(struct in_addr addr) 953{ 954 int i; 955 956 for (i = 0; i < RESTRICTED_SERVERS; i++) |
954 if (!bcmp((char *)&addr, (char *)&restricted_addrs[i], 955 sizeof(struct in_addr))) | 957 if (!bcmp(&addr, &restricted_addrs[i], sizeof(struct in_addr))) |
956 return(0); 957 958 return(1); 959} 960 961/* 962 * Try to set restricted mode. We default to normal mode if we can't 963 * resolve the specified hostnames. --- 9 unchanged lines hidden (view full) --- 973 if ((s = strsep(&args, ",")) == NULL) 974 return; 975 domain_name = s; 976 977 /* Get the addresses of the servers. */ 978 while ((s = strsep(&args, ",")) != NULL && i < RESTRICTED_SERVERS) { 979 if ((h = gethostbyname(s)) == NULL) 980 return; | 958 return(0); 959 960 return(1); 961} 962 963/* 964 * Try to set restricted mode. We default to normal mode if we can't 965 * resolve the specified hostnames. --- 9 unchanged lines hidden (view full) --- 975 if ((s = strsep(&args, ",")) == NULL) 976 return; 977 domain_name = s; 978 979 /* Get the addresses of the servers. */ 980 while ((s = strsep(&args, ",")) != NULL && i < RESTRICTED_SERVERS) { 981 if ((h = gethostbyname(s)) == NULL) 982 return; |
981 bcopy ((char *)h->h_addr_list[0], (char *)&restricted_addrs[i], 982 sizeof(struct in_addr)); 983 i++; | 983 bcopy (h->h_addr_list[0], &restricted_addrs[i], 984 sizeof(struct in_addr)); 985 i++; |
984 } 985 986 /* ypset and ypsetme not allowed with restricted mode */ 987 ypsetmode = YPSET_NO; 988 989 yp_restricted = i; 990 return; 991} | 986 } 987 988 /* ypset and ypsetme not allowed with restricted mode */ 989 ypsetmode = YPSET_NO; 990 991 yp_restricted = i; 992 return; 993} |