📄 portmap-4.0-cleanup.patch
字号:
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 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -