diff -urN portmap_4/daemon.c portmap_4.new/daemon.c --- portmap_4/daemon.c Thu Jun 11 13:53:12 1992 +++ portmap_4.new/daemon.c Mon Nov 29 18:37:28 1999 @@ -35,7 +35,9 @@ static char sccsid[] = "@(#)daemon.c 5.3 (Berkeley) 12/28/90"; #endif /* LIBC_SCCS and not lint */ +#include #include +#include /* From unistd.h */ #define STDIN_FILENO 0 @@ -44,7 +46,7 @@ /* From paths.h */ #define _PATH_DEVNULL "/dev/null" - +int daemon(nochdir, noclose) int nochdir, noclose; { diff -urN portmap_4/from_local.c portmap_4.new/from_local.c --- portmap_4/from_local.c Fri May 31 06:52:58 1996 +++ portmap_4.new/from_local.c Tue Nov 30 01:21:27 1999 @@ -46,12 +46,14 @@ #include #include #include -#include +#include #include #include #include #include #include +#include +#include #ifndef TRUE #define TRUE 1 @@ -95,7 +98,7 @@ } /* find_local - find all IP addresses for this host */ - +int find_local() { struct ifconf ifc; @@ -153,7 +156,7 @@ } /* from_local - determine whether request comes from the local system */ - +int from_local(addr) struct sockaddr_in *addr; { diff -urN portmap_4/pmap_check.c portmap_4.new/pmap_check.c --- portmap_4/pmap_check.c Sun Nov 21 11:59:01 1993 +++ portmap_4.new/pmap_check.c Tue Nov 30 01:19:37 1999 @@ -34,7 +34,7 @@ #ifndef lint static char sccsid[] = "@(#) pmap_check.c 1.6 93/11/21 20:58:59"; #endif - +#include #include #include #include @@ -66,6 +66,9 @@ /* A handful of macros for "readability". */ +/* coming from libwrap.a (tcp_wrappers) */ +extern int hosts_ctl(char *daemon, char *name, char *addr, char *user); + #define good_client(a) hosts_ctl("portmap", "", inet_ntoa(a->sin_addr), "") #define legal_port(a,p) \ @@ -104,6 +107,7 @@ /* check_default - additional checks for NULL, DUMP, GETPORT and unknown */ +int check_default(addr, proc, prog) struct sockaddr_in *addr; u_long proc; @@ -121,7 +125,7 @@ } /* check_privileged_port - additional checks for privileged-port updates */ - +int check_privileged_port(addr, proc, prog, port) struct sockaddr_in *addr; u_long proc; @@ -147,6 +147,6 @@ #ifdef LOOPBACK_SETUNSET - +int check_setunset(xprt, ludp_xprt, ltcp_xprt, proc, prog, port) SVCXPRT *xprt; SVCXPRT *ludp_xprt; @@ -173,6 +174,6 @@ #else - +int check_setunset(addr, proc, prog, port) struct sockaddr_in *addr; u_long proc; @@ -160,7 +164,7 @@ } /* check_callit - additional checks for forwarded requests */ - +int check_callit(addr, proc, prog, aproc) struct sockaddr_in *addr; u_long proc; @@ -213,13 +217,13 @@ }; struct proc_map *procp; static struct proc_map procmap[] = { - PMAPPROC_CALLIT, "callit", - PMAPPROC_DUMP, "dump", - PMAPPROC_GETPORT, "getport", - PMAPPROC_NULL, "null", - PMAPPROC_SET, "set", - PMAPPROC_UNSET, "unset", - 0, 0, + { PMAPPROC_CALLIT, "callit"}, + { PMAPPROC_DUMP, "dump"}, + { PMAPPROC_GETPORT, "getport"}, + { PMAPPROC_NULL, "null"}, + { PMAPPROC_SET, "set"}, + { PMAPPROC_UNSET, "unset"}, + { 0, 0}, }; /* @@ -233,7 +237,7 @@ if (prognum == 0) { progname = ""; - } else if (rpc = getrpcbynumber((int) prognum)) { + } else if ((rpc = getrpcbynumber((int) prognum))) { progname = rpc->r_name; } else { sprintf(progname = progbuf, "%lu", prognum); diff -urN portmap_4/pmap_dump.c portmap_4.new/pmap_dump.c --- portmap_4/pmap_dump.c Thu Jun 11 13:53:16 1992 +++ portmap_4.new/pmap_dump.c Tue Nov 30 01:22:07 1999 @@ -22,7 +22,7 @@ #include static char *protoname(); - +int main(argc, argv) int argc; char **argv; diff -urN portmap_4/pmap_set.c portmap_4.new/pmap_set.c --- portmap_4/pmap_set.c Thu Jun 11 13:53:17 1992 +++ portmap_4.new/pmap_set.c Tue Nov 30 01:23:49 1999 @@ -17,6 +17,9 @@ #include #include +int parse_line(char *buf, u_long *, u_long *, int *, unsigned *); + +int main(argc, argv) int argc; char **argv; @@ -42,7 +45,7 @@ } /* parse_line - convert line to numbers */ - +int parse_line(buf, prog, vers, prot, port) char *buf; u_long *prog; diff -urN portmap_4/portmap.c portmap_4.new/portmap.c --- portmap_4/portmap.c Fri May 31 06:52:59 1996 +++ portmap_4.new/portmap.c Tue Nov 30 01:01:32 1999 @@ -83,6 +83,7 @@ #include #include #include +#include #include #include #include @@ -128,6 +129,7 @@ #include "pmap_check.h" +int main(argc, argv) int argc; char **argv; @@ -229,6 +231,7 @@ svc_run(); syslog(LOG_ERR, "run_svc returned unexpectedly"); abort(); + /* never reached */ } #ifndef lint @@ -290,7 +293,7 @@ */ /* remote host authorization check */ check_default(svc_getcaller(xprt), rqstp->rq_proc, (u_long) 0); - if (!svc_sendreply(xprt, xdr_void, (caddr_t)0) && debugging) { + if (!svc_sendreply(xprt, (xdrproc_t)xdr_void, (caddr_t)0) && debugging) { abort(); } break; @@ -299,7 +302,7 @@ /* * Set a program,version to port mapping */ - if (!svc_getargs(xprt, xdr_pmap, ®)) + if (!svc_getargs(xprt, (xdrproc_t)xdr_pmap, (caddr_t)®)) svcerr_decode(xprt); else { /* reject non-local requests, protect priv. ports */ @@ -341,7 +344,7 @@ ans = 1; } done: - if ((!svc_sendreply(xprt, xdr_int, (caddr_t)&ans)) && + if ((!svc_sendreply(xprt, (xdrproc_t)xdr_int, (caddr_t)&ans)) && debugging) { (void) fprintf(stderr, "svc_sendreply\n"); abort(); @@ -353,7 +356,7 @@ /* * Remove a program,version to port mapping. */ - if (!svc_getargs(xprt, xdr_pmap, ®)) + if (!svc_getargs(xprt, (xdrproc_t)xdr_pmap, (caddr_t)®)) svcerr_decode(xprt); else { ans = 0; @@ -387,7 +390,7 @@ prevpml->pml_next = pml; free(t); } - if ((!svc_sendreply(xprt, xdr_int, (caddr_t)&ans)) && + if ((!svc_sendreply(xprt, (xdrproc_t)xdr_int, (caddr_t)&ans)) && debugging) { (void) fprintf(stderr, "svc_sendreply\n"); abort(); @@ -399,7 +402,7 @@ /* * Lookup the mapping for a program,version and return its port */ - if (!svc_getargs(xprt, xdr_pmap, ®)) + if (!svc_getargs(xprt, (xdrproc_t)xdr_pmap, (caddr_t)®)) svcerr_decode(xprt); else { /* remote host authorization check */ @@ -414,7 +417,7 @@ port = fnd->pml_map.pm_port; else port = 0; - if ((!svc_sendreply(xprt, xdr_int, (caddr_t)&port)) && + if ((!svc_sendreply(xprt, (xdrproc_t)xdr_int, (caddr_t)&port)) && debugging) { (void) fprintf(stderr, "svc_sendreply\n"); abort(); @@ -426,7 +429,7 @@ /* * Return the current set of mapped program,version */ - if (!svc_getargs(xprt, xdr_void, NULL)) + if (!svc_getargs(xprt, (xdrproc_t)xdr_void, NULL)) svcerr_decode(xprt); else { /* remote host authorization check */ @@ -437,7 +440,7 @@ } else { p = pmaplist; } - if ((!svc_sendreply(xprt, xdr_pmaplist, + if ((!svc_sendreply(xprt, (xdrproc_t)xdr_pmaplist, (caddr_t)&p)) && debugging) { (void) fprintf(stderr, "svc_sendreply\n"); abort(); @@ -481,7 +484,7 @@ struct encap_parms *epp; { - return (xdr_bytes(xdrs, &(epp->args), &(epp->arglen), ARGSIZE)); + return (xdr_bytes(xdrs, &(epp->args), (u_int *)&(epp->arglen), ARGSIZE)); } struct rmtcallargs { @@ -585,7 +588,7 @@ timeout.tv_sec = 5; timeout.tv_usec = 0; a.rmt_args.args = buf; - if (!svc_getargs(xprt, xdr_rmtcall_args, &a)) + if (!svc_getargs(xprt, (xdrproc_t)xdr_rmtcall_args, (caddr_t)&a)) return; /* host and service access control */ if (!check_callit(svc_getcaller(xprt), @@ -614,9 +617,9 @@ au->aup_uid, au->aup_gid, au->aup_len, au->aup_gids); } a.rmt_port = (u_long)port; - if (clnt_call(client, a.rmt_proc, xdr_opaque_parms, &a, - xdr_len_opaque_parms, &a, timeout) == RPC_SUCCESS) { - svc_sendreply(xprt, xdr_rmtcall_result, (caddr_t)&a); + if (clnt_call(client, a.rmt_proc, (xdrproc_t)xdr_opaque_parms, (caddr_t)&a, + (xdrproc_t)xdr_len_opaque_parms, (caddr_t)&a, timeout) == RPC_SUCCESS) { + svc_sendreply(xprt, (xdrproc_t)xdr_rmtcall_result, (caddr_t)&a); } AUTH_DESTROY(client->cl_auth); clnt_destroy(client); +--------------------------------------------------------------------+ | Ste'phane ERANIAN | Email eranian@hpl.hp.com | | Hewlett-Packard Laboratories | | | 1501, Page Mill Road MS 1U-15 | | | Palo Alto, CA 94303-096 | | | USA | | | Tel : (650) 857-7174 | | | Fax : (650) 857-5548 | | +--------------------------------------------------------------------+