| 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 <sys/types.h> |
| #include <fcntl.h> |
| +#include <unistd.h> |
| |
| /* 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 <sys/types.h> |
| #include <sys/socket.h> |
| #include <stdio.h> |
| -#include <stdlib.h> |
| +#include <unistd.h> |
| #include <netdb.h> |
| #include <netinet/in.h> |
| #include <net/if.h> |
| #include <sys/ioctl.h> |
| #include <syslog.h> |
| +#include <stdlib.h> |
| +#include <string.h> |
| |
| #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 <unistd.h> |
| #include <rpc/rpc.h> |
| #include <rpc/pmap_prot.h> |
| #include <syslog.h> |
| @@ -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 <rpc/pmap_prot.h> |
| |
| 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 <rpc/rpc.h> |
| #include <rpc/pmap_clnt.h> |
| |
| +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 <rpc/rpc.h> |
| #include <rpc/pmap_prot.h> |
| #include <stdio.h> |
| +#include <unistd.h> |
| #include <syslog.h> |
| #include <netdb.h> |
| #include <sys/socket.h> |
| @@ -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 | | |
| +--------------------------------------------------------------------+ |
| |
| |