summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-nds/portmap/files/portmap-5b-loopback-only.patch')
-rw-r--r--net-nds/portmap/files/portmap-5b-loopback-only.patch62
1 files changed, 62 insertions, 0 deletions
diff --git a/net-nds/portmap/files/portmap-5b-loopback-only.patch b/net-nds/portmap/files/portmap-5b-loopback-only.patch
new file mode 100644
index 000000000000..4684319ce574
--- /dev/null
+++ b/net-nds/portmap/files/portmap-5b-loopback-only.patch
@@ -0,0 +1,62 @@
+diff -u portmap_5beta/pmap_check.c portmap_5beta_elros/pmap_check.c
+--- portmap_5beta/pmap_check.c 1996-07-07 10:49:10.000000000 +0200
++++ portmap_5beta_elros/pmap_check.c 2004-09-24 01:56:47.000000000 +0200
+@@ -63,6 +63,7 @@
+ static void logit();
+ static void toggle_verboselog();
+ int verboselog = 0;
++int listenonlyloopback = 0;
+ int allow_severity = LOG_INFO;
+ int deny_severity = LOG_WARNING;
+
+diff -u portmap_5beta/pmap_check.h portmap_5beta_elros/pmap_check.h
+--- portmap_5beta/pmap_check.h 1996-07-06 23:06:23.000000000 +0200
++++ portmap_5beta_elros/pmap_check.h 2004-09-24 01:55:24.000000000 +0200
+@@ -7,6 +7,7 @@
+ extern int check_privileged_port();
+ extern int check_callit();
+ extern int verboselog;
++extern int listenonlyloopback;
+ extern int allow_severity;
+ extern int deny_severity;
+
+diff -u portmap_5beta/portmap.c portmap_5beta_elros/portmap.c
+--- portmap_5beta/portmap.c 1996-07-06 23:06:24.000000000 +0200
++++ portmap_5beta_elros/portmap.c 2004-09-24 01:49:47.000000000 +0200
+@@ -158,7 +158,7 @@
+ int len = sizeof(struct sockaddr_in);
+ register struct pmaplist *pml;
+
+- while ((c = getopt(argc, argv, "dv")) != EOF) {
++ while ((c = getopt(argc, argv, "dvl")) != EOF) {
+ switch (c) {
+
+ case 'd':
+@@ -169,10 +169,15 @@
+ verboselog = 1;
+ break;
+
++ case 'l':
++ listenonlyloopback = 1;
++ break;
++
+ default:
+ (void) fprintf(stderr, "usage: %s [-dv]\n", argv[0]);
+ (void) fprintf(stderr, "-d: debugging mode\n");
+ (void) fprintf(stderr, "-v: verbose logging\n");
++ (void) fprintf(stderr, "-l: listen only on loopback address (not on external address)\n");
+ exit(1);
+ }
+ }
+@@ -201,6 +206,11 @@
+ addr.sin_addr.s_addr = 0;
+ addr.sin_family = AF_INET;
+ addr.sin_port = htons(PMAPPORT);
++
++ if (listenonlyloopback) {
++ addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
++ }
++
+ if (bind(sock, (struct sockaddr *)&addr, len) != 0) {
+ syslog(LOG_ERR, "cannot bind udp: %m");
+ exit(1);