diff options
Diffstat (limited to 'core/tcp_wrappers/02_all_redhat-bug17795.patch')
-rw-r--r-- | core/tcp_wrappers/02_all_redhat-bug17795.patch | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/core/tcp_wrappers/02_all_redhat-bug17795.patch b/core/tcp_wrappers/02_all_redhat-bug17795.patch new file mode 100644 index 000000000..ff0ec455b --- /dev/null +++ b/core/tcp_wrappers/02_all_redhat-bug17795.patch @@ -0,0 +1,49 @@ +--- hosts_access.c Wed Feb 12 03:13:23 1997 ++++ hosts_access.c Wed Jul 19 08:37:02 2000 +@@ -240,6 +255,26 @@ + } + } + ++/* hostfile_match - look up host patterns from file */ ++ ++static int hostfile_match(path, host) ++char *path; ++struct hosts_info *host; ++{ ++ char tok[BUFSIZ]; ++ int match = NO; ++ FILE *fp; ++ ++ if ((fp = fopen(path, "r")) != 0) { ++ while (fscanf(fp, "%s", tok) == 1 && !(match = host_match(tok, host))) ++ /* void */ ; ++ fclose(fp); ++ } else if (errno != ENOENT) { ++ tcpd_warn("open %s: %m", path); ++ } ++ return (match); ++} ++ + /* host_match - match host name and/or address against pattern */ + + static int host_match(tok, host) +@@ -267,6 +302,8 @@ + tcpd_warn("netgroup support is disabled"); /* not tcpd_jump() */ + return (NO); + #endif ++ } else if (tok[0] == '/') { /* /file hack */ ++ return (hostfile_match(tok, host)); + } else if (STR_EQ(tok, "KNOWN")) { /* check address and name */ + char *name = eval_hostname(host); + return (STR_NE(eval_hostaddr(host), unknown) && HOSTNAME_KNOWN(name)); +--- hosts_access.5 2003-08-03 19:09:56.000000000 +0000 ++++ hosts_access.5 2003-08-03 19:13:32.000000000 +0000 +@@ -91,0 +92,7 @@ ++.IP \(bu ++A string that begins with a `/\' character is treated as a file ++name. A host name or address is matched if it matches any host name ++or address pattern listed in the named file. The file format is ++zero or more lines with zero or more host name or address patterns ++separated by whitespace. A file name pattern can be used anywhere ++a host name or address pattern can be used. + |