Commit 2f152f6d authored by Gustavo Zacarias's avatar Gustavo Zacarias Committed by Peter Korsgaard
Browse files

portmap: bump to version 6.0, convert to autotargets



[Peter: fix uninstall target]
Signed-off-by: default avatarGustavo Zacarias <gustavo@zacarias.com.ar>
Signed-off-by: default avatarPeter Korsgaard <jacmet@sunsite.dk>
parent 268ab3c9
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -40,14 +40,14 @@
	logrotate, m4, mdadm, mesa3d, metacity, mplayer, mtd-utils,
	mysql_client, nano, nbd, ncftp, neon, netperf, netsnmp,
	ng-spice-rework, ntfsprogs, ntp, openntpd, openssh, openssl,
	openvpn, oprofile, pango, patch, pcre, php, pkg-config, pppd,
	prboom, radvd, rdesktop, readline, ruby, qt, quagga, samba,
	sawman, sdl_mixer, sdl_sound, setserial, shared-mime-info,
	speex, sqlite, squashfs, startup-notification, strace,
	sylpheed, taglib, tcpdump, thttpd, tiff, tn5250, torsmo, udev,
	udpcast, usbmount, usbutils, vsftpd, vtun, which,
	wpa_supplicant, xapp_twm, xapp_xbacklight, xapp_xcursorgen,
	xapp_xinput, xapp_xmore,
	openvpn, oprofile, pango, patch, pcre, php, pkg-config,
	portmap, pppd, prboom, radvd, rdesktop, readline, ruby, qt,
	quagga, samba, sawman, sdl_mixer, sdl_sound, setserial,
	shared-mime-info, speex, sqlite, squashfs,
	startup-notification, strace, sylpheed, taglib, tcpdump,
	thttpd, tiff, tn5250, torsmo, udev, udpcast, usbmount,
	usbutils, vsftpd, vtun, which, wpa_supplicant, xapp_twm,
	xapp_xbacklight, xapp_xcursorgen, xapp_xinput, xapp_xmore,
	xdriver_xf86-input-{acecad,aiptek,evdev,joystick,keyboard},
	xdriver-xf86-input-{mouse,synaptics,vmmouse,void},
	xdriver-xf86-video-{apm,ark,ast,ati,chips,cirrus,dummy,fbdev},
+1 −1
Original line number Diff line number Diff line
@@ -4,7 +4,7 @@ config BR2_PACKAGE_PORTMAP
	help
	  The standard portmapper for RPC services.

	  ftp://ftp.porcupine.org/pub/security/index.html
	  http://neil.brown.name/portmap/

comment "portmap requires a toolchain with 'Enable RPC' selected"
	depends on !BR2_INET_RPC
+0 −80
Original line number Diff line number Diff line
--- p/from_local.c
+++ p/from_local.c	2000/02/28 15:10:25
@@ -46,6 +46,7 @@
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <stdio.h>
+#include <stdlib.h>
 #include <netdb.h>
 #include <netinet/in.h>
 #include <net/if.h>
--- p/Makefile
+++ p/Makefile	2000/02/28 15:10:25
@@ -8,7 +8,7 @@
 # if you disagree. See `man 3 syslog' for examples. Some syslog versions
 # do not provide this flexibility.
 #
-FACILITY=LOG_MAIL
+FACILITY=LOG_AUTH
 
 # To disable tcp-wrapper style access control, comment out the following
 # macro definitions.  Access control can also be turned off by providing
@@ -71,7 +71,7 @@
 # With verbose logging on, HP-UX 9.x and AIX 4.1 leave zombies behind when
 # SIGCHLD is not ignored. Enable next macro for a fix.
 #
-# ZOMBIES = -DIGNORE_SIGCHLD	# AIX 4.x, HP-UX 9.x
+ZOMBIES = -DIGNORE_SIGCHLD	# AIX 4.x, HP-UX 9.x
 
 # Uncomment the following macro if your system does not have u_long.
 #
@@ -81,11 +81,15 @@
 # libwrap.a object library. WRAP_DIR should specify the directory with
 # that library.
 
-WRAP_DIR= ../tcp_wrappers
+WRAP_DIR= /usr/lib
 
 # Auxiliary object files that may be missing from your C library.
 #
-AUX	= daemon.o strerror.o
+AUX	= # daemon.o strerror.o
+
+LIBS	= -lwrap -lutil
+NSARCHS	= 
+O	= -Wall -O2 -pipe
 
 # NEXTSTEP is a little different. The following seems to work with NS 3.2
 #
@@ -99,7 +103,7 @@
 
 # Comment out if your compiler talks ANSI and understands const
 #
-CONST   = -Dconst=
+#CONST   = -Dconst=
 
 ### End of configurable stuff.
 ##############################
@@ -109,7 +113,7 @@
 COPT	= $(CONST) -Dperror=xperror $(HOSTS_ACCESS) $(CHECK_PORT) \
 	$(SYS) -DFACILITY=$(FACILITY) $(ULONG) $(ZOMBIES) $(SA_LEN) \
 	$(LOOPBACK) $(SETPGRP)
-CFLAGS	= $(COPT) -O $(NSARCHS)
+CFLAGS	= $(COPT) $(O) $(NSARCHS)
 OBJECTS	= portmap.o pmap_check.o from_local.o $(AUX)
 
 all:	portmap pmap_dump pmap_set
--- p/portmap.c
+++ p/portmap.c	2000/02/28 15:10:25
@@ -182,9 +182,8 @@
 		exit(1);
 	}
 
-#ifdef LOG_MAIL
-	openlog("portmap", debugging ? LOG_PID | LOG_PERROR : LOG_PID,
-	    FACILITY);
+#ifdef FACILITY
+	openlog("portmap", debugging ? LOG_PID | LOG_PERROR : LOG_PID, FACILITY);
 #else
 	openlog("portmap", debugging ? LOG_PID | LOG_PERROR : LOG_PID);
 #endif
+0 −338
Original line number Diff line number Diff line
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, &reg))
+		if (!svc_getargs(xprt, (xdrproc_t)xdr_pmap, (caddr_t)&reg))
 			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, &reg))
+		if (!svc_getargs(xprt, (xdrproc_t)xdr_pmap, (caddr_t)&reg))
 			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, &reg))
+		if (!svc_getargs(xprt, (xdrproc_t)xdr_pmap, (caddr_t)&reg))
 			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                    |                          |
+--------------------------------------------------------------------+

+0 −85
Original line number Diff line number Diff line
Some cleanup for my last patch.


-- 
H.J. Lu (hjl@gnu.org)
--
--- portmap_4/pmap_check.c.hostname	Wed May 10 10:23:35 2000
+++ portmap_4/pmap_check.c	Wed May 10 11:03:22 2000
@@ -35,6 +35,7 @@
 static char sccsid[] = "@(#) pmap_check.c 1.6 93/11/21 20:58:59";
 #endif
 #include <unistd.h>
+#include <string.h>
 #include <rpc/rpc.h>
 #include <rpc/pmap_prot.h>
 #include <syslog.h>
@@ -69,8 +70,6 @@ int     deny_severity = LOG_WARNING;
 /* 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 reserved_port(p) (IPPORT_RESERVED/2 < (p) && (p) < IPPORT_RESERVED)
 
 #define unreserved_port(p) (IPPORT_RESERVED <= (p) && (p) != NFS_PORT)
@@ -88,6 +87,59 @@ extern int hosts_ctl(char *daemon, char 
 
 #define log_client(addr, proc, prog) \
   logit(allow_severity, addr, proc, prog, "")
+
+#ifdef HOSTS_ACCESS
+static int
+good_client(addr)
+struct sockaddr_in *addr;
+{
+    struct hostent *hp;
+    char **sp;
+    char *tmpname;
+
+    /* Check the IP address first. */
+    if (hosts_ctl("portmap", "", inet_ntoa(addr->sin_addr), ""))
+	return 1;
+
+    /* Check the hostname. */
+    hp = gethostbyaddr ((const char *) &(addr->sin_addr),
+			sizeof (addr->sin_addr), AF_INET);
+
+    if (!hp)
+	return 0;
+
+    /* must make sure the hostent is authorative. */
+    tmpname = alloca (strlen (hp->h_name) + 1);
+    strcpy (tmpname, hp->h_name);
+    hp = gethostbyname(tmpname);
+    if (hp) {
+	/* now make sure the "addr->sin_addr" is on the list */
+	for (sp = hp->h_addr_list ; *sp ; sp++) {
+	    if (memcmp(*sp, &(addr->sin_addr), hp->h_length)==0)
+		break;
+	}
+	if (!*sp)
+	    /* it was a FAKE. */
+	    return 0;
+    }
+    else
+	   /* never heard of it. misconfigured DNS? */
+	   return 0;
+
+   /* Check the official name first. */
+   if (hosts_ctl("portmap", "", hp->h_name, ""))
+	return 1;
+
+   /* Check aliases. */
+   for (sp = hp->h_aliases; *sp ; sp++) {
+	if (hosts_ctl("portmap", "", *sp, ""))
+	    return 1;
+   }
+
+   /* No match */
+   return 0;
+}
+#endif
 
 /* check_startup - additional startup code */
 
Loading