diff options
author | 2001-11-19 09:03:03 +0000 | |
---|---|---|
committer | 2001-11-19 09:03:03 +0000 | |
commit | 71e925635680d389f3efd1248e87a390f0757a19 (patch) | |
tree | 3259cc818f4b77c2b170828e08282deb77a3152e | |
parent | KNFightmare (diff) | |
download | wireguard-openbsd-71e925635680d389f3efd1248e87a390f0757a19.tar.xz wireguard-openbsd-71e925635680d389f3efd1248e87a390f0757a19.zip |
use a private svc_run() function that checks for a signal handler flag;
now signal safe. Also, massive KNF.
-rw-r--r-- | usr.sbin/ypserv/common/ypdb.c | 20 | ||||
-rw-r--r-- | usr.sbin/ypserv/common/yplib_host.c | 179 | ||||
-rw-r--r-- | usr.sbin/ypserv/ypserv/acl.c | 1010 | ||||
-rw-r--r-- | usr.sbin/ypserv/ypserv/ypserv.c | 131 | ||||
-rw-r--r-- | usr.sbin/ypserv/ypserv/ypserv_db.c | 301 | ||||
-rw-r--r-- | usr.sbin/ypserv/ypserv/ypserv_proc.c | 334 | ||||
-rw-r--r-- | usr.sbin/ypserv/ypserv/ypserv_xdr.c | 357 | ||||
-rw-r--r-- | usr.sbin/ypserv/ypserv/ypserv_xdr_v1.c | 24 |
8 files changed, 1136 insertions, 1220 deletions
diff --git a/usr.sbin/ypserv/common/ypdb.c b/usr.sbin/ypserv/common/ypdb.c index 6f6234d9574..5ece3f2dd6f 100644 --- a/usr.sbin/ypserv/common/ypdb.c +++ b/usr.sbin/ypserv/common/ypdb.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ypdb.c,v 1.5 1997/02/09 09:49:36 maja Exp $ */ +/* $OpenBSD: ypdb.c,v 1.6 2001/11/19 09:03:03 deraadt Exp $ */ /* * Copyright (c) 1990, 1993 @@ -209,7 +209,7 @@ ypdb_nextkey(db) extern datum ypdb_setkey(db, key) DBM *db; - datum key; + datum key; { int status; datum retdata; @@ -219,13 +219,13 @@ ypdb_setkey(db, key) status = (db->seq)(db, (DBT *)&retkey, (DBT *)&retdata, R_FIRST); if (status) retkey.dptr = NULL; - while ((retkey.dptr != NULL) && - ((retkey.dsize != key.dsize) || - (strncmp(key.dptr,retkey.dptr,retkey.dsize) != 0))) { - status = (db->seq)(db, (DBT *)&retkey, (DBT *)&retdata, R_NEXT); - if (status) - retkey.dptr = NULL; - }; + while (retkey.dptr != NULL && + (retkey.dsize != key.dsize || + strncmp(key.dptr, retkey.dptr, retkey.dsize) != 0)) { + status = (db->seq)(db, (DBT *)&retkey, (DBT *)&retdata, R_NEXT); + if (status) + retkey.dptr = NULL; + } return (retkey); #else status = (db->seq)(db, (DBT *)&key, (DBT *)&retdata, R_CURSOR); @@ -240,7 +240,6 @@ ypdb_setkey(db, key) * 0 on success * <0 failure */ - int ypdb_delete(db, key) DBM *db; @@ -261,7 +260,6 @@ ypdb_delete(db, key) * <0 failure * 1 if YPDB_INSERT and entry exists */ - int ypdb_store(db, key, content, flags) DBM *db; diff --git a/usr.sbin/ypserv/common/yplib_host.c b/usr.sbin/ypserv/common/yplib_host.c index 7d7282a7d00..d91ecc9dd03 100644 --- a/usr.sbin/ypserv/common/yplib_host.c +++ b/usr.sbin/ypserv/common/yplib_host.c @@ -1,4 +1,4 @@ -/* $OpenBSD: yplib_host.c,v 1.9 1998/02/14 10:05:26 maja Exp $ */ +/* $OpenBSD: yplib_host.c,v 1.10 2001/11/19 09:03:03 deraadt Exp $ */ /* * Copyright (c) 1992, 1993 Theo de Raadt <deraadt@theos.com> @@ -32,7 +32,7 @@ */ #ifndef LINT -static char *rcsid = "$OpenBSD: yplib_host.c,v 1.9 1998/02/14 10:05:26 maja Exp $"; +static char *rcsid = "$OpenBSD: yplib_host.c,v 1.10 2001/11/19 09:03:03 deraadt Exp $"; #endif #include <sys/param.h> @@ -66,11 +66,11 @@ extern void *ypresp_data; int _yplib_host_timeout = 10; CLIENT * -yp_bind_host(server,program,version,port,usetcp) -char *server; -u_long program,version; -u_short port; -int usetcp; +yp_bind_host(server, program, version, port, usetcp) + char *server; + u_long program, version; + u_short port; + int usetcp; { struct sockaddr_in rsrv_sin; int rsrv_sock; @@ -82,22 +82,21 @@ int usetcp; rsrv_sin.sin_len = sizeof rsrv_sin; rsrv_sin.sin_family = AF_INET; rsrv_sock = RPC_ANYSOCK; - if (port != 0) { + if (port != 0) rsrv_sin.sin_port = htons(port); - } - if ((*server >= '0') && (*server <= '9')) { - if(inet_aton(server,&rsrv_sin.sin_addr) == 0) { + if (*server >= '0' && *server <= '9') { + if (inet_aton(server, &rsrv_sin.sin_addr) == 0) { fprintf(stderr, "inet_aton: invalid address %s.\n", - server); - exit(1); + server); + exit(1); } } else { h = gethostbyname(server); - if(h == NULL) { + if (h == NULL) { fprintf(stderr, "gethostbyname: unknown host %s.\n", - server); - exit(1); + server); + exit(1); } rsrv_sin.sin_addr.s_addr = *(u_int32_t *)h->h_addr; } @@ -105,18 +104,17 @@ int usetcp; tv.tv_sec = 10; tv.tv_usec = 0; - if (usetcp) { + if (usetcp) client = clnttcp_create(&rsrv_sin, program, version, - &rsrv_sock, 0, 0); - } else { + &rsrv_sock, 0, 0); + else client = clntudp_create(&rsrv_sin, program, version, tv, - &rsrv_sock); - } + &rsrv_sock); if (client == NULL) { fprintf(stderr, "clntudp_create: no contact with host %s.\n", - server); - exit(1); + server); + exit(1); } return(client); @@ -124,8 +122,8 @@ int usetcp; } CLIENT * -yp_bind_local(program,version) -u_long program,version; +yp_bind_local(program, version) + u_long program, version; { struct sockaddr_in rsrv_sin; int rsrv_sock; @@ -144,22 +142,20 @@ u_long program,version; client = clntudp_create(&rsrv_sin, program, version, tv, &rsrv_sock); if (client == NULL) { fprintf(stderr,"clntudp_create: no contact with localhost.\n"); - exit(1); + exit(1); } - return(client); - } int yp_match_host(client, indomain, inmap, inkey, inkeylen, outval, outvallen) -CLIENT *client; -char *indomain; -char *inmap; -const char *inkey; -int inkeylen; -char **outval; -int *outvallen; + CLIENT *client; + char *indomain; + char *inmap; + const char *inkey; + int inkeylen; + char **outval; + int *outvallen; { struct ypresp_val yprv; struct timeval tv; @@ -180,11 +176,10 @@ int *outvallen; memset(&yprv, 0, sizeof yprv); r = clnt_call(client, YPPROC_MATCH, - xdr_ypreq_key, &yprk, xdr_ypresp_val, &yprv, tv); - if(r != RPC_SUCCESS) { + xdr_ypreq_key, &yprk, xdr_ypresp_val, &yprv, tv); + if (r != RPC_SUCCESS) clnt_perror(client, "yp_match_host: clnt_call"); - } - if( !(r=ypprot_err(yprv.stat)) ) { + if ( !(r=ypprot_err(yprv.stat)) ) { *outvallen = yprv.val.valdat_len; *outval = (char *)malloc(*outvallen+1); memcpy(*outval, yprv.val.valdat_val, *outvallen); @@ -196,13 +191,13 @@ int *outvallen; int yp_first_host(client, indomain, inmap, outkey, outkeylen, outval, outvallen) -CLIENT *client; -char *indomain; -char *inmap; -char **outkey; -int *outkeylen; -char **outval; -int *outvallen; + CLIENT *client; + char *indomain; + char *inmap; + char **outkey; + int *outkeylen; + char **outval; + int *outvallen; { struct ypresp_key_val yprkv; struct ypreq_nokey yprnk; @@ -220,11 +215,10 @@ int *outvallen; memset(&yprkv, 0, sizeof yprkv); r = clnt_call(client, YPPROC_FIRST, - xdr_ypreq_nokey, &yprnk, xdr_ypresp_key_val, &yprkv, tv); - if(r != RPC_SUCCESS) { + xdr_ypreq_nokey, &yprnk, xdr_ypresp_key_val, &yprkv, tv); + if (r != RPC_SUCCESS) clnt_perror(client, "yp_first_host: clnt_call"); - } - if( !(r=ypprot_err(yprkv.stat)) ) { + if ( !(r=ypprot_err(yprkv.stat)) ) { *outkeylen = yprkv.key.keydat_len; *outkey = (char *)malloc(*outkeylen+1); memcpy(*outkey, yprkv.key.keydat_val, *outkeylen); @@ -239,16 +233,17 @@ int *outvallen; } int -yp_next_host(client, indomain, inmap, inkey, inkeylen, outkey, outkeylen, outval, outvallen) -CLIENT *client; -char *indomain; -char *inmap; -char *inkey; -int inkeylen; -char **outkey; -int *outkeylen; -char **outval; -int *outvallen; +yp_next_host(client, indomain, inmap, inkey, inkeylen, outkey, + outkeylen, outval, outvallen) + CLIENT *client; + char *indomain; + char *inmap; + char *inkey; + int inkeylen; + char **outkey; + int *outkeylen; + char **outval; + int *outvallen; { struct ypresp_key_val yprkv; struct ypreq_key yprk; @@ -268,11 +263,10 @@ int *outvallen; memset(&yprkv, 0, sizeof yprkv); r = clnt_call(client, YPPROC_NEXT, - xdr_ypreq_key, &yprk, xdr_ypresp_key_val, &yprkv, tv); - if(r != RPC_SUCCESS) { + xdr_ypreq_key, &yprk, xdr_ypresp_key_val, &yprkv, tv); + if (r != RPC_SUCCESS) clnt_perror(client, "yp_next_host: clnt_call"); - } - if( !(r=ypprot_err(yprkv.stat)) ) { + if ( !(r=ypprot_err(yprkv.stat)) ) { *outkeylen = yprkv.key.keydat_len; *outkey = (char *)malloc(*outkeylen+1); memcpy(*outkey, yprkv.key.keydat_val, *outkeylen); @@ -288,10 +282,10 @@ int *outvallen; int yp_all_host(client, indomain, inmap, incallback) -CLIENT *client; -char *indomain; -char *inmap; -struct ypall_callback *incallback; + CLIENT *client; + char *indomain; + char *inmap; + struct ypall_callback *incallback; { struct ypreq_nokey yprnk; struct timeval tv; @@ -306,19 +300,18 @@ struct ypall_callback *incallback; ypresp_data = (void *)incallback->data; (void) clnt_call(client, YPPROC_ALL, - xdr_ypreq_nokey, &yprnk, xdr_ypresp_all_seq, &status, tv); - - if(status != YP_FALSE) + xdr_ypreq_nokey, &yprnk, xdr_ypresp_all_seq, &status, tv); + if (status != YP_FALSE) return ypprot_err(status); return 0; } int yp_order_host(client, indomain, inmap, outorder) -CLIENT *client; -char *indomain; -char *inmap; -u_int32_t *outorder; + CLIENT *client; + char *indomain; + char *inmap; + u_int32_t *outorder; { struct ypresp_order ypro; struct ypreq_nokey yprnk; @@ -334,11 +327,9 @@ u_int32_t *outorder; memset(&ypro, 0, sizeof ypro); r = clnt_call(client, YPPROC_ORDER, - xdr_ypreq_nokey, &yprnk, xdr_ypresp_order, &ypro, tv); - if(r != RPC_SUCCESS) { + xdr_ypreq_nokey, &yprnk, xdr_ypresp_order, &ypro, tv); + if (r != RPC_SUCCESS) clnt_perror(client, "yp_order_host: clnt_call"); - } - *outorder = ypro.ordernum; xdr_free(xdr_ypresp_order, (char *)&ypro); return ypprot_err(ypro.stat); @@ -346,10 +337,10 @@ u_int32_t *outorder; int yp_master_host(client, indomain, inmap, outname) -CLIENT *client; -char *indomain; -char *inmap; -char **outname; + CLIENT *client; + char *indomain; + char *inmap; + char **outname; { struct ypresp_master yprm; struct ypreq_nokey yprnk; @@ -358,29 +349,26 @@ char **outname; tv.tv_sec = _yplib_host_timeout; tv.tv_usec = 0; - yprnk.domain = indomain; yprnk.map = inmap; memset(&yprm, 0, sizeof yprm); r = clnt_call(client, YPPROC_MASTER, - xdr_ypreq_nokey, &yprnk, xdr_ypresp_master, &yprm, tv); - if(r != RPC_SUCCESS) { + xdr_ypreq_nokey, &yprnk, xdr_ypresp_master, &yprm, tv); + if (r != RPC_SUCCESS) clnt_perror(client, "yp_master: clnt_call"); - } - if( !(r=ypprot_err(yprm.stat)) ) { - *outname = (char *)strdup(yprm.peer); - } + if (!(r=ypprot_err(yprm.stat)) ) + *outname = (char *)strdup(yprm.peer); xdr_free(xdr_ypresp_master, (char *)&yprm); return r; } int yp_maplist_host(client, indomain, outmaplist) -CLIENT *client; -char *indomain; -struct ypmaplist **outmaplist; + CLIENT *client; + char *indomain; + struct ypmaplist **outmaplist; { struct ypresp_maplist ypml; struct timeval tv; @@ -392,10 +380,9 @@ struct ypmaplist **outmaplist; memset(&ypml, 0, sizeof ypml); r = clnt_call(client, YPPROC_MAPLIST, - xdr_domainname, &indomain, xdr_ypresp_maplist, &ypml, tv); - if (r != RPC_SUCCESS) { + xdr_domainname, &indomain, xdr_ypresp_maplist, &ypml, tv); + if (r != RPC_SUCCESS) clnt_perror(client, "yp_maplist: clnt_call"); - } *outmaplist = ypml.maps; /* NO: xdr_free(xdr_ypresp_maplist, &ypml);*/ return ypprot_err(ypml.stat); diff --git a/usr.sbin/ypserv/ypserv/acl.c b/usr.sbin/ypserv/ypserv/acl.c index b455c32e6f8..4ab5ab3896f 100644 --- a/usr.sbin/ypserv/ypserv/acl.c +++ b/usr.sbin/ypserv/ypserv/acl.c @@ -1,4 +1,4 @@ -/* $OpenBSD: acl.c,v 1.6 1998/02/24 04:29:07 deraadt Exp $ */ +/* $OpenBSD: acl.c,v 1.7 2001/11/19 09:03:06 deraadt Exp $ */ /* * Copyright (c) 1994 Mats O Jansson <moj@stacken.kth.se> @@ -32,7 +32,7 @@ */ #ifndef LINT -static char rcsid[] = "$OpenBSD: acl.c,v 1.6 1998/02/24 04:29:07 deraadt Exp $"; +static char rcsid[] = "$OpenBSD: acl.c,v 1.7 2001/11/19 09:03:06 deraadt Exp $"; #endif #include <sys/types.h> @@ -51,559 +51,527 @@ static char rcsid[] = "$OpenBSD: acl.c,v 1.6 1998/02/24 04:29:07 deraadt Exp $"; static struct aclent *acl_root = NULL; -static int acl_read_line(fp, buf, size) -FILE *fp; -char *buf; -int size; +static int +acl_read_line(fp, buf, size) + FILE *fp; + char *buf; + int size; { - int len = 0; - char *c,*p,l; - - /* Read a line, and remove any comment, trim space */ - - do { - while (fgets(buf, size, fp)) { - c = buf; - while(*c != '\0') { - if ((*c == '#') || (*c == '\n')) { - *c = '\0'; - } else { - c++; - } - } - - c = p = buf; l = ' '; - while(*c != '\0') { - if ((isspace(l) != 0) && (isspace(*c) != 0)) { - c++; - } else { - l = *c++; *p = l; p++; - } - } - *p = '\0'; - - if (p != buf) { - --p; - if (isspace(*p) != 0) { - *p = '\0'; - } - } - - len = strlen(buf); - return len + 1; - } - } while (size > 0 && !feof(fp)); - - return len; + int len = 0; + char *c, *p, l; + + /* Read a line, and remove any comment, trim space */ + + do { + while (fgets(buf, size, fp)) { + c = buf; + while(*c != '\0') { + if (*c == '#' || *c == '\n') { + *c = '\0'; + } else { + c++; + } + } + + c = p = buf; l = ' '; + while(*c != '\0') { + if (isspace(l) && isspace(*c)) { + c++; + } else { + l = *c++; *p = l; p++; + } + } + *p = '\0'; + + if (p != buf) { + --p; + if (isspace(*p) != 0) { + *p = '\0'; + } + } + + len = strlen(buf); + return len + 1; + } + } while (size > 0 && !feof(fp)); + return len; } int acl_check_host(addr) struct in_addr *addr; { - struct aclent *p; - - p = acl_root; - while (p != NULL) { - if ((addr->s_addr & p->s_mask) == p->s_addr) { - return(p->allow); - } - p = p->next; - } - return(TRUE); + struct aclent *p; + + p = acl_root; + while (p != NULL) { + if ((addr->s_addr & p->s_mask) == p->s_addr) + return(p->allow); + p = p->next; + } + return(TRUE); } void -acl_add_net(allow,addr,mask) -int allow; -struct in_addr *addr,*mask; +acl_add_net(allow, addr,mask) + int allow; + struct in_addr *addr, *mask; { - - struct aclent *acl,*p; - - acl = (struct aclent *) malloc((unsigned) sizeof(struct aclent)); - - acl->next = NULL; - acl->allow = allow; - acl->s_addr = addr->s_addr; - acl->s_mask = mask->s_addr; - - if (acl_root == NULL) { - acl_root = acl; - } else { - p = acl_root; - while (p->next != NULL) - p = p->next; - p->next = acl; - } - + struct aclent *acl, *p; + + acl = (struct aclent *) malloc(sizeof(struct aclent)); + acl->next = NULL; + acl->allow = allow; + acl->s_addr = addr->s_addr; + acl->s_mask = mask->s_addr; + + if (acl_root == NULL) { + acl_root = acl; + } else { + p = acl_root; + while (p->next != NULL) + p = p->next; + p->next = acl; + } } void -acl_add_host(allow,addr) -int allow; -struct in_addr *addr; +acl_add_host(allow, addr) + int allow; + struct in_addr *addr; { - struct in_addr mask; + struct in_addr mask; mask.s_addr = htonl(0xffffffff); - - acl_add_net(allow,addr,&mask); + acl_add_net(allow, addr, &mask); } int acl_init(file) -char *file; + char *file; { - char data_line[1024]; - int line_no = 0; - int len,i; - int allow = TRUE; - int error_cnt = 0; - char *p,*k; - int state; - struct in_addr addr,mask,*host_addr; - struct hostent *host; - struct netent *net; - FILE *data_file = NULL; - - if (file != NULL) { - data_file = fopen(file,"r"); - }; - - while ((data_file != NULL) && - (acl_read_line(data_file,data_line,sizeof(data_line)))) { - - line_no++; - - len = strlen(data_line); - if (len == 0) { - continue; - } - - p = (char *) &data_line; - - /* State 1: Initial State */ - - state = ACLS_INIT; - addr.s_addr = mask.s_addr = 0; - - k = p; i = 0; /* save start of verb */ - while ((*p != '\0') && - (!isspace(*p = tolower(*p)))) { - p++; i++; - }; - - if (*p != '\0') { - *p++ = '\0'; - } - - if (strcmp(k,"allow") == 0) { - allow = TRUE; - state = ACLS_ALLOW; - } - - if (strcmp(k,"deny") == 0) { - allow = FALSE; - state = ACLS_DENY; - } - - if (state == ACLS_INIT) { - state = ACLE_UVERB; - } - - /* State 2: allow row */ - /* State 3: deny row */ - - if ((*p != '\0') && - ((state == ACLS_ALLOW) || (state == ACLS_DENY))) { - - k = p; i = 0; /* save start of verb */ - while ((*p != '\0') && - (!isspace(*p = tolower(*p)))) { - p++; i++; - }; - - if (*p != '\0') { - *p++ = '\0'; - } - - if (strcmp(k,"all") == 0) { - state = state + ACLD_ALL; - } - - if (strcmp(k,"host") == 0) { - state = state + ACLD_HOST; - } - - if (strcmp(k,"net") == 0) { - state = state + ACLD_NET; - } - - if ((state == ACLS_ALLOW) || (state == ACLS_DENY)) { - state = ACLE_U2VERB; - } - - } - - if ((state == ACLS_ALLOW) || (state == ACLS_DENY)) { - state = ACLE_UEOL; - } - - /* State 4 & 5: all state, remove any comment */ - - if ((*p == '\0') && - ((state == ACLS_ALLOW_ALL) || (state == ACLS_DENY_ALL))) { - acl_add_net(allow,&addr,&mask); - state = ACLE_OK; - } - - /* State 6 & 7: host line */ - /* State 8 & 9: net line */ - - if ((*p != '\0') && - (state >= ACLS_ALLOW_HOST) && (state <= ACLS_DENY_NET)) { - - k = p; i = 0; /* save start of verb */ - while ((*p != '\0') && - (!isspace(*p = tolower(*p)))) { - p++; i++; - }; - - if (*p != '\0') { - *p++ = '\0'; - } - - if ((state == ACLS_ALLOW_HOST) || (state == ACLS_DENY_HOST)) { - if ((*k >= '0') && (*k <= '9')) { - (void)inet_aton(k,&addr); - acl_add_host(allow,&addr); - state = state + ACLD_HOST_DONE; - } else { - host = gethostbyname(k); - if (host == NULL) { - state = ACLE_NOHOST; - } else { - if (host->h_addrtype == AF_INET) { - while ((host_addr = (struct in_addr *) *host->h_addr_list++) - != NULL) - acl_add_host(allow,host_addr); - } - state = state + ACLD_HOST_DONE; - } - } - } - - if ((state == ACLS_ALLOW_NET) || (state == ACLS_DENY_NET)) { - if ((*k >= '0') && (*k <= '9')) { - (void)inet_aton(k,&addr); - state = state + ACLD_NET_DONE; - } else { - net = getnetbyname(k); - if (net == NULL) { - state = ACLE_NONET; - } else { - addr.s_addr = ntohl(net->n_net); - state = state + ACLD_NET_DONE; - } + char data_line[1024]; + int line_no = 0; + int len, i; + int allow = TRUE; + int error_cnt = 0; + char *p, *k; + int state; + struct in_addr addr, mask, *host_addr; + struct hostent *host; + struct netent *net; + FILE *data_file = NULL; + + if (file != NULL) + data_file = fopen(file, "r"); + + while (data_file != NULL && + acl_read_line(data_file, data_line, sizeof(data_line))) { + + line_no++; + len = strlen(data_line); + if (len == 0) + continue; + p = (char *) &data_line; + + /* State 1: Initial State */ + + state = ACLS_INIT; + addr.s_addr = mask.s_addr = 0; + + k = p; /* save start of verb */ + i = 0; + while (*p != '\0' && !isspace(*p = tolower(*p))) { + p++; + i++; + } + + if (*p != '\0') + *p++ = '\0'; + + if (strcmp(k, "allow") == 0) { + allow = TRUE; + state = ACLS_ALLOW; + } + + if (strcmp(k, "deny") == 0) { + allow = FALSE; + state = ACLS_DENY; + } + + if (state == ACLS_INIT) + state = ACLE_UVERB; + + /* State 2: allow row */ + /* State 3: deny row */ + + if (*p != '\0' && + (state == ACLS_ALLOW || state == ACLS_DENY)) { + k = p; /* save start of verb */ + i = 0; + while (*p != '\0' && !isspace(*p = tolower(*p))) { + p++; + i++; + } + + if (*p != '\0') + *p++ = '\0'; + + if (strcmp(k, "all") == 0) + state = state + ACLD_ALL; + + if (strcmp(k, "host") == 0) + state = state + ACLD_HOST; + + if (strcmp(k, "net") == 0) + state = state + ACLD_NET; + + if (state == ACLS_ALLOW || state == ACLS_DENY) + state = ACLE_U2VERB; + } + + if (state == ACLS_ALLOW || state == ACLS_DENY) + state = ACLE_UEOL; + + /* State 4 & 5: all state, remove any comment */ + + if (*p == '\0' && + (state == ACLS_ALLOW_ALL || state == ACLS_DENY_ALL)) { + acl_add_net(allow, &addr, &mask); + state = ACLE_OK; + } + + /* State 6 & 7: host line */ + /* State 8 & 9: net line */ + + if (*p != '\0' && + state >= ACLS_ALLOW_HOST && state <= ACLS_DENY_NET) { + + k = p; /* save start of verb */ + i = 0; + while (*p != '\0' && !isspace(*p = tolower(*p))) { + p++; + i++; + } + + if (*p != '\0') + *p++ = '\0'; + + if (state == ACLS_ALLOW_HOST || state == ACLS_DENY_HOST) { + if (*k >= '0' && *k <= '9') { + (void)inet_aton(k, &addr); + acl_add_host(allow, &addr); + state = state + ACLD_HOST_DONE; + } else { + host = gethostbyname(k); + if (host == NULL) { + state = ACLE_NOHOST; + } else { + if (host->h_addrtype == AF_INET) { + while ((host_addr = (struct in_addr *) *host->h_addr_list++) != NULL) + acl_add_host(allow, host_addr); + } + state = state + ACLD_HOST_DONE; + } + } + } + + if (state == ACLS_ALLOW_NET || state == ACLS_DENY_NET) { + if (*k >= '0' && *k <= '9') { + (void)inet_aton(k, &addr); + state = state + ACLD_NET_DONE; + } else { + net = getnetbyname(k); + if (net == NULL) { + state = ACLE_NONET; + } else { + addr.s_addr = ntohl(net->n_net); + state = state + ACLD_NET_DONE; + } + } + } + + } + + if (state >= ACLS_ALLOW_HOST && state <= ACLS_DENY_NET) + state = ACLE_UEOL; + + + /* State 10 & 11: allow/deny host line */ + if (*p == '\0' && + (state == ACLS_ALLOW_HOST_DONE || state == ACLS_DENY_HOST_DONE)) + state = ACLE_OK; + + /* State 12 & 13: allow/deny net line */ + if (*p == '\0' && + (state == ACLS_ALLOW_NET_DONE || state == ACLS_DENY_NET_DONE)) { + mask.s_addr = htonl(0xffffff00); + if (ntohl(addr.s_addr) < 0xc0000000) + mask.s_addr = htonl(0xffff0000); + if (ntohl(addr.s_addr) < 0x80000000) + mask.s_addr = htonl(0xff000000); + acl_add_net(allow, &addr, &mask); + state = ACLE_OK; + } + + if (*p != '\0' && + (state == ACLS_ALLOW_NET_DONE || state == ACLS_DENY_NET_DONE)) { + + k = p; /* save start of verb */ + i = 0; + while (*p != '\0' && !isspace(*p = tolower(*p))) { + p++; + i++; + } + + if (*p != '\0') + *p++ = '\0'; + + if (strcmp(k, "netmask") == 0) + state = state + ACLD_NET_MASK; + + if (state == ACLS_ALLOW_NET_DONE || + state == ACLS_DENY_NET_DONE) + state = ACLE_NONETMASK; + } + + /* State 14 & 15: allow/deny net netmask line */ + if (*p != '\0' && + (state == ACLS_ALLOW_NET_MASK || state == ACLS_DENY_NET_MASK)) { + + k = p; /* save start of verb */ + i = 0; + while (*p != '\0' && !isspace(*p = tolower(*p))) { + p++; + i++; + } + + if (*p != '\0') + *p++ = '\0'; + + if (state == ACLS_ALLOW_NET_MASK || + state == ACLS_DENY_NET_MASK) { + if (*k >= '0' && *k <= '9') { + (void)inet_aton(k, &mask); + state = state + ACLD_NET_EOL; + } else { + net = getnetbyname(k); + if (net == NULL) { + state = ACLE_NONET; + } else { + mask.s_addr = ntohl(net->n_net); + state = state + ACLD_NET_EOL; + } + } + } + + } + + if (state == ACLS_ALLOW_NET_MASK || state == ACLS_DENY_NET_MASK) + state = ACLE_UEOL; + + /* State 16 & 17: allow/deny host line */ + if (*p == '\0' && + (state == ACLS_ALLOW_NET_EOL || state == ACLS_DENY_NET_EOL)) { + acl_add_net(allow, &addr, &mask); + state = ACLE_OK; + } + + switch (state) { + case ACLE_NONETMASK: + fprintf(stderr, + "acl: excpected \"netmask\" missing at line %d\n", + line_no); + break; + case ACLE_NONET: + error_cnt++; + fprintf(stderr, "acl: unknown network at line %d\n", + line_no); + break; + case ACLE_NOHOST: + error_cnt++; + fprintf(stderr, "acl: unknown host at line %d\n", + line_no); + break; + case ACLE_UVERB: + error_cnt++; + fprintf(stderr, "acl: unknown verb at line %d\n", + line_no); + break; + case ACLE_U2VERB: + error_cnt++; + fprintf(stderr, + "acl: unknown secondary verb at line %d\n", + line_no); + break; + case ACLE_UEOL: + error_cnt++; + fprintf(stderr, + "acl: unexpected end of line at line %d\n", + line_no); + break; + case ACLE_OK: + break; + default: + error_cnt++; + fprintf(stderr, "acl: unexpected state %d %s\n",state,k); + } + } - } - - } - - if ((state >= ACLS_ALLOW_HOST) && (state <= ACLS_DENY_NET)) { - state = ACLE_UEOL; - } - - /* State 10 & 11: allow/deny host line */ - - if ((*p == '\0') && - ((state == ACLS_ALLOW_HOST_DONE) || (state == ACLS_DENY_HOST_DONE))) { - state = ACLE_OK; - } - - /* State 12 & 13: allow/deny net line */ - - if ((*p == '\0') && - ((state == ACLS_ALLOW_NET_DONE) || (state == ACLS_DENY_NET_DONE))) { - mask.s_addr = htonl(0xffffff00); - if (ntohl(addr.s_addr) < 0xc0000000) { - mask.s_addr = htonl(0xffff0000); - } - if (ntohl(addr.s_addr) < 0x80000000) { - mask.s_addr = htonl(0xff000000); - } - acl_add_net(allow,&addr,&mask); - state = ACLE_OK; - } - - if ((*p != '\0') && - ((state == ACLS_ALLOW_NET_DONE) || (state == ACLS_DENY_NET_DONE))) { - - k = p; i = 0; /* save start of verb */ - while ((*p != '\0') && - (!isspace(*p = tolower(*p)))) { - p++; i++; - }; - - if (*p != '\0') { - *p++ = '\0'; - } - - if (strcmp(k,"netmask") == 0) { - state = state + ACLD_NET_MASK; - } - - if ((state == ACLS_ALLOW_NET_DONE) || (state == ACLS_DENY_NET_DONE)) { - state = ACLE_NONETMASK; - } - - } - - /* State 14 & 15: allow/deny net netmask line */ - - if ((*p != '\0') && - ((state == ACLS_ALLOW_NET_MASK) || (state == ACLS_DENY_NET_MASK))) { - - k = p; i = 0; /* save start of verb */ - while ((*p != '\0') && - (!isspace(*p = tolower(*p)))) { - p++; i++; - }; - - if (*p != '\0') { - *p++ = '\0'; - } - - if ((state == ACLS_ALLOW_NET_MASK) || (state == ACLS_DENY_NET_MASK)) { - if ((*k >= '0') && (*k <= '9')) { - (void)inet_aton(k,&mask); - state = state + ACLD_NET_EOL; - } else { - net = getnetbyname(k); - if (net == NULL) { - state = ACLE_NONET; - } else { - mask.s_addr = ntohl(net->n_net); - state = state + ACLD_NET_EOL; - } + + if (data_file != NULL) { + (void)fflush(stderr); + (void)fclose(data_file); } - } - - } - - if ((state == ACLS_ALLOW_NET_MASK) || (state == ACLS_DENY_NET_MASK)) { - state = ACLE_UEOL; - } - - /* State 16 & 17: allow/deny host line */ - - if ((*p == '\0') && - ((state == ACLS_ALLOW_NET_EOL) || (state == ACLS_DENY_NET_EOL))) { - acl_add_net(allow,&addr,&mask); - state = ACLE_OK; - } - - switch (state) { - case ACLE_NONETMASK: - fprintf(stderr,"acl: excpected \"netmask\" missing at line %d\n",line_no); - break; - case ACLE_NONET: - error_cnt++; - fprintf(stderr,"acl: unknown network at line %d\n",line_no); - break; - case ACLE_NOHOST: - error_cnt++; - fprintf(stderr,"acl: unknown host at line %d\n",line_no); - break; - case ACLE_UVERB: - error_cnt++; - fprintf(stderr,"acl: unknown verb at line %d\n",line_no); - break; - case ACLE_U2VERB: - error_cnt++; - fprintf(stderr,"acl: unknown secondary verb at line %d\n",line_no); - break; - case ACLE_UEOL: - error_cnt++; - fprintf(stderr,"acl: unexpected end of line at line %d\n",line_no); - break; - case ACLE_OK: - break; - default: - error_cnt++; - fprintf(stderr,"acl: unexpected state %d %s\n",state,k); - } - - } - - if (data_file != NULL) { - (void)fflush(stderr); - (void)fclose(data_file); - } - - /* Always add a last allow all if file don't exists or */ - /* the file doesn't cover all cases. */ - - addr.s_addr = mask.s_addr = 0; - allow = TRUE; - acl_add_net(allow,&addr,&mask); - - return(error_cnt); + /* Always add a last allow all if file don't exists or */ + /* the file doesn't cover all cases. */ + addr.s_addr = mask.s_addr = 0; + allow = TRUE; + acl_add_net(allow, &addr, &mask); + return(error_cnt); } int acl_securenet(file) char *file; { - char data_line[1024]; - int line_no = 0; - int len,i; - int allow = TRUE; - int error_cnt = 0; - char *p,*k; - int state; - struct in_addr addr,mask; - struct netent *net; - FILE *data_file = NULL; - - if (file != NULL) { - data_file = fopen(file,"r"); - }; - - /* Always add a localhost allow first, to be compatable with sun */ - - addr.s_addr = htonl(0x7f000001); - mask.s_addr = htonl(0xffffffff); - allow = TRUE; - acl_add_net(allow,&addr,&mask); - - while ((data_file != NULL) && - (acl_read_line(data_file,data_line,sizeof(data_line)))) { - - line_no++; - - len = strlen(data_line); - if (len == 0) { - continue; - } - - p = (char *) &data_line; - - /* State 1: Initial State */ - - state = ACLS_INIT; - addr.s_addr = mask.s_addr = 0; - - k = p; i = 0; /* save start of verb */ - while ((*p != '\0') && - (!isspace(*p = tolower(*p)))) { - p++; i++; - }; - - if (*p != '\0') { - *p++ = '\0'; - state = ACLS_ALLOW_NET_MASK; - } - - if (state == ACLS_INIT) { - state = ACLE_UEOL; - } - - if (state == ACLS_ALLOW_NET_MASK) { - - if ((*k >= '0') && (*k <= '9')) { - (void)inet_aton(k,&mask); - state = ACLS_ALLOW_NET; - } else { - net = getnetbyname(k); - if (net == NULL) { - state = ACLE_NONET; - } else { - mask.s_addr = ntohl(net->n_net); - state = ACLS_ALLOW_NET; + char data_line[1024]; + int line_no = 0; + int len, i; + int allow = TRUE; + int error_cnt = 0; + char *p, *k; + int state; + struct in_addr addr, mask; + struct netent *net; + FILE *data_file = NULL; + + if (file != NULL) + data_file = fopen(file, "r"); + + /* Always add a localhost allow first, to be compatable with sun */ + addr.s_addr = htonl(0x7f000001); + mask.s_addr = htonl(0xffffffff); + allow = TRUE; + acl_add_net(allow, &addr, &mask); + + while (data_file != NULL && + acl_read_line(data_file, data_line, sizeof(data_line))) { + line_no++; + len = strlen(data_line); + if (len == 0) + continue; + p = (char *) &data_line; + + /* State 1: Initial State */ + state = ACLS_INIT; + addr.s_addr = mask.s_addr = 0; + + k = p; /* save start of verb */ + i = 0; + while (*p != '\0' && !isspace(*p = tolower(*p))) { + p++; + i++; + } + + if (*p != '\0') { + *p++ = '\0'; + state = ACLS_ALLOW_NET_MASK; + } + + if (state == ACLS_INIT) + state = ACLE_UEOL; + + if (state == ACLS_ALLOW_NET_MASK) { + if (*k >= '0' && *k <= '9') { + (void)inet_aton(k, &mask); + state = ACLS_ALLOW_NET; + } else { + net = getnetbyname(k); + if (net == NULL) { + state = ACLE_NONET; + } else { + mask.s_addr = ntohl(net->n_net); + state = ACLS_ALLOW_NET; + } + } + + k = p; /* save start of verb */ + i = 0; + while (*p != '\0' && !isspace(*p = tolower(*p))) { + p++; + i++; + } + + if (*p != '\0') + *p++ = '\0'; + } + + if (state == ACLS_ALLOW_NET_MASK) + state = ACLE_UEOL; + + if (state == ACLS_ALLOW_NET) { + if (*k >= '0' && *k <= '9') { + (void)inet_aton(k, &addr); + state = ACLS_ALLOW_NET_EOL; + } else { + net = getnetbyname(k); + if (net == NULL) { + state = ACLE_NONET; + } else { + addr.s_addr = ntohl(net->n_net); + state = ACLS_ALLOW_NET_EOL; + } + } + } + + if (state == ACLS_ALLOW_NET) + state = ACLE_UEOL; + + if (*p == '\0' && state == ACLS_ALLOW_NET_EOL) { + acl_add_net(allow, &addr, &mask); + state = ACLE_OK; + } + + switch (state) { + case ACLE_NONET: + error_cnt++; + fprintf(stderr, + "securenet: unknown network at line %d\n", + line_no); + break; + case ACLE_UEOL: + error_cnt++; + fprintf(stderr, + "securenet: unexpected end of line at line %d\n", + line_no); + break; + case ACLE_OK: + break; + default: + error_cnt++; + fprintf(stderr, "securenet: unexpected state %d %s\n", + state, k); + } } - } - - k = p; i = 0; /* save start of verb */ - while ((*p != '\0') && - (!isspace(*p = tolower(*p)))) { - p++; i++; - }; - - if (*p != '\0') { - *p++ = '\0'; - } - } - - if ((state == ACLS_ALLOW_NET_MASK)) { - state = ACLE_UEOL; - } - - if (state == ACLS_ALLOW_NET) { - - if ((*k >= '0') && (*k <= '9')) { - (void)inet_aton(k,&addr); - state = ACLS_ALLOW_NET_EOL; - } else { - net = getnetbyname(k); - if (net == NULL) { - state = ACLE_NONET; - } else { - addr.s_addr = ntohl(net->n_net); - state = ACLS_ALLOW_NET_EOL; + + if (data_file != NULL) { + (void)fflush(stderr); + (void)fclose(data_file); + + /* Always add a last deny all if file exists */ + addr.s_addr = mask.s_addr = 0; + allow = FALSE; + acl_add_net(allow, &addr, &mask); } - } - } - - if ((state == ACLS_ALLOW_NET)) { - state = ACLE_UEOL; - } - - if ((*p == '\0') && (state == ACLS_ALLOW_NET_EOL)) { - acl_add_net(allow,&addr,&mask); - state = ACLE_OK; - } - - switch (state) { - case ACLE_NONET: - error_cnt++; - fprintf(stderr,"securenet: unknown network at line %d\n",line_no); - break; - case ACLE_UEOL: - error_cnt++; - fprintf(stderr,"securenet: unexpected end of line at line %d\n",line_no); - break; - case ACLE_OK: - break; - default: - error_cnt++; - fprintf(stderr,"securenet: unexpected state %d %s\n",state,k); - } - - } - - if (data_file != NULL) { - (void)fflush(stderr); - (void)fclose(data_file); - - /* Always add a last deny all if file exists */ - - addr.s_addr = mask.s_addr = 0; - allow = FALSE; - acl_add_net(allow,&addr,&mask); - - } - - /* Always add a last allow all if file don't exists */ - - addr.s_addr = mask.s_addr = 0; - allow = TRUE; - acl_add_net(allow,&addr,&mask); - - return(error_cnt); + /* Always add a last allow all if file don't exists */ + + addr.s_addr = mask.s_addr = 0; + allow = TRUE; + acl_add_net(allow, &addr, &mask); + return(error_cnt); } void diff --git a/usr.sbin/ypserv/ypserv/ypserv.c b/usr.sbin/ypserv/ypserv/ypserv.c index f0ad24958ad..a081acd0471 100644 --- a/usr.sbin/ypserv/ypserv/ypserv.c +++ b/usr.sbin/ypserv/ypserv/ypserv.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ypserv.c,v 1.15 2001/01/11 23:37:01 deraadt Exp $ */ +/* $OpenBSD: ypserv.c,v 1.16 2001/11/19 09:03:06 deraadt Exp $ */ /* * Copyright (c) 1994 Mats O Jansson <moj@stacken.kth.se> @@ -32,25 +32,26 @@ */ #ifndef LINT -static char rcsid[] = "$OpenBSD: ypserv.c,v 1.15 2001/01/11 23:37:01 deraadt Exp $"; +static char rcsid[] = "$OpenBSD: ypserv.c,v 1.16 2001/11/19 09:03:06 deraadt Exp $"; #endif +#include <sys/types.h> +#include <sys/socket.h> +#include <sys/ioctl.h> +#include <sys/ttycom.h>/* TIOCNOTTY */ +#include <netinet/in.h> #include "yp.h" #include "ypv1.h" #include <stdio.h> #include <stdlib.h>/* getenv, exit */ -#include <rpc/pmap_clnt.h> /* for pmap_unset */ #include <string.h> /* strcmp */ #include <netdb.h> #include <signal.h> #include <errno.h> -#include <sys/ttycom.h>/* TIOCNOTTY */ -#ifdef __cplusplus -#include <sysent.h> /* getdtablesize, open */ -#endif /* __cplusplus */ +#include <unistd.h> +#include <fcntl.h> +#include <rpc/pmap_clnt.h> /* for pmap_unset */ #include <memory.h> -#include <sys/socket.h> -#include <netinet/in.h> #ifdef SYSLOG #include <syslog.h> #else @@ -79,8 +80,14 @@ int usedns = FALSE; char *progname = "ypserv"; char *aclfile = NULL; -void sig_child(); -void sig_hup(); +void sig_child(); +void sig_hup(); + +extern int __svc_fdsetsize; +extern fd_set *__svc_fdset; +extern void svc_getreqset2 __P((fd_set *, int)); + +volatile sig_atomic_t wantsighup; static void _msgout(char* msg) @@ -214,7 +221,6 @@ ypprog_1(struct svc_req *rqstp, register SVCXPRT *transp) exit(1); } _rpcsvcdirty = 0; - return; } static void @@ -330,13 +336,68 @@ ypprog_2(struct svc_req *rqstp, register SVCXPRT *transp) exit(1); } _rpcsvcdirty = 0; - return; +} + +void +hup() +{ + /* Handle the log. */ + ypcloselog(); + ypopenlog(); + + acl_reset(); + if (aclfile != NULL) { + yplog("sig_hup: reread %s", aclfile); + (void)acl_init(aclfile); + } else { + yplog("sig_hup: reread %s", YP_SECURENET_FILE); + (void)acl_securenet(YP_SECURENET_FILE); + } +} + +void +my_svc_run() +{ + fd_set *fds; + + for (;;) { + if (wantsighup) { + hup(); + wantsighup = 0; + } + if (__svc_fdset) { + int bytes = howmany(__svc_fdsetsize, NFDBITS) * + sizeof(fd_mask); + fds = (fd_set *)malloc(bytes); /* XXX */ + memcpy(fds, __svc_fdset, bytes); + } else + fds = NULL; + switch (select(svc_maxfd+1, fds, 0, 0, (struct timeval *)0)) { + case -1: + if (errno == EINTR) { + if (fds) + free(fds); + continue; + } + perror("svc_run: - select failed"); + if (fds) + free(fds); + return; + case 0: + if (fds) + free(fds); + continue; + default: + svc_getreqset2(fds, svc_maxfd+1); + free(fds); + } + } } int -main (argc,argv) -int argc; -char *argv[]; +main(argc, argv) + int argc; + char *argv[]; { register SVCXPRT *transp; int sock; @@ -369,12 +430,12 @@ char *argv[]; } if (usage) { - (void)fprintf(stderr,"usage: %s [-a aclfile] [-d] [-x]\n",progname); + (void)fprintf(stderr, "usage: %s [-a aclfile] [-d] [-x]\n",progname); exit(1); } if (geteuid() != 0) { - (void)fprintf(stderr,"%s: must be root to run.\n",progname); + (void)fprintf(stderr, "%s: must be root to run.\n",progname); exit(1); } @@ -385,7 +446,7 @@ char *argv[]; } if (xflag) { exit(1); - }; + } if (getsockname(0, (struct sockaddr *)&saddr, &asize) == 0) { int ssize = sizeof (int); @@ -393,7 +454,7 @@ char *argv[]; if (saddr.sin_family != AF_INET) exit(1); if (getsockopt(0, SOL_SOCKET, SO_TYPE, - (char *)&_rpcfdtype, &ssize) == -1) + (char *)&_rpcfdtype, &ssize) == -1) exit(1); sock = 0; _rpcpmstart = 1; @@ -436,11 +497,12 @@ char *argv[]; (void)signal(SIGCHLD, sig_child); (void)signal(SIGHUP, sig_hup); - { FILE *pidfile = fopen(YPSERV_PID_PATH, "w"); - if (pidfile != NULL) { - fprintf(pidfile, "%d\n", getpid()); - fclose(pidfile); - } + { + FILE *pidfile = fopen(YPSERV_PID_PATH, "w"); + if (pidfile != NULL) { + fprintf(pidfile, "%d\n", getpid()); + fclose(pidfile); + } } if ((_rpcfdtype == 0) || (_rpcfdtype == SOCK_DGRAM)) { @@ -502,7 +564,7 @@ char *argv[]; (void) signal(SIGALRM, (SIG_PF) closedown); (void) alarm(_RPCSVC_CLOSEDOWN); } - svc_run(); + my_svc_run(); _msgout("svc_run returned"); exit(1); /* NOTREACHED */ @@ -526,20 +588,5 @@ sig_child() void sig_hup() { - int save_errno = errno; - - /* Handle the log. */ - ypcloselog(); - ypopenlog(); - - acl_reset(); - if (aclfile != NULL) { - yplog("sig_hup: reread %s",aclfile); - (void)acl_init(aclfile); - } else { - yplog("sig_hup: reread %s",YP_SECURENET_FILE); - (void)acl_securenet(YP_SECURENET_FILE); - } - - errno = save_errno; + wantsighup = 1; } diff --git a/usr.sbin/ypserv/ypserv/ypserv_db.c b/usr.sbin/ypserv/ypserv/ypserv_db.c index aeece700011..2255ae7790d 100644 --- a/usr.sbin/ypserv/ypserv/ypserv_db.c +++ b/usr.sbin/ypserv/ypserv/ypserv_db.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ypserv_db.c,v 1.15 2001/01/11 23:36:07 deraadt Exp $ */ +/* $OpenBSD: ypserv_db.c,v 1.16 2001/11/19 09:03:06 deraadt Exp $ */ /* * Copyright (c) 1994 Mats O Jansson <moj@stacken.kth.se> @@ -34,7 +34,7 @@ */ #ifndef LINT -static char rcsid[] = "$OpenBSD: ypserv_db.c,v 1.15 2001/01/11 23:36:07 deraadt Exp $"; +static char rcsid[] = "$OpenBSD: ypserv_db.c,v 1.16 2001/11/19 09:03:06 deraadt Exp $"; #endif /* @@ -43,7 +43,6 @@ static char rcsid[] = "$OpenBSD: ypserv_db.c,v 1.15 2001/01/11 23:36:07 deraadt * Jan 1996. */ - #include <rpc/rpc.h> #include <rpcsvc/yp.h> #include <rpcsvc/ypclnt.h> @@ -87,7 +86,6 @@ struct opt_domain { LIST_ENTRY(opt_domain) domsl; /* global linked list of domains */ }; - struct domainlist doms; /* global list of domains */ struct mapq maps; /* global queue of maps (LRU) */ @@ -96,7 +94,6 @@ extern int usedns; /* * ypdb_init: init the queues and lists */ - void ypdb_init() @@ -105,56 +102,53 @@ ypdb_init() CIRCLEQ_INIT(&maps); } - /* * yp_private: * Check if key is a YP private key. Return TRUE if it is and * ypprivate is FALSE. */ - int -yp_private(key,ypprivate) +yp_private(key, ypprivate) datum key; int ypprivate; { int result; if (ypprivate) - return (FALSE); + return (FALSE); if (key.dsize == 0 || key.dptr == NULL) return (FALSE); if (key.dsize == YP_LAST_LEN && - strncmp(key.dptr,YP_LAST_KEY,YP_LAST_LEN) == 0) + strncmp(key.dptr, YP_LAST_KEY, YP_LAST_LEN) == 0) return(TRUE); if (key.dsize == YP_INPUT_LEN && - strncmp(key.dptr,YP_INPUT_KEY,YP_INPUT_LEN) == 0) + strncmp(key.dptr, YP_INPUT_KEY, YP_INPUT_LEN) == 0) return(TRUE); if (key.dsize == YP_OUTPUT_LEN && - strncmp(key.dptr,YP_OUTPUT_KEY,YP_OUTPUT_LEN) == 0) + strncmp(key.dptr, YP_OUTPUT_KEY, YP_OUTPUT_LEN) == 0) return(TRUE); if (key.dsize == YP_MASTER_LEN && - strncmp(key.dptr,YP_MASTER_KEY,YP_MASTER_LEN) == 0) + strncmp(key.dptr, YP_MASTER_KEY, YP_MASTER_LEN) == 0) return(TRUE); if (key.dsize == YP_DOMAIN_LEN && - strncmp(key.dptr,YP_DOMAIN_KEY,YP_DOMAIN_LEN) == 0) + strncmp(key.dptr, YP_DOMAIN_KEY, YP_DOMAIN_LEN) == 0) return(TRUE); if (key.dsize == YP_INTERDOMAIN_LEN && - strncmp(key.dptr,YP_INTERDOMAIN_KEY,YP_INTERDOMAIN_LEN) == 0) + strncmp(key.dptr, YP_INTERDOMAIN_KEY, YP_INTERDOMAIN_LEN) == 0) return(TRUE); if (key.dsize == YP_SECURE_LEN && - strncmp(key.dptr,YP_SECURE_KEY,YP_SECURE_LEN) == 0) + strncmp(key.dptr, YP_SECURE_KEY, YP_SECURE_LEN) == 0) return(TRUE); return(FALSE); -} +} /* * Close least recent used map. This routine is called when we have * no more file descripotors free, or we want to close all maps. */ - void ypdb_close_last() { @@ -170,20 +164,17 @@ ypdb_close_last() #ifdef DEBUG yplog(" ypdb_close_last: closing map %s in domain %s [db=0x%x]", - last->map, last->dom->domain, last->db); + last->map, last->dom->domain, last->db); #endif ypdb_close(last->db); /* close DB */ free(last->map); /* free map name */ free(last); /* free map */ - - } /* * Close all open maps. */ - void ypdb_close_all() { @@ -191,9 +182,8 @@ ypdb_close_all() #ifdef DEBUG yplog(" ypdb_close_all(): start"); #endif - while (maps.cqh_first != (void *)&maps) { + while (maps.cqh_first != (void *)&maps) ypdb_close_last(); - } #ifdef DEBUG yplog(" ypdb_close_all(): done"); #endif @@ -202,7 +192,6 @@ ypdb_close_all() /* * Close Database if Open/Close Optimization isn't turned on. */ - void ypdb_close_db(db) DBM *db; @@ -218,7 +207,6 @@ ypdb_close_db(db) /* * ypdb_open_db */ - DBM * ypdb_open_db(domain, map, status, map_info) domainname domain; @@ -234,36 +222,38 @@ ypdb_open_db(domain, map, status, map_info) int fd; struct opt_domain *d = NULL; struct opt_map *m = NULL; - datum k,v; + datum k, v; #ifdef OPTDB int i; #endif + /* * check for preloaded domain, map */ - for (d = doms.lh_first ; d != NULL ; d = d->domsl.le_next) { - if (strcmp(domain, d->domain) == 0) break; + if (strcmp(domain, d->domain) == 0) + break; } if (d) { for (m = d->dmaps.lh_first ; m != NULL ; m = m->mapsl.le_next) - if (strcmp(map, m->map) == 0) break; + if (strcmp(map, m->map) == 0) + break; } /* * map found open? */ - if (m) { #ifdef DEBUG yplog(" ypdb_open_db: cached open: domain=%s, map=%s, db=0x%x", - domain, map, m->db); + domain, map, m->db); #endif CIRCLEQ_REMOVE(&maps, m, mapsq); /* adjust LRU queue */ CIRCLEQ_INSERT_HEAD(&maps, m, mapsq); *status = YP_TRUE; - if (map_info) *map_info = m; + if (map_info) + *map_info = m; return(m->db); } @@ -278,7 +268,6 @@ ypdb_open_db(domain, map, status, map_info) return (NULL); } - /* * open map */ @@ -287,15 +276,15 @@ ypdb_open_db(domain, map, status, map_info) while (i == 0) { #endif snprintf(map_path, sizeof(map_path), "%s/%s/%s", YP_DB_PATH, - domain, map); + domain, map); db = ypdb_open(map_path, O_RDONLY, 0444); #ifdef OPTDB if (db == NULL) { #ifdef DEBUG yplog(" ypdb_open_db: errno %d (%s)", - errno,sys_errlist[errno]); + errno, sys_errlist[errno]); #endif - if ((errno == ENFILE) || (errno == EMFILE)) { + if (errno == ENFILE || errno == EMFILE) { ypdb_close_last(); } else { i = errno; @@ -303,20 +292,20 @@ ypdb_open_db(domain, map, status, map_info) } else { i = 4711; } - }; + } #endif *status = YP_NOMAP; /* see note below */ if (db == NULL) { if (errno == ENOENT) { #ifdef DEBUG yplog(" ypdb_open_db: no map %s (domain=%s)", - map, domain); + map, domain); #endif return(NULL); } #ifdef DEBUG yplog(" ypdb_open_db: ypdb_open FAILED: map %s (domain=%s)", - map, domain); + map, domain); #endif return(NULL); } @@ -327,11 +316,13 @@ ypdb_open_db(domain, map, status, map_info) if (d == NULL) { /* allocate new domain? */ d = (struct opt_domain *) malloc(sizeof(*d)); - if (d) d->domain = strdup(domain); + if (d) + d->domain = strdup(domain); if (d == NULL || d->domain == NULL) { yplog(" ypdb_open_db: MALLOC failed"); ypdb_close(db); - if (d) free(d); + if (d) + free(d); return(NULL); } LIST_INIT(&d->dmaps); @@ -346,11 +337,11 @@ ypdb_open_db(domain, map, status, map_info) */ m = (struct opt_map *) malloc(sizeof(*m)); - if (m) { + if (m) m->map = strdup(map); - } if (m == NULL || m->map == NULL) { - if (m) free(m); + if (m) + free(m); yplog(" ypdb_open_db: MALLOC failed"); ypdb_close(db); return(NULL); @@ -364,22 +355,24 @@ ypdb_open_db(domain, map, status, map_info) if (!usedns) { k.dptr = domain_key; k.dsize = YP_INTERDOMAIN_LEN; - v = ypdb_fetch(db,k); - if (v.dptr) m->host_lookup = TRUE; - } else { + v = ypdb_fetch(db, k); + if (v.dptr) + m->host_lookup = TRUE; + } else m->host_lookup = TRUE; - } } m->secure = FALSE; k.dptr = secure_key; k.dsize = YP_SECURE_LEN; - v = ypdb_fetch(db,k); - if (v.dptr) m->secure = TRUE; + v = ypdb_fetch(db, k); + if (v.dptr) + m->secure = TRUE; *status = YP_TRUE; - if (map_info) *map_info = m; + if (map_info) + *map_info = m; #ifdef DEBUG - yplog(" ypdb_open_db: NEW MAP domain=%s, map=%s, hl=%d, s=%d, db=0x%x", - domain, map, m->host_lookup, m->secure, m->db); + yplog(" ypdb_open_db: NEW MAP domain=%s, map=%s, hl=%d, s=%d, db=0x%x", + domain, map, m->host_lookup, m->secure, m->db); #endif return(m->db); } @@ -387,7 +380,6 @@ ypdb_open_db(domain, map, status, map_info) /* * lookup host */ - ypstat lookup_host(nametable, host_lookup, db, keystr, result) int nametable; @@ -406,7 +398,8 @@ lookup_host(nametable, host_lookup, db, keystr, result) int l; char *ptr; - if (!host_lookup) return(YP_NOKEY); + if (!host_lookup) + return(YP_NOKEY); if ((_res.options & RES_INIT) == 0) res_init(); @@ -439,7 +432,8 @@ lookup_host(nametable, host_lookup, db, keystr, result) strncpy((char *)hostname, host->h_name, sizeof(hostname) - 1); hostname[sizeof(hostname) - 1] = '\0'; host = gethostbyname((char *)hostname); - if (host == NULL) return(YP_NOKEY); + if (host == NULL) + return(YP_NOKEY); l = 0; for(; host->h_addr_list[0] != NULL; host->h_addr_list++) @@ -447,14 +441,14 @@ lookup_host(nametable, host_lookup, db, keystr, result) l++; if (l == 0) { yplog("lookup_host: address %s not listed for host %s\n", - inet_ntoa(addr_addr), hostname); + inet_ntoa(addr_addr), hostname); syslog(LOG_NOTICE, - "ypserv: address %s not listed for host %s\n", - inet_ntoa(addr_addr), hostname); + "ypserv: address %s not listed for host %s\n", + inet_ntoa(addr_addr), hostname); return(YP_NOKEY); } - snprintf(val,sizeof(val),"%s %s",keystr,host->h_name); + snprintf(val, sizeof(val), "%s %s", keystr, host->h_name); l = strlen(val); v = val + l; while ((ptr = *(host->h_aliases)) != NULL) { @@ -483,7 +477,7 @@ ypdb_get_record(domain, map, key, ypprivate) static ypresp_val res; static char keystr[YPMAXRECORD+1]; DBM *db; - datum k,v; + datum k, v; int host_lookup, hn; struct opt_map *map_info = NULL; @@ -498,7 +492,7 @@ ypdb_get_record(domain, map, key, ypprivate) k.dptr = key.keydat_val; k.dsize = key.keydat_len; - if (yp_private(k,ypprivate)) { + if (yp_private(k, ypprivate)) { res.stat = YP_NOKEY; goto done; } @@ -508,13 +502,13 @@ ypdb_get_record(domain, map, key, ypprivate) if (v.dptr == NULL) { res.stat = YP_NOKEY; if ((hn = strcmp(map, YP_HOSTNAME)) != 0 && - strcmp(map, YP_HOSTADDR) != 0) + strcmp(map, YP_HOSTADDR) != 0) goto done; /* note: lookup_host needs null terminated string */ strncpy(keystr, key.keydat_val, key.keydat_len); keystr[key.keydat_len] = '\0'; res.stat = lookup_host((hn == 0) ? TRUE : FALSE, - host_lookup, db, keystr, &res); + host_lookup, db, keystr, &res); } else { res.val.valdat_val = v.dptr; res.val.valdat_len = v.dsize; @@ -534,37 +528,33 @@ ypdb_get_first(domain, map, ypprivate) { static ypresp_key_val res; DBM *db; - datum k,v; + datum k, v; bzero((char *)&res, sizeof(res)); db = ypdb_open_db(domain, map, &res.stat, NULL); if (res.stat >= 0) { - - k = ypdb_firstkey(db); + k = ypdb_firstkey(db); - while (yp_private(k,ypprivate)) { - k = ypdb_nextkey(db); - }; + while (yp_private(k, ypprivate)) + k = ypdb_nextkey(db); - if (k.dptr == NULL) { - res.stat = YP_NOKEY; - } else { - res.key.keydat_val = k.dptr; - res.key.keydat_len = k.dsize; - v = ypdb_fetch(db,k); - if (v.dptr == NULL) { - res.stat = YP_NOKEY; - } else { - res.val.valdat_val = v.dptr; - res.val.valdat_len = v.dsize; - } - } + if (k.dptr == NULL) { + res.stat = YP_NOKEY; + } else { + res.key.keydat_val = k.dptr; + res.key.keydat_len = k.dsize; + v = ypdb_fetch(db, k); + if (v.dptr == NULL) { + res.stat = YP_NOKEY; + } else { + res.val.valdat_val = v.dptr; + res.val.valdat_len = v.dsize; + } + } } - ypdb_close_db(db); - return (res); } @@ -577,52 +567,46 @@ ypdb_get_next(domain, map, key, ypprivate) { static ypresp_key_val res; DBM *db; - datum k,v,n; + datum k, v, n; bzero((char *)&res, sizeof(res)); - db = ypdb_open_db(domain, map, &res.stat, NULL); if (res.stat >= 0) { + n.dptr = key.keydat_val; + n.dsize = key.keydat_len; + v.dptr = NULL; + v.dsize = 0; + k.dptr = NULL; + k.dsize = 0; - n.dptr = key.keydat_val; - n.dsize = key.keydat_len; - v.dptr = NULL; - v.dsize = 0; - k.dptr = NULL; - k.dsize = 0; - - n = ypdb_setkey(db,n); - - if (n.dptr != NULL) { - k = ypdb_nextkey(db); - } else { - k.dptr = NULL; - }; - - if (k.dptr != NULL) { - while (yp_private(k,ypprivate)) { - k = ypdb_nextkey(db); - }; - }; - - if (k.dptr == NULL) { - res.stat = YP_NOMORE; - } else { - res.key.keydat_val = k.dptr; - res.key.keydat_len = k.dsize; - v = ypdb_fetch(db,k); - if (v.dptr == NULL) { - res.stat = YP_NOMORE; - } else { - res.val.valdat_val = v.dptr; - res.val.valdat_len = v.dsize; - } - } - } + n = ypdb_setkey(db, n); + + if (n.dptr != NULL) + k = ypdb_nextkey(db); + else + k.dptr = NULL; + if (k.dptr != NULL) { + while (yp_private(k, ypprivate)) + k = ypdb_nextkey(db); + } + + if (k.dptr == NULL) { + res.stat = YP_NOMORE; + } else { + res.key.keydat_val = k.dptr; + res.key.keydat_len = k.dsize; + v = ypdb_fetch(db, k); + if (v.dptr == NULL) { + res.stat = YP_NOMORE; + } else { + res.val.valdat_val = v.dptr; + res.val.valdat_len = v.dsize; + } + } + } ypdb_close_db(db); - return (res); } @@ -635,29 +619,25 @@ ypdb_get_order(domain, map) static char *order_key = YP_LAST_KEY; char order[MAX_LAST_LEN+1]; DBM *db; - datum k,v; + datum k, v; bzero((char *)&res, sizeof(res)); - db = ypdb_open_db(domain, map, &res.stat, NULL); if (res.stat >= 0) { + k.dptr = order_key; + k.dsize = YP_LAST_LEN; - k.dptr = order_key; - k.dsize = YP_LAST_LEN; - - v = ypdb_fetch(db,k); - if (v.dptr == NULL) { - res.stat = YP_NOKEY; - } else { - strncpy(order, v.dptr, v.dsize); - order[v.dsize] = '\0'; - res.ordernum = (u_int32_t)atol(order); - } + v = ypdb_fetch(db, k); + if (v.dptr == NULL) { + res.stat = YP_NOKEY; + } else { + strncpy(order, v.dptr, v.dsize); + order[v.dsize] = '\0'; + res.ordernum = (u_int32_t)atol(order); + } } - ypdb_close_db(db); - return (res); } @@ -670,29 +650,25 @@ ypdb_get_master(domain, map) static char *master_key = YP_MASTER_KEY; static char master[MAX_MASTER_LEN+1]; DBM *db; - datum k,v; + datum k, v; bzero((char *)&res, sizeof(res)); - db = ypdb_open_db(domain, map, &res.stat, NULL); if (res.stat >= 0) { + k.dptr = master_key; + k.dsize = YP_MASTER_LEN; - k.dptr = master_key; - k.dsize = YP_MASTER_LEN; - - v = ypdb_fetch(db,k); - if (v.dptr == NULL) { - res.stat = YP_NOKEY; - } else { - strncpy(master, v.dptr, v.dsize); - master[v.dsize] = '\0'; - res.peer = (peername) &master; - } + v = ypdb_fetch(db, k); + if (v.dptr == NULL) { + res.stat = YP_NOKEY; + } else { + strncpy(master, v.dptr, v.dsize); + master[v.dsize] = '\0'; + res.peer = (peername) &master; + } } - ypdb_close_db(db); - return (res); } @@ -703,30 +679,26 @@ ypdb_xdr_get_all(xdrs, req) { static ypresp_all resp; DBM *db; - datum k,v; + datum k, v; bzero((char *)&resp, sizeof(resp)); /* * open db, and advance past any private keys we may see */ - db = ypdb_open_db(req->domain, req->map, - &resp.ypresp_all_u.val.stat, NULL); + &resp.ypresp_all_u.val.stat, NULL); if (!db || resp.ypresp_all_u.val.stat < 0) return(FALSE); k = ypdb_firstkey(db); - while (yp_private(k,FALSE)) { + while (yp_private(k, FALSE)) k = ypdb_nextkey(db); - }; while(1) { - if (k.dptr == NULL) break; - v = ypdb_fetch(db,k); - + v = ypdb_fetch(db, k); if (v.dptr == NULL) break; @@ -746,9 +718,8 @@ ypdb_xdr_get_all(xdrs, req) /* advance past private keys */ k = ypdb_nextkey(db); - while (yp_private(k,FALSE)) { + while (yp_private(k, FALSE)) k = ypdb_nextkey(db); - } } bzero((char *)&resp, sizeof(resp)); @@ -761,9 +732,7 @@ ypdb_xdr_get_all(xdrs, req) #endif return(FALSE); } - ypdb_close_db(db); - return (TRUE); } diff --git a/usr.sbin/ypserv/ypserv/ypserv_proc.c b/usr.sbin/ypserv/ypserv/ypserv_proc.c index 806c538d431..56e7a0b7458 100644 --- a/usr.sbin/ypserv/ypserv/ypserv_proc.c +++ b/usr.sbin/ypserv/ypserv/ypserv_proc.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ypserv_proc.c,v 1.16 2001/07/09 07:05:06 deraadt Exp $ */ +/* $OpenBSD: ypserv_proc.c,v 1.17 2001/11/19 09:03:07 deraadt Exp $ */ /* * Copyright (c) 1994 Mats O Jansson <moj@stacken.kth.se> @@ -32,7 +32,7 @@ */ #ifndef LINT -static char rcsid[] = "$OpenBSD: ypserv_proc.c,v 1.16 2001/07/09 07:05:06 deraadt Exp $"; +static char rcsid[] = "$OpenBSD: ypserv_proc.c,v 1.17 2001/11/19 09:03:07 deraadt Exp $"; #endif #include <rpc/rpc.h> @@ -72,17 +72,18 @@ extern int ypdb_secure(); static char *True = "true"; static char *False = "FALSE"; #define TORF(N) ((N) ? True : False) + void * ypproc_null_2_svc(argp, rqstp) void *argp; - struct svc_req *rqstp; + struct svc_req *rqstp; { static char *result; struct sockaddr_in *caller = svc_getcaller(rqstp->rq_xprt); int ok = acl_check_host(&caller->sin_addr); YPLOG("null_2: caller=[%s].%d, auth_ok=%s", - inet_ntoa(caller->sin_addr), ntohs(caller->sin_port), TORF(ok)); + inet_ntoa(caller->sin_addr), ntohs(caller->sin_port), TORF(ok)); if (!ok) { svcerr_auth(rqstp->rq_xprt, AUTH_FAILED); @@ -90,44 +91,42 @@ ypproc_null_2_svc(argp, rqstp) } result = NULL; - return ((void *)&result); } bool_t * ypproc_domain_2_svc(argp, rqstp) domainname *argp; - struct svc_req *rqstp; + struct svc_req *rqstp; { - static bool_t result; /* is domain_served? */ struct sockaddr_in *caller = svc_getcaller(rqstp->rq_xprt); int ok = acl_check_host(&caller->sin_addr); static char domain_path[MAXPATHLEN]; + static bool_t result; struct stat finfo; if (strchr(*argp, '/')) goto bail; snprintf(domain_path, sizeof(domain_path), "%s/%s", YP_DB_PATH, *argp); result = (bool_t) ((stat(domain_path, &finfo) == 0) && - (finfo.st_mode & S_IFDIR)); + (finfo.st_mode & S_IFDIR)); YPLOG("domain_2: caller=[%s].%d, auth_ok=%s, domain=%s, served=%s", - inet_ntoa(caller->sin_addr), ntohs(caller->sin_port), - TORF(ok), *argp, TORF(result)); + inet_ntoa(caller->sin_addr), ntohs(caller->sin_port), + TORF(ok), *argp, TORF(result)); if (!ok) { bail: svcerr_auth(rqstp->rq_xprt, AUTH_FAILED); return(NULL); } - return (&result); } bool_t * ypproc_domain_nonack_2_svc(argp, rqstp) domainname *argp; - struct svc_req *rqstp; + struct svc_req *rqstp; { static bool_t result; /* is domain served? */ struct sockaddr_in *caller = svc_getcaller(rqstp->rq_xprt); @@ -139,12 +138,11 @@ ypproc_domain_nonack_2_svc(argp, rqstp) goto bail; snprintf(domain_path, sizeof(domain_path), "%s/%s", YP_DB_PATH, *argp); result = (bool_t) ((stat(domain_path, &finfo) == 0) && - (finfo.st_mode & S_IFDIR)); + (finfo.st_mode & S_IFDIR)); - YPLOG( - "domain_nonack_2: caller=[%s].%d, auth_ok=%s, domain=%s, served=%s", - inet_ntoa(caller->sin_addr), ntohs(caller->sin_port), TORF(ok), - *argp, TORF(result)); + YPLOG("domain_nonack_2: caller=[%s].%d, auth_ok=%s, domain=%s, served=%s", + inet_ntoa(caller->sin_addr), ntohs(caller->sin_port), TORF(ok), + *argp, TORF(result)); if (!ok) { bail: @@ -152,30 +150,27 @@ bail: return(NULL); } - if (!result) { + if (!result) return(NULL); /* don't send nack */ - } - return (&result); } ypresp_val * ypproc_match_2_svc(argp, rqstp) ypreq_key *argp; - struct svc_req *rqstp; + struct svc_req *rqstp; { - static ypresp_val res; struct sockaddr_in *caller = svc_getcaller(rqstp->rq_xprt); int ok = acl_check_host(&caller->sin_addr); - int secure = ypdb_secure(argp->domain,argp->map); + int secure = ypdb_secure(argp->domain, argp->map); + static ypresp_val res; if (strchr(argp->domain, '/') || strchr(argp->map, '/')) goto bail; - YPLOG( - "match_2: caller=[%s].%d, auth_ok=%s, secure=%s, domain=%s, map=%s, key=%.*s", - inet_ntoa(caller->sin_addr), ntohs(caller->sin_port), - TORF(ok), TORF(secure), - argp->domain, argp->map, argp->key.keydat_len, argp->key.keydat_val); + YPLOG("match_2: caller=[%s].%d, auth_ok=%s, secure=%s, domain=%s, map=%s, key=%.*s", + inet_ntoa(caller->sin_addr), ntohs(caller->sin_port), + TORF(ok), TORF(secure), + argp->domain, argp->map, argp->key.keydat_len, argp->key.keydat_val); if (!ok) { bail: @@ -186,33 +181,30 @@ bail: if (secure && (ntohs(caller->sin_port) >= IPPORT_RESERVED)) { res.stat = YP_YPERR; } else { - res = ypdb_get_record(argp->domain,argp->map,argp->key, TRUE); + res = ypdb_get_record(argp->domain, argp->map, argp->key, TRUE); } #ifdef DEBUG yplog(" match2_status: %s", yperr_string(ypprot_err(res.stat))); #endif - return (&res); } ypresp_key_val * ypproc_first_2_svc(argp, rqstp) ypreq_nokey *argp; - struct svc_req *rqstp; + struct svc_req *rqstp; { - static ypresp_key_val res; struct sockaddr_in *caller = svc_getcaller(rqstp->rq_xprt); int ok = acl_check_host(&caller->sin_addr); - int secure = ypdb_secure(argp->domain,argp->map); + int secure = ypdb_secure(argp->domain, argp->map); + static ypresp_key_val res; if (strchr(argp->domain, '/') || strchr(argp->map, '/')) goto bail; YPLOG( "first_2: caller=[%s].%d, auth_ok=%s, secure=%s, domain=%s, map=%s", - inet_ntoa(caller->sin_addr), ntohs(caller->sin_port), - TORF(ok), TORF(secure), - argp->domain, argp->map); - + inet_ntoa(caller->sin_addr), ntohs(caller->sin_port), + TORF(ok), TORF(secure), argp->domain, argp->map); if (!ok) { bail: svcerr_auth(rqstp->rq_xprt, AUTH_FAILED); @@ -222,33 +214,31 @@ bail: if (secure && (ntohs(caller->sin_port) >= IPPORT_RESERVED)) { res.stat = YP_YPERR; } else { - res = ypdb_get_first(argp->domain,argp->map,FALSE); + res = ypdb_get_first(argp->domain, argp->map,FALSE); } #ifdef DEBUG yplog(" first2_status: %s", yperr_string(ypprot_err(res.stat))); #endif - return (&res); } ypresp_key_val * ypproc_next_2_svc(argp, rqstp) ypreq_key *argp; - struct svc_req *rqstp; + struct svc_req *rqstp; { static ypresp_key_val res; struct sockaddr_in *caller = svc_getcaller(rqstp->rq_xprt); int ok = acl_check_host(&caller->sin_addr); - int secure = ypdb_secure(argp->domain,argp->map); + int secure = ypdb_secure(argp->domain, argp->map); if (strchr(argp->domain, '/') || strchr(argp->map, '/')) goto bail; - YPLOG( - "next_2: caller=[%s].%d, auth_ok=%s, secure=%s, domain=%s, map=%s, key=%.*s", - inet_ntoa(caller->sin_addr), ntohs(caller->sin_port), - TORF(ok), TORF(secure), - argp->domain, argp->map, argp->key.keydat_len, argp->key.keydat_val); + YPLOG("next_2: caller=[%s].%d, auth_ok=%s, secure=%s, domain=%s, map=%s, key=%.*s", + inet_ntoa(caller->sin_addr), ntohs(caller->sin_port), + TORF(ok), TORF(secure), + argp->domain, argp->map, argp->key.keydat_len, argp->key.keydat_val); if (!ok) { bail: @@ -259,38 +249,34 @@ bail: if (secure && (ntohs(caller->sin_port) >= IPPORT_RESERVED)) { res.stat = YP_YPERR; } else { - res = ypdb_get_next(argp->domain,argp->map,argp->key,FALSE); + res = ypdb_get_next(argp->domain, argp->map, argp->key,FALSE); } #ifdef DEBUG yplog(" next2_status: %s", yperr_string(ypprot_err(res.stat))); #endif - return (&res); } ypresp_xfr * ypproc_xfr_2_svc(argp, rqstp) ypreq_xfr *argp; - struct svc_req *rqstp; + struct svc_req *rqstp; { static ypresp_xfr res; struct sockaddr_in *caller = svc_getcaller(rqstp->rq_xprt); int ok = acl_check_host(&caller->sin_addr); pid_t pid; - char tid[11]; - char prog[11]; - char port[11]; - char ypxfr_proc[] = YPXFR_PROC; - char *ipadd; + char tid[11], prog[11], port[11]; + char ypxfr_proc[] = YPXFR_PROC, *ipadd; bzero((char *)&res, sizeof(res)); YPLOG("xfr_2: caller=[%s].%d, auth_ok=%s, domain=%s, tid=%d, prog=%d", - inet_ntoa(caller->sin_addr), ntohs(caller->sin_port), TORF(ok), - argp->map_parms.domain, argp->transid, argp->prog); + inet_ntoa(caller->sin_addr), ntohs(caller->sin_port), TORF(ok), + argp->map_parms.domain, argp->transid, argp->prog); YPLOG(" ipadd=%s, port=%d, map=%s", inet_ntoa(caller->sin_addr), - argp->port, argp->map_parms.map); + argp->port, argp->map_parms.map); if (strchr(argp->map_parms.domain, '/') || strchr(argp->map_parms.map, '/') || @@ -299,7 +285,7 @@ ypproc_xfr_2_svc(argp, rqstp) return(NULL); } - snprintf(tid, sizeof(tid), "%d",argp->transid); + snprintf(tid, sizeof(tid), "%d", argp->transid); snprintf(prog, sizeof(prog), "%d", argp->prog); snprintf(port, sizeof(port), "%d", argp->port); ipadd = inet_ntoa(caller->sin_addr); @@ -314,7 +300,6 @@ ypproc_xfr_2_svc(argp, rqstp) "-C",tid, prog, ipadd, port, argp->map_parms.map, (char *)NULL); _exit(1); } - /* * XXX: fill in res */ @@ -324,7 +309,7 @@ ypproc_xfr_2_svc(argp, rqstp) void * ypproc_clear_2_svc(argp, rqstp) void *argp; - struct svc_req *rqstp; + struct svc_req *rqstp; { static char *res; struct sockaddr_in *caller = svc_getcaller(rqstp->rq_xprt); @@ -348,82 +333,73 @@ ypproc_clear_2_svc(argp, rqstp) } res = NULL; - + #ifdef OPTDB - ypdb_close_all(); + ypdb_close_all(); #endif - return ((void *)&res); } ypresp_all * ypproc_all_2_svc(argp, rqstp) ypreq_nokey *argp; - struct svc_req *rqstp; + struct svc_req *rqstp; { static ypresp_all res; pid_t pid; struct sockaddr_in *caller = svc_getcaller(rqstp->rq_xprt); int ok = acl_check_host(&caller->sin_addr); - int secure = ypdb_secure(argp->domain,argp->map); + int secure = ypdb_secure(argp->domain, argp->map); if (strchr(argp->domain, '/') || strchr(argp->map, '/')) goto bail; YPLOG( "all_2: caller=[%s].%d, auth_ok=%s, secure=%s, domain=%s, map=%s", - inet_ntoa(caller->sin_addr), ntohs(caller->sin_port), - TORF(ok), TORF(secure), argp->domain, argp->map); + inet_ntoa(caller->sin_addr), ntohs(caller->sin_port), + TORF(ok), TORF(secure), argp->domain, argp->map); if (!ok) { bail: svcerr_auth(rqstp->rq_xprt, AUTH_FAILED); return(NULL); } - bzero((char *)&res, sizeof(res)); - + if (secure && (ntohs(caller->sin_port) >= IPPORT_RESERVED)) { res.ypresp_all_u.val.stat = YP_YPERR; return(&res); } pid = fork(); - if (pid) { - if (pid == -1) { /* XXXCDC An error has occurred */ } - return(NULL); /* PARENT: continue */ - } /* CHILD: send result, then exit */ if (!svc_sendreply(rqstp->rq_xprt, ypdb_xdr_get_all, (char *) argp)) { svcerr_systemerr(rqstp->rq_xprt); } - - /* note: no need to free args, we are exiting */ - exit(0); } ypresp_master * ypproc_master_2_svc(argp, rqstp) ypreq_nokey *argp; - struct svc_req *rqstp; + struct svc_req *rqstp; { static ypresp_master res; static peername nopeer = ""; struct sockaddr_in *caller = svc_getcaller(rqstp->rq_xprt); int ok = acl_check_host(&caller->sin_addr); - int secure = ypdb_secure(argp->domain,argp->map); + int secure = ypdb_secure(argp->domain, argp->map); if (strchr(argp->domain, '/') || strchr(argp->map, '/')) goto bail; YPLOG( "master_2: caller=[%s].%d, auth_ok=%s, secure=%s, domain=%s, map=%s", - inet_ntoa(caller->sin_addr), ntohs(caller->sin_port), - TORF(ok), TORF(secure), argp->domain, argp->map); + inet_ntoa(caller->sin_addr), ntohs(caller->sin_port), + TORF(ok), TORF(secure), argp->domain, argp->map); if (!ok) { bail: @@ -434,28 +410,25 @@ bail: if (secure && (ntohs(caller->sin_port) >= IPPORT_RESERVED)) { res.stat = YP_YPERR; } else { - res = ypdb_get_master(argp->domain,argp->map); + res = ypdb_get_master(argp->domain, argp->map); } #ifdef DEBUG yplog(" master2_status: %s", yperr_string(ypprot_err(res.stat))); #endif - /* This code was added because a yppoll <unknown-domain> */ - /* from a sun crashed the server in xdr_string, trying */ - /* to access the peer through a NULL-pointer. yppoll in */ - /* this server start asking for order. If order is ok */ - /* then it will ask for master. SunOS 4 asks for both */ - /* always. I'm not sure this is the best place for the */ - /* fix, but for now it will do. xdr_peername or */ - /* xdr_string in ypserv_xdr.c may be a better place? */ - - if (res.peer == NULL) { + /* + * This code was added because a yppoll <unknown-domain> + * from a sun crashed the server in xdr_string, trying + * to access the peer through a NULL-pointer. yppoll in + * this server start asking for order. If order is ok + * then it will ask for master. SunOS 4 asks for both + * always. I'm not sure this is the best place for the + * fix, but for now it will do. xdr_peername or + * xdr_string in ypserv_xdr.c may be a better place? + */ + if (res.peer == NULL) res.peer = nopeer; - } - - /* End of fix */ - return (&res); } @@ -463,18 +436,18 @@ bail: ypresp_order * ypproc_order_2_svc(argp, rqstp) ypreq_nokey *argp; - struct svc_req *rqstp; + struct svc_req *rqstp; { static ypresp_order res; struct sockaddr_in *caller = svc_getcaller(rqstp->rq_xprt); int ok = acl_check_host(&caller->sin_addr); - int secure = ypdb_secure(argp->domain,argp->map); + int secure = ypdb_secure(argp->domain, argp->map); if (strchr(argp->domain, '/')) goto bail; YPLOG( "order_2: caller=[%s].%d, auth_ok=%s, secure=%s, domain=%s, map=%s", - inet_ntoa(caller->sin_addr), ntohs(caller->sin_port), - TORF(ok), TORF(secure), argp->domain, argp->map); + inet_ntoa(caller->sin_addr), ntohs(caller->sin_port), + TORF(ok), TORF(secure), argp->domain, argp->map); if (!ok) { bail: @@ -487,13 +460,12 @@ bail: } else if (strchr(argp->map, '/')) { res.stat = YP_NOMAP; } else { - res = ypdb_get_order(argp->domain,argp->map); + res = ypdb_get_order(argp->domain, argp->map); } #ifdef DEBUG yplog(" order2_status: %s", yperr_string(ypprot_err(res.stat))); #endif - return (&res); } @@ -501,7 +473,7 @@ bail: ypresp_maplist * ypproc_maplist_2_svc(argp, rqstp) domainname *argp; - struct svc_req *rqstp; + struct svc_req *rqstp; { static ypresp_maplist res; struct sockaddr_in *caller = svc_getcaller(rqstp->rq_xprt); @@ -518,8 +490,8 @@ ypproc_maplist_2_svc(argp, rqstp) if (strchr(*argp, '/')) goto bail; YPLOG("maplist_2: caller=[%s].%d, auth_ok=%s, domain=%s", - inet_ntoa(caller->sin_addr), ntohs(caller->sin_port), TORF(ok), - *argp); + inet_ntoa(caller->sin_addr), ntohs(caller->sin_port), TORF(ok), + *argp); if (!ok) { bail: @@ -528,78 +500,69 @@ bail: } bzero((char *)&res, sizeof(res)); - snprintf(domain_path,MAXPATHLEN, "%s/%s",YP_DB_PATH,*argp); status = YP_TRUE; - res.maps = NULL; if (!((stat(domain_path, &finfo) == 0) && - ((finfo.st_mode & S_IFMT) == S_IFDIR))) + ((finfo.st_mode & S_IFMT) == S_IFDIR))) status = YP_NODOM; if (status >= 0) { - if ((dirp = opendir(domain_path)) == NULL) { - status = YP_NODOM; - } + if ((dirp = opendir(domain_path)) == NULL) + status = YP_NODOM; } if (status >= 0) { - for(dp = readdir(dirp); dp != NULL; dp = readdir(dirp)) { - if ((!strcmp(dp->d_name, ".")) || - ((!strcmp(dp->d_name, ".."))) || - (dp->d_namlen < 4)) - continue; - suffix = (char *) &dp->d_name[dp->d_namlen-3]; - if (strcmp(suffix,".db") == 0) { - - if ((m = (struct ypmaplist *) - malloc((unsigned) sizeof(struct ypmaplist))) == NULL) { - status = YP_YPERR; - break; - } - - if ((map_name = (char *) - malloc((unsigned) dp->d_namlen - 2)) == NULL) { - status = YP_YPERR; - break; - } - - m->next = res.maps; - m->map = map_name; - res.maps = m; - strncpy(map_name, dp->d_name, dp->d_namlen - 3); - m->map[dp->d_namlen - 3] = '\0'; - - } - } - } - - if (dirp != NULL) { - closedir(dirp); + for(dp = readdir(dirp); dp != NULL; dp = readdir(dirp)) { + if ((!strcmp(dp->d_name, ".")) || + ((!strcmp(dp->d_name, ".."))) || + (dp->d_namlen < 4)) + continue; + suffix = (char *) &dp->d_name[dp->d_namlen-3]; + if (strcmp(suffix, ".db") == 0) { + if ((m = (struct ypmaplist *)malloc((unsigned) + sizeof(struct ypmaplist))) == NULL) { + status = YP_YPERR; + break; + } + + if ((map_name = (char *)malloc((unsigned) + dp->d_namlen - 2)) == NULL) { + status = YP_YPERR; + break; + } + + m->next = res.maps; + m->map = map_name; + res.maps = m; + strncpy(map_name, dp->d_name, dp->d_namlen - 3); + m->map[dp->d_namlen - 3] = '\0'; + } + } } + if (dirp != NULL) + closedir(dirp); res.stat = status; - #ifdef DEBUG yplog(" maplist_status: %s", yperr_string(ypprot_err(res.stat))); #endif - return (&res); } void * ypproc_null_1_svc(argp, rqstp) void *argp; - struct svc_req *rqstp; + struct svc_req *rqstp; { static char *result; struct sockaddr_in *caller = svc_getcaller(rqstp->rq_xprt); int ok = acl_check_host(&caller->sin_addr); YPLOG("null_1: caller=[%s].%d, auth_ok=%s", - inet_ntoa(caller->sin_addr), ntohs(caller->sin_port), TORF(ok)); + inet_ntoa(caller->sin_addr), ntohs(caller->sin_port), TORF(ok)); if (!ok) { svcerr_auth(rqstp->rq_xprt, AUTH_FAILED); @@ -614,7 +577,7 @@ ypproc_null_1_svc(argp, rqstp) bool_t * ypproc_domain_1_svc(argp, rqstp) domainname *argp; - struct svc_req *rqstp; + struct svc_req *rqstp; { static bool_t result; /* is domain_served? */ struct sockaddr_in *caller = svc_getcaller(rqstp->rq_xprt); @@ -629,8 +592,8 @@ ypproc_domain_1_svc(argp, rqstp) (finfo.st_mode & S_IFDIR)); YPLOG("domain_1: caller=[%s].%d, auth_ok=%s, domain=%s, served=%s", - inet_ntoa(caller->sin_addr), ntohs(caller->sin_port), - TORF(ok), *argp, TORF(result)); + inet_ntoa(caller->sin_addr), ntohs(caller->sin_port), + TORF(ok), *argp, TORF(result)); if (!ok) { bail: @@ -644,7 +607,7 @@ bail: bool_t * ypproc_domain_nonack_1_svc(argp, rqstp) domainname *argp; - struct svc_req *rqstp; + struct svc_req *rqstp; { static bool_t result; /* is domain served? */ struct sockaddr_in *caller = svc_getcaller(rqstp->rq_xprt); @@ -660,7 +623,7 @@ ypproc_domain_nonack_1_svc(argp, rqstp) YPLOG( "domain_nonack_1: caller=[%s].%d, auth_ok=%s, domain=%s, served=%s", - inet_ntoa(caller->sin_addr), ntohs(caller->sin_port), TORF(ok), + inet_ntoa(caller->sin_addr), ntohs(caller->sin_port), TORF(ok), *argp, TORF(result)); if (!ok) { @@ -679,7 +642,7 @@ bail: ypresponse * ypproc_match_1_svc(argp, rqstp) yprequest *argp; - struct svc_req *rqstp; + struct svc_req *rqstp; { static ypresponse res; struct sockaddr_in *caller = svc_getcaller(rqstp->rq_xprt); @@ -716,16 +679,14 @@ bail: if (secure && (ntohs(caller->sin_port) >= IPPORT_RESERVED)) { res.ypmatch_resp_status = YP_YPERR; } else { - res.ypmatch_resp_val = - ypdb_get_record(argp->ypmatch_req_domain, - argp->ypmatch_req_map, - argp->ypmatch_req_keydat, - TRUE); + res.ypmatch_resp_val = ypdb_get_record( + argp->ypmatch_req_domain, argp->ypmatch_req_map, + argp->ypmatch_req_keydat, TRUE); } #ifdef DEBUG yplog(" match1_status: %s", - yperr_string(ypprot_err(res.ypmatch_resp_status))); + yperr_string(ypprot_err(res.ypmatch_resp_status))); #endif return (&res); @@ -734,7 +695,7 @@ bail: ypresponse * ypproc_first_1_svc(argp, rqstp) yprequest *argp; - struct svc_req *rqstp; + struct svc_req *rqstp; { static ypresponse res; struct sockaddr_in *caller = svc_getcaller(rqstp->rq_xprt); @@ -759,7 +720,7 @@ ypproc_first_1_svc(argp, rqstp) inet_ntoa(caller->sin_addr), ntohs(caller->sin_port), TORF(ok), TORF(secure), argp->ypfirst_req_domain, argp->ypfirst_req_map); - + if (!ok) { bail: svcerr_auth(rqstp->rq_xprt, AUTH_FAILED); @@ -769,15 +730,13 @@ bail: if (secure && (ntohs(caller->sin_port) >= IPPORT_RESERVED)) { res.ypfirst_resp_status = YP_YPERR; } else { - res.ypfirst_resp_val = - ypdb_get_first(argp->ypfirst_req_domain, - argp->ypfirst_req_map, - FALSE); + res.ypfirst_resp_val = ypdb_get_first( + argp->ypfirst_req_domain, argp->ypfirst_req_map, FALSE); } #ifdef DEBUG yplog(" first1_status: %s", - yperr_string(ypprot_err(res.ypfirst_resp_status))); + yperr_string(ypprot_err(res.ypfirst_resp_status))); #endif return (&res); @@ -786,7 +745,7 @@ bail: ypresponse * ypproc_next_1_svc(argp, rqstp) yprequest *argp; - struct svc_req *rqstp; + struct svc_req *rqstp; { static ypresponse res; struct sockaddr_in *caller = svc_getcaller(rqstp->rq_xprt); @@ -823,16 +782,14 @@ bail: if (secure && (ntohs(caller->sin_port) >= IPPORT_RESERVED)) { res.ypnext_resp_status = YP_YPERR; } else { - res.ypnext_resp_val = - ypdb_get_next(argp->ypnext_req_domain, - argp->ypnext_req_map, - argp->ypnext_req_keydat, - FALSE); + res.ypnext_resp_val = ypdb_get_next( + argp->ypnext_req_domain, argp->ypnext_req_map, + argp->ypnext_req_keydat, FALSE); } #ifdef DEBUG yplog(" next1_status: %s", - yperr_string(ypprot_err(res.ypnext_resp_status))); + yperr_string(ypprot_err(res.ypnext_resp_status))); #endif return (&res); @@ -841,7 +798,7 @@ bail: ypresponse * ypproc_poll_1_svc(argp, rqstp) yprequest *argp; - struct svc_req *rqstp; + struct svc_req *rqstp; { static ypresponse res; ypresp_order order; @@ -878,9 +835,9 @@ bail: if (!(secure && (ntohs(caller->sin_port) >= IPPORT_RESERVED))) { order = ypdb_get_order(argp->yppoll_req_domain, - argp->yppoll_req_map); + argp->yppoll_req_map); master = ypdb_get_master(argp->yppoll_req_domain, - argp->yppoll_req_map); + argp->yppoll_req_map); res.yppoll_resp_ordernum = order.ordernum; res.yppoll_resp_owner = master.peer; } @@ -894,7 +851,7 @@ bail: void * ypproc_push_1_svc(argp, rqstp) yprequest *argp; - struct svc_req *rqstp; + struct svc_req *rqstp; { struct sockaddr_in *caller = svc_getcaller(rqstp->rq_xprt); int ok = acl_check_host(&caller->sin_addr); @@ -932,17 +889,16 @@ bail: } if (pid == 0) { execl(yppush_proc, "yppush", "-d", argp->yppush_req_domain, - argp->yppush_req_map, (char *)NULL); + argp->yppush_req_map, (char *)NULL); _exit(1); } - return (NULL); } void * ypproc_pull_1_svc(argp, rqstp) yprequest *argp; - struct svc_req *rqstp; + struct svc_req *rqstp; { struct sockaddr_in *caller = svc_getcaller(rqstp->rq_xprt); int ok = acl_check_host(&caller->sin_addr); @@ -980,19 +936,17 @@ bail: } if (pid == 0) { execl(ypxfr_proc, "ypxfr", "-d", argp->yppull_req_domain, - argp->yppull_req_map, (char *)NULL); + argp->yppull_req_map, (char *)NULL); _exit(1); } - return (NULL); } void * ypproc_get_1_svc(argp, rqstp) yprequest *argp; - struct svc_req *rqstp; + struct svc_req *rqstp; { - char *res; struct sockaddr_in *caller = svc_getcaller(rqstp->rq_xprt); int ok = acl_check_host(&caller->sin_addr); int secure; @@ -1002,17 +956,16 @@ ypproc_get_1_svc(argp, rqstp) if (strchr(argp->ypget_req_domain, '/') || strchr(argp->ypget_req_map, '/')) goto bail; - if (argp->yp_reqtype != YPGET_REQTYPE) { + if (argp->yp_reqtype != YPGET_REQTYPE) return(NULL); - } secure = ypdb_secure(argp->ypget_req_domain, argp->ypget_req_map); YPLOG( "get_1: caller=[%s].%d, auth_ok=%s, secure=%s, domain=%s, map=%s, owner=%s", - inet_ntoa(caller->sin_addr), ntohs(caller->sin_port), - TORF(ok), TORF(secure), - argp->ypget_req_domain, argp->ypget_req_map, - argp->ypget_req_owner); + inet_ntoa(caller->sin_addr), ntohs(caller->sin_port), + TORF(ok), TORF(secure), + argp->ypget_req_domain, argp->ypget_req_map, + argp->ypget_req_owner); if (ntohs(caller->sin_port) >= IPPORT_RESERVED) ok = FALSE; @@ -1030,9 +983,8 @@ bail: } if (pid == 0) { execl(ypxfr_proc, "ypxfr", "-d", argp->ypget_req_domain, "-h", - argp->ypget_req_owner, argp->yppush_req_map, (char *)NULL); + argp->ypget_req_owner, argp->yppush_req_map, (char *)NULL); _exit(1); } - return (NULL); } diff --git a/usr.sbin/ypserv/ypserv/ypserv_xdr.c b/usr.sbin/ypserv/ypserv/ypserv_xdr.c index 1cd424d2510..f49c40b2b5a 100644 --- a/usr.sbin/ypserv/ypserv/ypserv_xdr.c +++ b/usr.sbin/ypserv/ypserv/ypserv_xdr.c @@ -5,7 +5,7 @@ #include "yp.h" #ifndef lint -static char rcsid[] = "$OpenBSD: ypserv_xdr.c,v 1.3 1996/05/30 09:53:31 deraadt Exp $"; +static char rcsid[] = "$OpenBSD: ypserv_xdr.c,v 1.4 2001/11/19 09:03:07 deraadt Exp $"; #endif /* not lint */ bool_t @@ -14,11 +14,11 @@ xdr_ypstat(xdrs, objp) ypstat *objp; { - register long *buf; + register long *buf; - if (!xdr_enum(xdrs, (enum_t *)objp)) { - return (FALSE); - } + if (!xdr_enum(xdrs, (enum_t *)objp)) { + return (FALSE); + } return (TRUE); } @@ -28,11 +28,11 @@ xdr_ypxfrstat(xdrs, objp) ypxfrstat *objp; { - register long *buf; + register long *buf; - if (!xdr_enum(xdrs, (enum_t *)objp)) { - return (FALSE); - } + if (!xdr_enum(xdrs, (enum_t *)objp)) { + return (FALSE); + } return (TRUE); } @@ -42,11 +42,11 @@ xdr_domainname(xdrs, objp) domainname *objp; { - register long *buf; + register long *buf; - if (!xdr_string(xdrs, objp, YPMAXDOMAIN)) { - return (FALSE); - } + if (!xdr_string(xdrs, objp, YPMAXDOMAIN)) { + return (FALSE); + } return (TRUE); } @@ -56,11 +56,11 @@ xdr_mapname(xdrs, objp) mapname *objp; { - register long *buf; + register long *buf; - if (!xdr_string(xdrs, objp, YPMAXMAP)) { - return (FALSE); - } + if (!xdr_string(xdrs, objp, YPMAXMAP)) { + return (FALSE); + } return (TRUE); } @@ -70,11 +70,11 @@ xdr_peername(xdrs, objp) peername *objp; { - register long *buf; + register long *buf; - if (!xdr_string(xdrs, objp, YPMAXPEER)) { - return (FALSE); - } + if (!xdr_string(xdrs, objp, YPMAXPEER)) { + return (FALSE); + } return (TRUE); } @@ -84,11 +84,11 @@ xdr_keydat(xdrs, objp) keydat *objp; { - register long *buf; + register long *buf; - if (!xdr_bytes(xdrs, (char **)&objp->keydat_val, (u_int *)&objp->keydat_len, YPMAXRECORD)) { - return (FALSE); - } + if (!xdr_bytes(xdrs, (char **)&objp->keydat_val, (u_int *)&objp->keydat_len, YPMAXRECORD)) { + return (FALSE); + } return (TRUE); } @@ -98,11 +98,11 @@ xdr_valdat(xdrs, objp) valdat *objp; { - register long *buf; + register long *buf; - if (!xdr_bytes(xdrs, (char **)&objp->valdat_val, (u_int *)&objp->valdat_len, YPMAXRECORD)) { - return (FALSE); - } + if (!xdr_bytes(xdrs, (char **)&objp->valdat_val, (u_int *)&objp->valdat_len, YPMAXRECORD)) { + return (FALSE); + } return (TRUE); } @@ -112,20 +112,20 @@ xdr_ypmap_parms(xdrs, objp) ypmap_parms *objp; { - register long *buf; - - if (!xdr_domainname(xdrs, &objp->domain)) { - return (FALSE); - } - if (!xdr_mapname(xdrs, &objp->map)) { - return (FALSE); - } - if (!xdr_u_int(xdrs, &objp->ordernum)) { - return (FALSE); - } - if (!xdr_peername(xdrs, &objp->peer)) { - return (FALSE); - } + register long *buf; + + if (!xdr_domainname(xdrs, &objp->domain)) { + return (FALSE); + } + if (!xdr_mapname(xdrs, &objp->map)) { + return (FALSE); + } + if (!xdr_u_int(xdrs, &objp->ordernum)) { + return (FALSE); + } + if (!xdr_peername(xdrs, &objp->peer)) { + return (FALSE); + } return (TRUE); } @@ -135,17 +135,17 @@ xdr_ypreq_key(xdrs, objp) ypreq_key *objp; { - register long *buf; - - if (!xdr_domainname(xdrs, &objp->domain)) { - return (FALSE); - } - if (!xdr_mapname(xdrs, &objp->map)) { - return (FALSE); - } - if (!xdr_keydat(xdrs, &objp->key)) { - return (FALSE); - } + register long *buf; + + if (!xdr_domainname(xdrs, &objp->domain)) { + return (FALSE); + } + if (!xdr_mapname(xdrs, &objp->map)) { + return (FALSE); + } + if (!xdr_keydat(xdrs, &objp->key)) { + return (FALSE); + } return (TRUE); } @@ -155,14 +155,14 @@ xdr_ypreq_nokey(xdrs, objp) ypreq_nokey *objp; { - register long *buf; + register long *buf; - if (!xdr_domainname(xdrs, &objp->domain)) { - return (FALSE); - } - if (!xdr_mapname(xdrs, &objp->map)) { - return (FALSE); - } + if (!xdr_domainname(xdrs, &objp->domain)) { + return (FALSE); + } + if (!xdr_mapname(xdrs, &objp->map)) { + return (FALSE); + } return (TRUE); } @@ -172,20 +172,20 @@ xdr_ypreq_xfr(xdrs, objp) ypreq_xfr *objp; { - register long *buf; - - if (!xdr_ypmap_parms(xdrs, &objp->map_parms)) { - return (FALSE); - } - if (!xdr_u_int(xdrs, &objp->transid)) { - return (FALSE); - } - if (!xdr_u_int(xdrs, &objp->prog)) { - return (FALSE); - } - if (!xdr_u_int(xdrs, &objp->port)) { - return (FALSE); - } + register long *buf; + + if (!xdr_ypmap_parms(xdrs, &objp->map_parms)) { + return (FALSE); + } + if (!xdr_u_int(xdrs, &objp->transid)) { + return (FALSE); + } + if (!xdr_u_int(xdrs, &objp->prog)) { + return (FALSE); + } + if (!xdr_u_int(xdrs, &objp->port)) { + return (FALSE); + } return (TRUE); } @@ -195,14 +195,14 @@ xdr_ypresp_val(xdrs, objp) ypresp_val *objp; { - register long *buf; + register long *buf; - if (!xdr_ypstat(xdrs, &objp->stat)) { - return (FALSE); - } - if (!xdr_valdat(xdrs, &objp->val)) { - return (FALSE); - } + if (!xdr_ypstat(xdrs, &objp->stat)) { + return (FALSE); + } + if (!xdr_valdat(xdrs, &objp->val)) { + return (FALSE); + } return (TRUE); } @@ -212,17 +212,17 @@ xdr_ypresp_key_val(xdrs, objp) ypresp_key_val *objp; { - register long *buf; - - if (!xdr_ypstat(xdrs, &objp->stat)) { - return (FALSE); - } - if (!xdr_valdat(xdrs, &objp->val)) { - return (FALSE); - } - if (!xdr_keydat(xdrs, &objp->key)) { - return (FALSE); - } + register long *buf; + + if (!xdr_ypstat(xdrs, &objp->stat)) { + return (FALSE); + } + if (!xdr_valdat(xdrs, &objp->val)) { + return (FALSE); + } + if (!xdr_keydat(xdrs, &objp->key)) { + return (FALSE); + } return (TRUE); } @@ -232,14 +232,14 @@ xdr_ypresp_master(xdrs, objp) ypresp_master *objp; { - register long *buf; + register long *buf; - if (!xdr_ypstat(xdrs, &objp->stat)) { - return (FALSE); - } - if (!xdr_peername(xdrs, &objp->peer)) { - return (FALSE); - } + if (!xdr_ypstat(xdrs, &objp->stat)) { + return (FALSE); + } + if (!xdr_peername(xdrs, &objp->peer)) { + return (FALSE); + } return (TRUE); } @@ -249,14 +249,14 @@ xdr_ypresp_order(xdrs, objp) ypresp_order *objp; { - register long *buf; + register long *buf; - if (!xdr_ypstat(xdrs, &objp->stat)) { - return (FALSE); - } - if (!xdr_u_int(xdrs, &objp->ordernum)) { - return (FALSE); - } + if (!xdr_ypstat(xdrs, &objp->stat)) { + return (FALSE); + } + if (!xdr_u_int(xdrs, &objp->ordernum)) { + return (FALSE); + } return (TRUE); } @@ -266,16 +266,16 @@ xdr_ypresp_all(xdrs, objp) ypresp_all *objp; { - register long *buf; + register long *buf; - if (!xdr_bool(xdrs, &objp->more)) { - return (FALSE); - } + if (!xdr_bool(xdrs, &objp->more)) { + return (FALSE); + } switch (objp->more) { case TRUE: - if (!xdr_ypresp_key_val(xdrs, &objp->ypresp_all_u.val)) { - return (FALSE); - } + if (!xdr_ypresp_key_val(xdrs, &objp->ypresp_all_u.val)) { + return (FALSE); + } break; case FALSE: break; @@ -291,14 +291,14 @@ xdr_ypresp_xfr(xdrs, objp) ypresp_xfr *objp; { - register long *buf; + register long *buf; - if (!xdr_u_int(xdrs, &objp->transid)) { - return (FALSE); - } - if (!xdr_ypxfrstat(xdrs, &objp->xfrstat)) { - return (FALSE); - } + if (!xdr_u_int(xdrs, &objp->transid)) { + return (FALSE); + } + if (!xdr_ypxfrstat(xdrs, &objp->xfrstat)) { + return (FALSE); + } return (TRUE); } @@ -308,14 +308,14 @@ xdr_ypmaplist(xdrs, objp) ypmaplist *objp; { - register long *buf; + register long *buf; - if (!xdr_mapname(xdrs, &objp->map)) { - return (FALSE); - } - if (!xdr_pointer(xdrs, (char **)&objp->next, sizeof(ypmaplist), (xdrproc_t)xdr_ypmaplist)) { - return (FALSE); - } + if (!xdr_mapname(xdrs, &objp->map)) { + return (FALSE); + } + if (!xdr_pointer(xdrs, (char **)&objp->next, sizeof(ypmaplist), (xdrproc_t)xdr_ypmaplist)) { + return (FALSE); + } return (TRUE); } @@ -325,14 +325,14 @@ xdr_ypresp_maplist(xdrs, objp) ypresp_maplist *objp; { - register long *buf; + register long *buf; - if (!xdr_ypstat(xdrs, &objp->stat)) { - return (FALSE); - } - if (!xdr_pointer(xdrs, (char **)&objp->maps, sizeof(ypmaplist), (xdrproc_t)xdr_ypmaplist)) { - return (FALSE); - } + if (!xdr_ypstat(xdrs, &objp->stat)) { + return (FALSE); + } + if (!xdr_pointer(xdrs, (char **)&objp->maps, sizeof(ypmaplist), (xdrproc_t)xdr_ypmaplist)) { + return (FALSE); + } return (TRUE); } @@ -342,11 +342,11 @@ xdr_yppush_status(xdrs, objp) yppush_status *objp; { - register long *buf; + register long *buf; - if (!xdr_enum(xdrs, (enum_t *)objp)) { - return (FALSE); - } + if (!xdr_enum(xdrs, (enum_t *)objp)) { + return (FALSE); + } return (TRUE); } @@ -356,14 +356,14 @@ xdr_yppushresp_xfr(xdrs, objp) yppushresp_xfr *objp; { - register long *buf; + register long *buf; - if (!xdr_u_int(xdrs, &objp->transid)) { - return (FALSE); - } - if (!xdr_yppush_status(xdrs, &objp->status)) { - return (FALSE); - } + if (!xdr_u_int(xdrs, &objp->transid)) { + return (FALSE); + } + if (!xdr_yppush_status(xdrs, &objp->status)) { + return (FALSE); + } return (TRUE); } @@ -373,11 +373,11 @@ xdr_ypbind_resptype(xdrs, objp) ypbind_resptype *objp; { - register long *buf; + register long *buf; - if (!xdr_enum(xdrs, (enum_t *)objp)) { - return (FALSE); - } + if (!xdr_enum(xdrs, (enum_t *)objp)) { + return (FALSE); + } return (TRUE); } @@ -387,15 +387,14 @@ xdr_ypbind_binding(xdrs, objp) ypbind_binding *objp; { - register long *buf; + register long *buf; - int i; - if (!xdr_opaque(xdrs, objp->ypbind_binding_addr, 4)) { - return (FALSE); - } - if (!xdr_opaque(xdrs, objp->ypbind_binding_port, 2)) { - return (FALSE); - } + if (!xdr_opaque(xdrs, objp->ypbind_binding_addr, 4)) { + return (FALSE); + } + if (!xdr_opaque(xdrs, objp->ypbind_binding_port, 2)) { + return (FALSE); + } return (TRUE); } @@ -405,21 +404,21 @@ xdr_ypbind_resp(xdrs, objp) ypbind_resp *objp; { - register long *buf; + register long *buf; - if (!xdr_ypbind_resptype(xdrs, &objp->ypbind_status)) { - return (FALSE); - } + if (!xdr_ypbind_resptype(xdrs, &objp->ypbind_status)) { + return (FALSE); + } switch (objp->ypbind_status) { case YPBIND_FAIL_VAL: - if (!xdr_u_int(xdrs, &objp->ypbind_resp_u.ypbind_error)) { - return (FALSE); - } + if (!xdr_u_int(xdrs, &objp->ypbind_resp_u.ypbind_error)) { + return (FALSE); + } break; case YPBIND_SUCC_VAL: - if (!xdr_ypbind_binding(xdrs, &objp->ypbind_resp_u.ypbind_bindinfo)) { - return (FALSE); - } + if (!xdr_ypbind_binding(xdrs, &objp->ypbind_resp_u.ypbind_bindinfo)) { + return (FALSE); + } break; default: return (FALSE); @@ -433,16 +432,16 @@ xdr_ypbind_setdom(xdrs, objp) ypbind_setdom *objp; { - register long *buf; - - if (!xdr_domainname(xdrs, &objp->ypsetdom_domain)) { - return (FALSE); - } - if (!xdr_ypbind_binding(xdrs, &objp->ypsetdom_binding)) { - return (FALSE); - } - if (!xdr_u_int(xdrs, &objp->ypsetdom_vers)) { - return (FALSE); - } + register long *buf; + + if (!xdr_domainname(xdrs, &objp->ypsetdom_domain)) { + return (FALSE); + } + if (!xdr_ypbind_binding(xdrs, &objp->ypsetdom_binding)) { + return (FALSE); + } + if (!xdr_u_int(xdrs, &objp->ypsetdom_vers)) { + return (FALSE); + } return (TRUE); } diff --git a/usr.sbin/ypserv/ypserv/ypserv_xdr_v1.c b/usr.sbin/ypserv/ypserv/ypserv_xdr_v1.c index 68964cc7b02..97eec5d6a25 100644 --- a/usr.sbin/ypserv/ypserv/ypserv_xdr_v1.c +++ b/usr.sbin/ypserv/ypserv/ypserv_xdr_v1.c @@ -6,7 +6,7 @@ #include "yp.h" #include "ypv1.h" #ifndef lint -static char rcsid[] = "$OpenBSD: ypserv_xdr_v1.c,v 1.1 1997/03/30 20:51:22 maja Exp $"; +static char rcsid[] = "$OpenBSD: ypserv_xdr_v1.c,v 1.2 2001/11/19 09:03:07 deraadt Exp $"; #endif /* not lint */ bool_t @@ -14,12 +14,11 @@ xdr_ypreqtype(xdrs, objp) XDR *xdrs; ypreqtype *objp; { + register long *buf; - register long *buf; - - if (!xdr_enum(xdrs, (enum_t *)objp)) { - return (FALSE); - } + if (!xdr_enum(xdrs, (enum_t *)objp)) { + return (FALSE); + } return (TRUE); } @@ -28,12 +27,11 @@ xdr_ypresptype(xdrs, objp) XDR *xdrs; ypresptype *objp; { + register long *buf; - register long *buf; - - if (!xdr_enum(xdrs, (enum_t *)objp)) { - return (FALSE); - } + if (!xdr_enum(xdrs, (enum_t *)objp)) { + return (FALSE); + } return (TRUE); } @@ -67,7 +65,7 @@ xdr_yprequest(xdrs, objp) break; default: printf("error 5\n"); - return (FALSE); + return (FALSE); } return (TRUE); } @@ -77,7 +75,6 @@ xdr_ypresponse(xdrs, objp) XDR *xdrs; ypresponse *objp; { - register long *buf; if (!xdr_ypresptype(xdrs, &objp->yp_resptype)) { @@ -104,4 +101,3 @@ xdr_ypresponse(xdrs, objp) } return (TRUE); } - |