From 8f3732fde0e3d26ed8984f5943a0f092dc674d5d Mon Sep 17 00:00:00 2001 From: overweight <5324761+overweight@user.noreply.gitee.com> Date: Mon, 30 Sep 2019 11:18:14 -0400 Subject: [PATCH] Package init --- 15_match_clarify.patch | 14 + man_fromhost.patch | 23 + tcp_wrappers-7.6-162412.patch | 12 + tcp_wrappers-7.6-196326.patch | 13 + tcp_wrappers-7.6-220015.patch | 88 ++++ tcp_wrappers-7.6-aclexec.patch | 158 +++++++ tcp_wrappers-7.6-altformat.patch | 33 ++ tcp_wrappers-7.6-bug11881.patch | 37 ++ tcp_wrappers-7.6-bug17795.patch | 56 +++ tcp_wrappers-7.6-bug17847.patch | 102 ++++ tcp_wrappers-7.6-bug698464.patch | 69 +++ tcp_wrappers-7.6-docu.patch | 12 + tcp_wrappers-7.6-fix_sig-bug141110.patch | 21 + tcp_wrappers-7.6-fixgethostbyname.patch | 27 ++ tcp_wrappers-7.6-inetdconf.patch | 79 ++++ tcp_wrappers-7.6-initgroups.patch | 62 +++ tcp_wrappers-7.6-ldflags.patch | 42 ++ tcp_wrappers-7.6-man.patch | 71 +++ tcp_wrappers-7.6-shared.patch | 267 +++++++++++ tcp_wrappers-7.6-sig.patch | 40 ++ tcp_wrappers-7.6-sigchld.patch | 88 ++++ tcp_wrappers-7.6-siglongjmp.patch | 30 ++ tcp_wrappers-7.6-uchart_fix.patch | 21 + tcp_wrappers-7.6-warnings.patch | 568 +++++++++++++++++++++++ tcp_wrappers-7.6-xgets.patch | 49 ++ tcp_wrappers.spec | 124 +++++ tcp_wrappers.usagi-ipv6.patch | 271 +++++++++++ tcp_wrappers_7.6-249430.patch | 14 + tcp_wrappers_7.6-ipv6.4.tar.gz | Bin 0 -> 138700 bytes tcpdchk_libwrapped.patch | 41 ++ tcpw7.2-config.patch | 94 ++++ tcpw7.2-setenv.patch | 12 + tcpw7.6-netgroup.patch | 14 + 33 files changed, 2552 insertions(+) create mode 100755 15_match_clarify.patch create mode 100755 man_fromhost.patch create mode 100644 tcp_wrappers-7.6-162412.patch create mode 100644 tcp_wrappers-7.6-196326.patch create mode 100644 tcp_wrappers-7.6-220015.patch create mode 100644 tcp_wrappers-7.6-aclexec.patch create mode 100644 tcp_wrappers-7.6-altformat.patch create mode 100644 tcp_wrappers-7.6-bug11881.patch create mode 100644 tcp_wrappers-7.6-bug17795.patch create mode 100644 tcp_wrappers-7.6-bug17847.patch create mode 100644 tcp_wrappers-7.6-bug698464.patch create mode 100644 tcp_wrappers-7.6-docu.patch create mode 100644 tcp_wrappers-7.6-fix_sig-bug141110.patch create mode 100644 tcp_wrappers-7.6-fixgethostbyname.patch create mode 100644 tcp_wrappers-7.6-inetdconf.patch create mode 100644 tcp_wrappers-7.6-initgroups.patch create mode 100644 tcp_wrappers-7.6-ldflags.patch create mode 100644 tcp_wrappers-7.6-man.patch create mode 100644 tcp_wrappers-7.6-shared.patch create mode 100644 tcp_wrappers-7.6-sig.patch create mode 100644 tcp_wrappers-7.6-sigchld.patch create mode 100644 tcp_wrappers-7.6-siglongjmp.patch create mode 100644 tcp_wrappers-7.6-uchart_fix.patch create mode 100644 tcp_wrappers-7.6-warnings.patch create mode 100644 tcp_wrappers-7.6-xgets.patch create mode 100644 tcp_wrappers.spec create mode 100644 tcp_wrappers.usagi-ipv6.patch create mode 100644 tcp_wrappers_7.6-249430.patch create mode 100644 tcp_wrappers_7.6-ipv6.4.tar.gz create mode 100755 tcpdchk_libwrapped.patch create mode 100644 tcpw7.2-config.patch create mode 100644 tcpw7.2-setenv.patch create mode 100644 tcpw7.6-netgroup.patch diff --git a/15_match_clarify.patch b/15_match_clarify.patch new file mode 100755 index 0000000..f386f6c --- /dev/null +++ b/15_match_clarify.patch @@ -0,0 +1,14 @@ +Upstream-Status: Backport + +diff -ruN tcp_wrappers_7.6.orig/hosts_access.5 tcp_wrappers_7.6/hosts_access.5 +--- tcp_wrappers_7.6.orig/hosts_access.5 2004-04-25 12:17:59.000000000 +0200 ++++ tcp_wrappers_7.6/hosts_access.5 2004-04-25 12:17:53.000000000 +0200 +@@ -89,6 +89,8 @@ + bitwise AND of the address and the `mask\'. For example, the net/mask + pattern `131.155.72.0/255.255.254.0\' matches every address in the + range `131.155.72.0\' through `131.155.73.255\'. ++`255.255.255.255\' is not a valid mask value, so a single host can be ++matched just by its IP. + .IP \(bu + An expression of the form `n.n.n.n/m\' is interpreted as a + `net/prefixlen\' pair, as below, for IPv4 addresses. diff --git a/man_fromhost.patch b/man_fromhost.patch new file mode 100755 index 0000000..19bd7d3 --- /dev/null +++ b/man_fromhost.patch @@ -0,0 +1,23 @@ +Upstream-Status: Backport + +diff -ruN tcp_wrappers_7.6.orig/hosts_access.3 tcp_wrappers_7.6/hosts_access.3 +--- tcp_wrappers_7.6.orig/hosts_access.3 2004-04-25 00:10:48.000000000 +0200 ++++ tcp_wrappers_7.6/hosts_access.3 2004-04-25 00:09:36.000000000 +0200 +@@ -14,6 +14,9 @@ + struct request_info *request_set(request, key, value, ..., 0) + struct request_info *request; + ++void fromhost(request) ++struct request_info *request; ++ + int hosts_access(request) + struct request_info *request; + +@@ -60,6 +63,7 @@ + is available, host names and client user names are looked up on demand, + using the request structure as a cache. hosts_access() returns zero if + access should be denied. ++fromhost() must be called before hosts_access(). + .PP + hosts_ctl() is a wrapper around the request_init() and hosts_access() + routines with a perhaps more convenient interface (though it does not diff --git a/tcp_wrappers-7.6-162412.patch b/tcp_wrappers-7.6-162412.patch new file mode 100644 index 0000000..5f19db5 --- /dev/null +++ b/tcp_wrappers-7.6-162412.patch @@ -0,0 +1,12 @@ +diff -up tcp_wrappers_7.6/inetcf.c.patch16 tcp_wrappers_7.6/inetcf.c +--- tcp_wrappers_7.6/inetcf.c.patch16 2008-08-29 09:45:12.000000000 +0200 ++++ tcp_wrappers_7.6/inetcf.c 2008-08-29 09:45:12.000000000 +0200 +@@ -61,7 +61,7 @@ char *inet_cfg(conf) + char *conf; + { + char buf[BUFSIZ]; +- FILE *fp; ++ FILE *fp = NULL; + char *service; + char *protocol; + char *user; diff --git a/tcp_wrappers-7.6-196326.patch b/tcp_wrappers-7.6-196326.patch new file mode 100644 index 0000000..bd98250 --- /dev/null +++ b/tcp_wrappers-7.6-196326.patch @@ -0,0 +1,13 @@ +diff -up tcp_wrappers_7.6/hosts_access.c.patch21 tcp_wrappers_7.6/hosts_access.c +--- tcp_wrappers_7.6/hosts_access.c.patch21 2008-08-29 09:45:12.000000000 +0200 ++++ tcp_wrappers_7.6/hosts_access.c 2008-08-29 09:45:12.000000000 +0200 +@@ -391,6 +391,9 @@ char *string; + return (STR_NE(string, unknown)); + } else if (tok[(n = strlen(tok)) - 1] == '.') { /* prefix */ + return (STRN_EQ(tok, string, n)); ++ } else if ((STR_EQ(tok, "localhost") || STR_EQ(tok, "localhost.localdomain")) ++ && (STR_EQ(string, "localhost") || STR_EQ(string, "localhost.localdomain"))) { ++ return (YES); /* these localhosts are equivalent */ + } else { /* exact match */ + return (STR_EQ(tok, string)); + } diff --git a/tcp_wrappers-7.6-220015.patch b/tcp_wrappers-7.6-220015.patch new file mode 100644 index 0000000..77f5d07 --- /dev/null +++ b/tcp_wrappers-7.6-220015.patch @@ -0,0 +1,88 @@ +diff -up tcp_wrappers_7.6/hosts_ctl.c.patch17 tcp_wrappers_7.6/hosts_ctl.c +--- tcp_wrappers_7.6/hosts_ctl.c.patch17 1994-12-28 17:42:28.000000000 +0100 ++++ tcp_wrappers_7.6/hosts_ctl.c 2008-08-29 09:45:12.000000000 +0200 +@@ -29,10 +29,12 @@ char *user; + { + struct request_info request; + +- return (hosts_access(request_init(&request, +- RQ_DAEMON, daemon, +- RQ_CLIENT_NAME, name, +- RQ_CLIENT_ADDR, addr, +- RQ_USER, user, +- 0))); ++ request_init(&request, RQ_DAEMON, daemon, ++ RQ_CLIENT_NAME, name, ++ RQ_CLIENT_ADDR, addr, ++ RQ_USER, user, ++ 0); ++ sock_hostnofd(&request); ++ ++ return (hosts_access(&request)); + } +diff -up tcp_wrappers_7.6/socket.c.patch17 tcp_wrappers_7.6/socket.c +--- tcp_wrappers_7.6/socket.c.patch17 2008-08-29 09:45:12.000000000 +0200 ++++ tcp_wrappers_7.6/socket.c 2008-08-29 09:45:12.000000000 +0200 +@@ -130,6 +130,51 @@ struct request_info *request; + request->server->sin = &server; + } + ++/* sock_hostnofd - look up endpoint addresses and install conversion methods */ ++ ++void sock_hostnofd(request) ++struct request_info *request; ++{ ++ static struct sockaddr_storage client; ++ struct addrinfo hints, *res; ++ int ret; ++ char *host; ++ ++ /* If the address field is non-empty and non-unknown and if the hostname ++ * field is empty or unknown, use the address field to get the sockaddr ++ * and hostname. */ ++ if (strlen(request->client->addr) && ++ HOSTNAME_KNOWN(request->client->addr) && ++ (!strlen(request->client->name) || ++ !HOSTNAME_KNOWN(request->client->name))) ++ host = request->client->addr; ++ else ++ return; ++ ++ memset(&hints, 0, sizeof(hints)); ++ hints.ai_family = AF_INET6; ++ hints.ai_socktype = SOCK_STREAM; ++ hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST; ++ ++ ret = getaddrinfo(host, NULL, &hints, &res); ++ if (ret != 0) { ++ hints.ai_family = AF_INET; ++ ret = getaddrinfo(host, NULL, &hints, &res); ++ } ++ ++ if (ret != 0) { ++ tcpd_warn("can't resolve hostname (%s): %s", host, gai_strerror(ret)); ++ } else { ++ sock_methods(request); ++ ++ memcpy(&client, res->ai_addr, res->ai_addrlen); ++ request->client->sin = (struct sockaddr *)&client; ++ freeaddrinfo(res); ++ ++ request->client->name[0] = 0; ++ } ++} ++ + /* sock_hostaddr - map endpoint address to printable form */ + + void sock_hostaddr(host) +diff -up tcp_wrappers_7.6/tcpd.h.patch17 tcp_wrappers_7.6/tcpd.h +--- tcp_wrappers_7.6/tcpd.h.patch17 2008-08-29 09:45:12.000000000 +0200 ++++ tcp_wrappers_7.6/tcpd.h 2008-08-29 09:45:12.000000000 +0200 +@@ -167,6 +167,7 @@ extern char *eval_server __P((struct req + + /* look up endpoint addresses */ + extern void sock_host __P((struct request_info *)); ++extern void sock_hostnofd __P((struct request_info *)); + /* translate address to hostname */ + extern void sock_hostname __P((struct host_info *)); + /* address to printable address */ diff --git a/tcp_wrappers-7.6-aclexec.patch b/tcp_wrappers-7.6-aclexec.patch new file mode 100644 index 0000000..c77b630 --- /dev/null +++ b/tcp_wrappers-7.6-aclexec.patch @@ -0,0 +1,158 @@ +diff --git a/hosts_access.c b/hosts_access.c +index dfff943..13ad9f9 100644 +--- a/hosts_access.c ++++ b/hosts_access.c +@@ -78,6 +78,9 @@ int hosts_access_verbose = 0; + */ + + int resident = (-1); /* -1, 0: unknown; +1: yes */ ++#ifdef ACLEXEC ++int aclexec_matched = 0; ++#endif + + /* Forward declarations. */ + +@@ -179,6 +182,12 @@ struct request_info *request; + if (sh_cmd) { + #ifdef PROCESS_OPTIONS + process_options(sh_cmd, request); ++# ifdef ACLEXEC ++ if (aclexec_matched) { ++ syslog(LOG_INFO, "aclexec returned %d", aclexec_matched); ++ match = NO; ++ } ++# endif + #else + char cmd[BUFSIZ]; + shell_cmd(percent_x(cmd, sizeof(cmd), sh_cmd, request)); +diff --git a/hosts_options.5 b/hosts_options.5 +index 3bd189e..39c7fdd 100644 +--- a/hosts_options.5 ++++ b/hosts_options.5 +@@ -54,6 +54,23 @@ ALL: ALL: ALLOW + .sp + Notice the leading dot on the domain name patterns. + .SH RUNNING OTHER COMMANDS ++.IP "aclexec shell_command" ++Execute, in a child process, the specified shell command, after ++performing the % expansions described in the hosts_access(5) ++manual page. The command is executed with stdin, stdout and stderr ++connected to the null device, so that it won't mess up the ++conversation with the client host. Example: ++.sp ++.nf ++.ti +3 ++smtp : ALL : aclexec checkdnsbl %a ++.fi ++.sp ++executes, in a background child process, the shell command "checkdnsbl %a" ++after replacing %a by the address of the remote host. ++.sp ++The connection will be allowed or refused depending on whether the ++command returns a true or false exit status. + .IP "spawn shell_command" + Execute, in a child process, the specified shell command, after + performing the % expansions described in the hosts_access(5) +diff --git a/options.c b/options.c +index 675c9b4..b01db51 100644 +--- a/options.c ++++ b/options.c +@@ -49,6 +49,7 @@ static char sccsid[] = "@(#) options.c 1.17 96/02/11 17:01:31"; + #include + #include + #include ++#include + + #ifndef MAXPATHNAMELEN + #define MAXPATHNAMELEN BUFSIZ +@@ -78,6 +79,7 @@ static void group_option(); /* execute "group name" option */ + static void umask_option(); /* execute "umask mask" option */ + static void linger_option(); /* execute "linger time" option */ + static void keepalive_option(); /* execute "keepalive" option */ ++static void aclexec_option(); /* execute "aclexec command" option */ + static void spawn_option(); /* execute "spawn command" option */ + static void twist_option(); /* execute "twist command" option */ + static void rfc931_option(); /* execute "rfc931" option */ +@@ -115,6 +117,9 @@ static struct option option_table[] = { + { "umask", umask_option, NEED_ARG }, + { "linger", linger_option, NEED_ARG }, + { "keepalive", keepalive_option, 0 }, ++#ifdef ACLEXEC ++ { "aclexec", aclexec_option, NEED_ARG | EXPAND_ARG }, ++#endif + { "spawn", spawn_option, NEED_ARG | EXPAND_ARG }, + { "twist", twist_option, NEED_ARG | EXPAND_ARG | USE_LAST }, + { "rfc931", rfc931_option, OPT_ARG }, +@@ -327,6 +332,54 @@ struct request_info *request; + shell_cmd(value); + } + ++#ifdef ACLEXEC ++/* aclexec_option - spawn a shell command and check status */ ++ ++/* ARGSUSED */ ++ ++static void aclexec_option(value, request) ++char *value; ++struct request_info *request; ++{ ++ int status, child_pid, wait_pid; ++ extern int aclexec_matched; ++ ++ if (dry_run != 0) ++ return; ++ ++ child_pid = fork(); ++ ++ /* Something went wrong: we MUST terminate the process. */ ++ if (child_pid < 0) { ++ tcpd_warn("aclexec_option: /bin/sh: %m"); ++ clean_exit(request); ++ } ++ ++ if (child_pid == 0) { ++ execl("/bin/sh", "sh", "-c", value, (char *) 0); ++ ++ /* Something went wrong. We MUST terminate the child process. */ ++ tcpd_warn("execl /bin/sh: %m"); ++ _exit(0); ++ } ++ ++ while ((wait_pid = wait(&status)) != -1 && wait_pid != child_pid) ++ /* void */ ; ++ ++ aclexec_matched = 1; ++ ++ if (WIFEXITED(status) && WEXITSTATUS(status) == 0) { ++ aclexec_matched = 0; ++ } ++ ++ if (WIFSIGNALED(status)) ++ tcpd_warn("process %d exited with signal %d", child_pid, ++ WTERMSIG(status)); ++ ++ return; ++} ++#endif ++ + /* linger_option - set the socket linger time (Marc Boucher ) */ + + /* ARGSUSED */ +diff --git a/tcpdchk.c b/tcpdchk.c +index e67ffb0..8c74df8 100644 +--- a/tcpdchk.c ++++ b/tcpdchk.c +@@ -59,10 +59,6 @@ static char sep[] = ", \t\n"; + + #define BUFLEN 2048 + +-int resident = 0; +-int hosts_access_verbose = 0; +-char *hosts_allow_table = HOSTS_ALLOW; +-char *hosts_deny_table = HOSTS_DENY; + extern jmp_buf tcpd_buf; + + /* +-- +2.1.0 + diff --git a/tcp_wrappers-7.6-altformat.patch b/tcp_wrappers-7.6-altformat.patch new file mode 100644 index 0000000..91da9bd --- /dev/null +++ b/tcp_wrappers-7.6-altformat.patch @@ -0,0 +1,33 @@ +diff -up tcp_wrappers_7.6-ipv6.4/hosts_access.c.altformat tcp_wrappers_7.6-ipv6.4/hosts_access.c +--- tcp_wrappers_7.6-ipv6.4/hosts_access.c.altformat 2013-08-15 18:46:30.398827866 +0200 ++++ tcp_wrappers_7.6-ipv6.4/hosts_access.c 2013-08-15 18:50:03.099748732 +0200 +@@ -326,11 +326,15 @@ struct host_info *host; + if (cbr = strchr(tok, ']')) + *cbr = '\0'; + ++ if (cbr == NULL) { ++ tcpd_warn("bad IP6 address specification"); ++ return (NO); ++ } + /* + * A /nnn prefix specifies how many bits of the address we + * need to check. + */ +- if (slash = strchr(tok, '/')) { ++ if ((slash = strchr(tok, '/')) || (slash = strchr(cbr+1, '/'))) { + *slash = '\0'; + mask = atoi(slash+1); + if (mask < 0 || mask > IPV6_ABITS) { +diff -up tcp_wrappers_7.6-ipv6.4/tcpdchk.c.altformat tcp_wrappers_7.6-ipv6.4/tcpdchk.c +--- tcp_wrappers_7.6-ipv6.4/tcpdchk.c.altformat 1999-10-28 08:38:06.000000000 +0200 ++++ tcp_wrappers_7.6-ipv6.4/tcpdchk.c 2013-08-15 18:46:30.399827870 +0200 +@@ -430,6 +430,9 @@ char *pat; + int err = 0; + int mask = IPV6_ABITS; + ++ if (!slash) ++ slash = strchr(cbr+1, '/'); ++ + if (slash != NULL) { + *slash = '\0'; + mask = atoi(slash + 1); diff --git a/tcp_wrappers-7.6-bug11881.patch b/tcp_wrappers-7.6-bug11881.patch new file mode 100644 index 0000000..082825a --- /dev/null +++ b/tcp_wrappers-7.6-bug11881.patch @@ -0,0 +1,37 @@ +diff -up tcp_wrappers_7.6/eval.c.patch4 tcp_wrappers_7.6/eval.c +--- tcp_wrappers_7.6/eval.c.patch4 1995-01-30 19:51:46.000000000 +0100 ++++ tcp_wrappers_7.6/eval.c 2008-08-29 09:45:12.000000000 +0200 +@@ -111,7 +111,7 @@ struct request_info *request; + return (hostinfo); + #endif + if (STR_NE(eval_user(request), unknown)) { +- sprintf(both, "%s@%s", request->user, hostinfo); ++ snprintf(both, sizeof(both), "%s@%s", request->user, hostinfo); + return (both); + } else { + return (hostinfo); +@@ -128,7 +128,7 @@ struct request_info *request; + char *daemon = eval_daemon(request); + + if (STR_NE(host, unknown)) { +- sprintf(both, "%s@%s", daemon, host); ++ snprintf(both, sizeof(both), "%s@%s", daemon, host); + return (both); + } else { + return (daemon); +diff -up tcp_wrappers_7.6/tcpd.c.patch4 tcp_wrappers_7.6/tcpd.c +--- tcp_wrappers_7.6/tcpd.c.patch4 1996-02-11 17:01:33.000000000 +0100 ++++ tcp_wrappers_7.6/tcpd.c 2008-08-29 09:45:12.000000000 +0200 +@@ -60,10 +60,10 @@ char **argv; + */ + + if (argv[0][0] == '/') { +- strcpy(path, argv[0]); ++ strncpy(path, argv[0], sizeof(path)); + argv[0] = strrchr(argv[0], '/') + 1; + } else { +- sprintf(path, "%s/%s", REAL_DAEMON_DIR, argv[0]); ++ snprintf(path, sizeof(path), "%s/%s", REAL_DAEMON_DIR, argv[0]); + } + + /* diff --git a/tcp_wrappers-7.6-bug17795.patch b/tcp_wrappers-7.6-bug17795.patch new file mode 100644 index 0000000..c3bddd3 --- /dev/null +++ b/tcp_wrappers-7.6-bug17795.patch @@ -0,0 +1,56 @@ +diff -up tcp_wrappers_7.6/hosts_access.5.patch5 tcp_wrappers_7.6/hosts_access.5 +--- tcp_wrappers_7.6/hosts_access.5.patch5 1995-01-30 19:51:47.000000000 +0100 ++++ tcp_wrappers_7.6/hosts_access.5 2008-08-29 09:45:12.000000000 +0200 +@@ -89,6 +89,13 @@ An expression of the form `n.n.n.n/m.m.m + bitwise AND of the address and the `mask\'. For example, the net/mask + pattern `131.155.72.0/255.255.254.0\' matches every address in the + range `131.155.72.0\' through `131.155.73.255\'. ++.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. + .SH WILDCARDS + The access control language supports explicit wildcards: + .IP ALL +diff -up tcp_wrappers_7.6/hosts_access.c.patch5 tcp_wrappers_7.6/hosts_access.c +--- tcp_wrappers_7.6/hosts_access.c.patch5 1997-02-12 02:13:23.000000000 +0100 ++++ tcp_wrappers_7.6/hosts_access.c 2008-08-29 09:45:12.000000000 +0200 +@@ -240,6 +240,26 @@ struct request_info *request; + } + } + ++/* 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 +287,8 @@ struct host_info *host; + 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)); diff --git a/tcp_wrappers-7.6-bug17847.patch b/tcp_wrappers-7.6-bug17847.patch new file mode 100644 index 0000000..eede2e7 --- /dev/null +++ b/tcp_wrappers-7.6-bug17847.patch @@ -0,0 +1,102 @@ +--- tcp_wrappers_7.6/hosts_access.5.patch6 2013-01-23 11:10:00.545081410 +0100 ++++ tcp_wrappers_7.6/hosts_access.5 2013-01-23 11:10:00.549081436 +0100 +@@ -96,6 +96,10 @@ or address pattern listed in the named f + 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. ++.IP \(bu ++Wildcards `*\' and `?\' can be used to match hostnames or IP addresses. This ++method of matching cannot be used in conjunction with `net/mask\' matching, ++hostname matching beginning with `.\' or IP address matching ending with `.\'. + .SH WILDCARDS + The access control language supports explicit wildcards: + .IP ALL +--- tcp_wrappers_7.6/hosts_access.c.patch6 2013-01-23 11:10:00.546081416 +0100 ++++ tcp_wrappers_7.6/hosts_access.c 2013-01-23 11:12:28.519925230 +0100 +@@ -376,6 +376,11 @@ char *string; + { + int n; + ++#ifndef DISABLE_WILDCARD_MATCHING ++ if (strchr(tok, '*') || strchr(tok,'?')) { /* contains '*' or '?' */ ++ return (match_pattern_ylo(string,tok)); ++ } else ++#endif + if (tok[0] == '.') { /* suffix */ + n = strlen(string) - strlen(tok); + return (n > 0 && STR_EQ(tok, string + n)); +@@ -417,6 +422,74 @@ char *string; + return ((addr & mask) == net); + } + ++#ifndef DISABLE_WILDCARD_MATCHING ++/* Note: this feature has been adapted in a pretty straightforward way ++ from Tatu Ylonen's last SSH version under free license by ++ Pekka Savola . ++ ++ Copyright (c) 1995 Tatu Ylonen , Espoo, Finland ++*/ ++ ++/* Returns true if the given string matches the pattern (which may contain ++ ? and * as wildcards), and zero if it does not match. */ ++ ++int match_pattern_ylo(const char *s, const char *pattern) ++{ ++ while (1) ++ { ++ /* If at end of pattern, accept if also at end of string. */ ++ if (!*pattern) ++ return !*s; ++ ++ /* Process '*'. */ ++ if (*pattern == '*') ++ { ++ /* Skip the asterisk. */ ++ pattern++; ++ ++ /* If at end of pattern, accept immediately. */ ++ if (!*pattern) ++ return 1; ++ ++ /* If next character in pattern is known, optimize. */ ++ if (*pattern != '?' && *pattern != '*') ++ { ++ /* Look instances of the next character in pattern, and try ++ to match starting from those. */ ++ for (; *s; s++) ++ if (*s == *pattern && ++ match_pattern_ylo(s + 1, pattern + 1)) ++ return 1; ++ /* Failed. */ ++ return 0; ++ } ++ ++ /* Move ahead one character at a time and try to match at each ++ position. */ ++ for (; *s; s++) ++ if (match_pattern_ylo(s, pattern)) ++ return 1; ++ /* Failed. */ ++ return 0; ++ } ++ ++ /* There must be at least one more character in the string. If we are ++ at the end, fail. */ ++ if (!*s) ++ return 0; ++ ++ /* Check if the next character of the string is acceptable. */ ++ if (*pattern != '?' && *pattern != *s) ++ return 0; ++ ++ /* Move to the next character, both in string and in pattern. */ ++ s++; ++ pattern++; ++ } ++ /*NOTREACHED*/ ++} ++#endif /* DISABLE_WILDCARD_MATCHING */ ++ + #ifdef HAVE_IPV6 + /* + * Function that zeros all but the first "maskbits" bits of the IPV6 address diff --git a/tcp_wrappers-7.6-bug698464.patch b/tcp_wrappers-7.6-bug698464.patch new file mode 100644 index 0000000..2b3bfb8 --- /dev/null +++ b/tcp_wrappers-7.6-bug698464.patch @@ -0,0 +1,69 @@ +--- tcp_wrappers_7.6/hosts_access.5.orig 2011-04-20 16:10:25.000000000 -0600 ++++ tcp_wrappers_7.6/hosts_access.5 2011-04-20 16:29:50.000000000 -0600 +@@ -90,6 +90,9 @@ bitwise AND of the address and the `mask + pattern `131.155.72.0/255.255.254.0\' matches every address in the + range `131.155.72.0\' through `131.155.73.255\'. + .IP \(bu ++An expression of the form `n.n.n.n/m\' is interpreted as a ++`net/prefixlen\' pair, as below, for IPv4 addresses. ++.IP \(bu + An expression of the form `[n:n:n:n:n:n:n:n/m]\' is interpreted as a + `[net/prefixlen]\' pair. An IPv6 host address is matched if + `prefixlen\' bits of `net\' is equal to the `prefixlen\' bits of the +--- tcp_wrappers_7.6/tcpd.h.orig 2011-04-20 16:10:25.000000000 -0600 ++++ tcp_wrappers_7.6/tcpd.h 2011-04-20 16:11:56.000000000 -0600 +@@ -164,6 +164,7 @@ extern void refuse __P((struct request_i + extern char *xgets __P((char *, int, FILE *)); /* fgets() on steroids */ + extern char *split_at __P((char *, int)); /* strchr() and split */ + extern unsigned long dot_quad_addr __P((char *)); /* restricted inet_addr() */ ++extern unsigned long prefix_to_netmask __P((char *)); /* 0-32 prefix length */ + extern int numeric_addr __P((char *, union gen_addr *, int *, int *)); /* IP4/IP6 inet_addr (restricted) */ + extern struct hostent *tcpd_gethostbyname __P((char *, int)); + /* IP4/IP6 gethostbyname */ +--- tcp_wrappers_7.6/misc.c.orig 2011-04-20 16:10:25.000000000 -0600 ++++ tcp_wrappers_7.6/misc.c 2011-04-20 16:13:39.000000000 -0600 +@@ -16,6 +16,7 @@ static char sccsic[] = "@(#) misc.c 1.2 + #include + #include + #include ++#include + + #include "tcpd.h" + +@@ -214,3 +215,21 @@ char *str; + } + } + #endif /* HAVE_IPV6 */ ++ ++/* prefix_to_netmask - convert prefix (0-32) to netmask */ ++ ++unsigned long prefix_to_netmask(str) ++char *str; ++{ ++ unsigned long prefix; ++ char *endptr; ++ ++ if (!isdigit(str[0])) ++ return INADDR_NONE; ++ ++ prefix = strtoul(str, &endptr, 10); ++ if ((endptr == str) || (*endptr != '\0') || (prefix > 32)) ++ return INADDR_NONE; ++ ++ return htonl(~0UL << (32 - prefix)); ++} +--- tcp_wrappers_7.6/hosts_access.c.orig 2011-04-20 16:10:25.000000000 -0600 ++++ tcp_wrappers_7.6/hosts_access.c 2011-04-20 16:21:07.000000000 -0600 +@@ -420,8 +420,11 @@ char *string; + return (NO); + if ((net = dot_quad_addr(net_tok)) == INADDR_NONE + || ((mask = dot_quad_addr(mask_tok)) == INADDR_NONE +- && strcmp(mask_tok, "255.255.255.255"))) { ++ && strcmp(mask_tok, "255.255.255.255") ++ && (mask = prefix_to_netmask(mask_tok)) == INADDR_NONE ++ && strcmp(mask_tok, "32"))) { + /* 255.255.255.255 == INADDR_NONE, separate check needed. TJ. */ ++ /* 32 == INADDR_NONE, separate check needed. philipp */ + tcpd_warn("bad net/mask expression: %s/%s", net_tok, mask_tok); + return (NO); /* not tcpd_jump() */ + } diff --git a/tcp_wrappers-7.6-docu.patch b/tcp_wrappers-7.6-docu.patch new file mode 100644 index 0000000..dbfa75d --- /dev/null +++ b/tcp_wrappers-7.6-docu.patch @@ -0,0 +1,12 @@ +diff -up tcp_wrappers_7.6/hosts_access.5.patch8 tcp_wrappers_7.6/hosts_access.5 +--- tcp_wrappers_7.6/hosts_access.5.patch8 2008-08-29 09:45:12.000000000 +0200 ++++ tcp_wrappers_7.6/hosts_access.5 2008-08-29 09:45:12.000000000 +0200 +@@ -333,7 +333,7 @@ in.tftpd: LOCAL, .my.domain + /etc/hosts.deny: + .in +3 + .nf +-in.tftpd: ALL: (/some/where/safe_finger -l @%h | \\ ++in.tftpd: ALL: spawn (/some/where/safe_finger -l @%h | \\ + /usr/ucb/mail -s %d-%h root) & + .fi + .PP diff --git a/tcp_wrappers-7.6-fix_sig-bug141110.patch b/tcp_wrappers-7.6-fix_sig-bug141110.patch new file mode 100644 index 0000000..9d5c936 --- /dev/null +++ b/tcp_wrappers-7.6-fix_sig-bug141110.patch @@ -0,0 +1,21 @@ +diff -up tcp_wrappers_7.6/hosts_access.c.patch15 tcp_wrappers_7.6/hosts_access.c +--- tcp_wrappers_7.6/hosts_access.c.patch15 2008-08-29 09:45:12.000000000 +0200 ++++ tcp_wrappers_7.6/hosts_access.c 2008-08-29 09:45:12.000000000 +0200 +@@ -127,7 +127,7 @@ struct request_info *request; + verdict = setjmp(tcpd_buf); + if (verdict != 0) + return (verdict == AC_PERMIT); +- if (table_match(hosts_allow_table, request)) ++ if (table_match(hosts_allow_table, request) == YES) + return (YES); + if (table_match(hosts_deny_table, request) == NO) + return (YES); +@@ -177,7 +177,7 @@ struct request_info *request; + tcpd_warn("cannot open %s: %m", table); + match = ERR; + } +- if (match) { ++ if (match == YES) { + if (hosts_access_verbose > 1) + syslog(LOG_DEBUG, "matched: %s line %d", + tcpd_context.file, tcpd_context.line); diff --git a/tcp_wrappers-7.6-fixgethostbyname.patch b/tcp_wrappers-7.6-fixgethostbyname.patch new file mode 100644 index 0000000..efb4ebe --- /dev/null +++ b/tcp_wrappers-7.6-fixgethostbyname.patch @@ -0,0 +1,27 @@ +--- tcp_wrappers_7.6-ipv6.4/socket.c.patch7 1999-10-27 15:23:14.000000000 +0200 ++++ tcp_wrappers_7.6-ipv6.4/socket.c 2013-01-23 11:41:48.776857327 +0100 +@@ -54,6 +54,8 @@ int af; + { + char dot_name[MAXHOSTNAMELEN + 1]; + ++ struct hostent *hp; ++ + /* + * Don't append dots to unqualified names. Such names are likely to come + * from local hosts files or from NIS. +@@ -62,8 +64,13 @@ int af; + if (strchr(name, '.') == 0 || strlen(name) >= MAXHOSTNAMELEN - 1) { + return (tcpd_gethostbyname(name, af)); + } else { +- sprintf(dot_name, "%s.", name); +- return (tcpd_gethostbyname(dot_name, af)); ++ sprintf(dot_name, "%s.", name); ++ hp = tcpd_gethostbyname(dot_name, af); ++ if (hp) ++ return hp; ++ ++ else ++ return tcpd_gethostbyname(name, af); + } + } + diff --git a/tcp_wrappers-7.6-inetdconf.patch b/tcp_wrappers-7.6-inetdconf.patch new file mode 100644 index 0000000..85d2cff --- /dev/null +++ b/tcp_wrappers-7.6-inetdconf.patch @@ -0,0 +1,79 @@ +diff -up tcp_wrappers_7.6/tcpdmatch.8.inetdconf tcp_wrappers_7.6/tcpdmatch.8 +--- tcp_wrappers_7.6/tcpdmatch.8.inetdconf 2010-06-16 14:39:32.000000000 +0200 ++++ tcp_wrappers_7.6/tcpdmatch.8 2010-06-16 14:42:25.000000000 +0200 +@@ -2,9 +2,9 @@ + .SH NAME + tcpdmatch \- tcp wrapper oracle + .SH SYNOPSYS +-tcpdmatch [-d] [-i inet_conf] daemon client ++tcpdmatch [-d] daemon client + .sp +-tcpdmatch [-d] [-i inet_conf] daemon[@server] [user@]client ++tcpdmatch [-d] daemon[@server] [user@]client + .SH DESCRIPTION + .PP + \fItcpdmatch\fR predicts how the tcp wrapper would handle a specific +@@ -48,10 +48,6 @@ The default user name is `unknown'. + .IP -d + Examine \fIhosts.allow\fR and \fIhosts.deny\fR files in the current + directory instead of the default ones. +-.IP "-i inet_conf" +-Specify this option when \fItcpdmatch\fR is unable to find your +-\fIinetd.conf\fR or \fItlid.conf\fR network configuration file, or when +-you suspect that the program uses the wrong one. + .SH EXAMPLES + To predict how \fItcpd\fR would handle a telnet request from the local + system: +@@ -82,11 +78,8 @@ The default locations of the \fItcpd\fR + .SH SEE ALSO + .na + .nf +-tcpdchk(8), tcpd configuration checker + hosts_access(5), format of the tcpd access control tables. + hosts_options(5), format of the language extensions. +-inetd.conf(5), format of the inetd control file. +-tlid.conf(5), format of the tlid control file. + .SH AUTHORS + .na + .nf +diff -up tcp_wrappers_7.6/tcpdmatch.c.inetdconf tcp_wrappers_7.6/tcpdmatch.c +--- tcp_wrappers_7.6/tcpdmatch.c.inetdconf 2010-06-16 14:37:09.000000000 +0200 ++++ tcp_wrappers_7.6/tcpdmatch.c 2010-06-16 14:39:18.000000000 +0200 +@@ -140,25 +140,6 @@ char **argv; + } + + /* +- * Analyze the inetd (or tlid) configuration file, so that we can warn +- * the user about services that may not be wrapped, services that are not +- * configured, or services that are wrapped in an incorrect manner. Allow +- * for services that are not run from inetd, or that have tcpd access +- * control built into them. +- */ +- inetcf = inet_cfg(inetcf); +- inet_set("portmap", WR_NOT); +- inet_set("rpcbind", WR_NOT); +- switch (inet_get(daemon)) { +- case WR_UNKNOWN: +- tcpd_warn("%s: no such process name in %s", daemon, inetcf); +- break; +- case WR_NOT: +- tcpd_warn("%s: service possibly not wrapped", daemon); +- break; +- } +- +- /* + * Check accessibility of access control files. + */ + (void) check_path(hosts_allow_table, &st); +@@ -319,10 +300,9 @@ char **argv; + static void usage(myname) + char *myname; + { +- fprintf(stderr, "usage: %s [-d] [-i inet_conf] daemon[@host] [user@]host\n", ++ fprintf(stderr, "usage: %s [-d] daemon[@host] [user@]host\n", + myname); + fprintf(stderr, " -d: use allow/deny files in current directory\n"); +- fprintf(stderr, " -i: location of inetd.conf file\n"); + exit(1); + } + diff --git a/tcp_wrappers-7.6-initgroups.patch b/tcp_wrappers-7.6-initgroups.patch new file mode 100644 index 0000000..5bc5beb --- /dev/null +++ b/tcp_wrappers-7.6-initgroups.patch @@ -0,0 +1,62 @@ +diff -up tcp_wrappers_7.6/options.c.initgroups tcp_wrappers_7.6/options.c +--- tcp_wrappers_7.6/options.c.initgroups 2011-08-11 23:10:43.610418714 +0200 ++++ tcp_wrappers_7.6/options.c 2011-08-12 05:51:17.748481294 +0200 +@@ -256,8 +256,12 @@ struct request_info *request; + tcpd_jump("unknown group: \"%s\"", value); + endgrent(); + +- if (dry_run == 0 && setgid(grp->gr_gid)) +- tcpd_jump("setgid(%s): %m", value); ++ if (dry_run != 0) { ++ if (setgid(grp->gr_gid)) ++ tcpd_jump("setgid(%s): %m", value); ++ if (setgroups(0, NULL)) ++ tcpd_jump("setgroups(%s): %m", value); ++ } + } + + /* user_option - switch user id */ +@@ -271,15 +275,26 @@ struct request_info *request; + struct passwd *pwd; + struct passwd *getpwnam(); + char *group; ++ int defaultgroup = 0; + + if ((group = split_at(value, '.')) != 0) + group_option(group, request); ++ else ++ defaultgroup = 1; + if ((pwd = getpwnam(value)) == 0) + tcpd_jump("unknown user: \"%s\"", value); + endpwent(); + +- if (dry_run == 0 && setuid(pwd->pw_uid)) +- tcpd_jump("setuid(%s): %m", value); ++ if (dry_run != 0) { ++ if (setuid(pwd->pw_uid)) ++ tcpd_jump("setuid(%s): %m", value); ++ if (defaultgroup) { ++ if (setgid(pwd->pw_gid)) ++ tcpd_jump("setgid(%s): %m", value); ++ if (initgroups(value, pwd->pw_gid)) ++ tcpd_jump("initgroups(%s): %m", value); ++ } ++ } + } + + /* umask_option - set file creation mask */ +diff -up tcp_wrappers_7.6/safe_finger.c.initgroups tcp_wrappers_7.6/safe_finger.c +--- tcp_wrappers_7.6/safe_finger.c.initgroups 2011-08-12 05:54:06.068606291 +0200 ++++ tcp_wrappers_7.6/safe_finger.c 2011-08-12 05:55:34.835483785 +0200 +@@ -66,9 +66,11 @@ char **argv; + if (getuid() == 0 || geteuid() == 0) { + if ((pwd = getpwnam(UNPRIV_NAME)) && pwd->pw_uid > 0) { + setgid(pwd->pw_gid); ++ initgroups(UNPRIV_NAME, pwd->pw_gid); + setuid(pwd->pw_uid); + } else { + setgid(UNPRIV_UGID); ++ setgroups(0, NULL); + setuid(UNPRIV_UGID); + } + } diff --git a/tcp_wrappers-7.6-ldflags.patch b/tcp_wrappers-7.6-ldflags.patch new file mode 100644 index 0000000..9af2a8a --- /dev/null +++ b/tcp_wrappers-7.6-ldflags.patch @@ -0,0 +1,42 @@ +diff -up tcp_wrappers_7.6-ipv6.4/Makefile.cflags tcp_wrappers_7.6-ipv6.4/Makefile +--- tcp_wrappers_7.6-ipv6.4/Makefile.cflags 2018-03-08 09:59:29.854718081 +0100 ++++ tcp_wrappers_7.6-ipv6.4/Makefile 2018-03-08 09:59:49.282840150 +0100 +@@ -741,31 +741,31 @@ $(LIB): $(LIB_OBJ) + + $(SHLIB): $(LIB_OBJ) + gcc -shared -fPIC -Wl,-soname -Wl,$(SHLIB).$(MAJOR) \ +- -o $(SHLIB).$(MAJOR).$(MINOR).$(REL) $^ $(LIBS) ++ -o $(SHLIB).$(MAJOR).$(MINOR).$(REL) $^ $(LDFLAGS) $(LIBS) + ln -s $(SHLIB).$(MAJOR).$(MINOR).$(REL) $(SHLIB).$(MAJOR) + ln -s $(SHLIB).$(MAJOR).$(MINOR).$(REL) $(SHLIB) + + tcpd: tcpd.o $(LIB) +- $(CC) $(CFLAGS) -o $@ tcpd.o $(LIB) $(LIBS) ++ $(CC) $(CFLAGS) -o $@ tcpd.o $(LDFLAGS) $(LIB) $(LIBS) + + miscd: miscd.o $(LIB) +- $(CC) $(CFLAGS) -o $@ miscd.o $(LIB) $(LIBS) ++ $(CC) $(CFLAGS) -o $@ miscd.o $(LDFLAGS) $(LIB) $(LIBS) + + safe_finger: safe_finger.o $(LIB) +- $(CC) $(CFLAGS) -o $@ safe_finger.o $(LIB) $(LIBS) ++ $(CC) $(CFLAGS) -o $@ safe_finger.o $(LDFLAGS) $(LIB) $(LIBS) + + TCPDMATCH_OBJ = tcpdmatch.o fakelog.o inetcf.o scaffold.o + + tcpdmatch: $(TCPDMATCH_OBJ) $(LIB) +- $(CC) $(CFLAGS) -o $@ $(TCPDMATCH_OBJ) $(LIB) $(LIBS) ++ $(CC) $(CFLAGS) -o $@ $(TCPDMATCH_OBJ) $(LDFLAGS) $(LIB) $(LIBS) + + try-from: try-from.o fakelog.o $(LIB) +- $(CC) $(CFLAGS) -o $@ try-from.o fakelog.o $(LIB) $(LIBS) ++ $(CC) $(CFLAGS) -o $@ try-from.o fakelog.o $(LDFLAGS) $(LIB) $(LIBS) + + TCPDCHK_OBJ = tcpdchk.o fakelog.o inetcf.o scaffold.o + + tcpdchk: $(TCPDCHK_OBJ) $(LIB) +- $(CC) $(CFLAGS) -o $@ $(TCPDCHK_OBJ) $(LIB) $(LIBS) ++ $(CC) $(CFLAGS) -o $@ $(TCPDCHK_OBJ) $(LDFLAGS) $(LIB) $(LIBS) + + shar: $(KIT) + @shar $(KIT) diff --git a/tcp_wrappers-7.6-man.patch b/tcp_wrappers-7.6-man.patch new file mode 100644 index 0000000..6ca5429 --- /dev/null +++ b/tcp_wrappers-7.6-man.patch @@ -0,0 +1,71 @@ +diff -up tcp_wrappers_7.6/Makefile.man tcp_wrappers_7.6/Makefile +diff -up tcp_wrappers_7.6/safe_finger.8.man tcp_wrappers_7.6/safe_finger.8 +--- tcp_wrappers_7.6/safe_finger.8.man 2010-02-05 09:19:38.000000000 +0100 ++++ tcp_wrappers_7.6/safe_finger.8 2010-02-05 09:11:12.000000000 +0100 +@@ -0,0 +1,34 @@ ++.TH SAFE_FINGER 8 "21th June 1997" Linux "Linux Programmer's Manual" ++.SH NAME ++safe_finger \- finger client wrapper that protects against nasty stuff ++from finger servers ++.SH SYNOPSIS ++.B safe_finger [finger_options] ++.SH DESCRIPTION ++The ++.B safe_finger ++command protects against nasty stuff from finger servers. Use this ++program for automatic reverse finger probes from the ++.B tcp_wrapper ++.B (tcpd) ++, not the raw finger command. The ++.B safe_finger ++command makes sure that the finger client is not run with root ++privileges. It also runs the finger client with a defined PATH ++environment. ++.B safe_finger ++will also protect you from problems caused by the output of some ++finger servers. The problem: some programs may react to stuff in ++the first column. Other programs may get upset by thrash anywhere ++on a line. File systems may fill up as the finger server keeps ++sending data. Text editors may bomb out on extremely long lines. ++The finger server may take forever because it is somehow wedged. ++.B safe_finger ++takes care of all this badness. ++.SH SEE ALSO ++.BR hosts_access (5), ++.BR hosts_options (5), ++.BR tcpd (8) ++.SH AUTHOR ++Wietse Venema, Eindhoven University of Technology, The Netherlands. ++ +diff -up tcp_wrappers_7.6/try-from.8.man tcp_wrappers_7.6/try-from.8 +--- tcp_wrappers_7.6/try-from.8.man 2010-02-05 09:20:00.000000000 +0100 ++++ tcp_wrappers_7.6/try-from.8 2010-02-05 09:12:54.000000000 +0100 +@@ -0,0 +1,28 @@ ++.TH TRY-FROM 8 "21th June 1997" Linux "Linux Programmer's Manual" ++.SH NAME ++try-from \- test program for the tcp_wrapper ++.SH SYNOPSIS ++.B try-from ++.SH DESCRIPTION ++The ++.B try\-from ++command can be called via a remote shell command to find out ++if the hostname and address are properly recognized ++by the ++.B tcp_wrapper ++library, if username lookup works, and (SysV only) if the TLI ++on top of IP heuristics work. Diagnostics are reported through ++.BR syslog (3) ++and redirected to stderr. ++ ++Example: ++ ++rsh host /some/where/try\-from ++ ++.SH SEE ALSO ++.BR hosts_access (5), ++.BR hosts_options (5), ++.BR tcpd (8) ++.SH AUTHOR ++Wietse Venema, Eindhoven University of Technology, The Netherlands. ++ diff --git a/tcp_wrappers-7.6-shared.patch b/tcp_wrappers-7.6-shared.patch new file mode 100644 index 0000000..3971717 --- /dev/null +++ b/tcp_wrappers-7.6-shared.patch @@ -0,0 +1,267 @@ +diff -up tcp_wrappers_7.6/Makefile.patch11 tcp_wrappers_7.6/Makefile +--- tcp_wrappers_7.6/Makefile.patch11 2008-08-29 09:45:12.000000000 +0200 ++++ tcp_wrappers_7.6/Makefile 2008-08-29 09:45:12.000000000 +0200 +@@ -150,8 +150,8 @@ netbsd: + + linux: + @make REAL_DAEMON_DIR=$(REAL_DAEMON_DIR) STYLE=$(STYLE) \ +- LIBS="-lnsl" RANLIB=ranlib ARFLAGS=rv AUX_OBJ= \ +- NETGROUP="-DNETGROUP" TLI= EXTRA_CFLAGS="$(RPM_OPT_FLAGS) -DUSE_STRERROR -DSYS_ERRLIST_DEFINED -DBROKEN_SO_LINGER -Dss_family=__ss_family -Dss_len=__ss_len" all ++ LIBS="-lnsl" RANLIB=ranlib ARFLAGS=rv AUX_OBJ=weak_symbols.o \ ++ NETGROUP="-DNETGROUP" TLI= EXTRA_CFLAGS="$(RPM_OPT_FLAGS) -fPIC -DPIC -D_REENTRANT -DUSE_STRERROR -DSYS_ERRLIST_DEFINED -DBROKEN_SO_LINGER -Dss_family=__ss_family -Dss_len=__ss_len -DHAVE_WEAKSYMS" all + + linux-old: + @make REAL_DAEMON_DIR=$(REAL_DAEMON_DIR) STYLE=$(STYLE) \ +@@ -249,7 +249,7 @@ tandem: + + # Amdahl UTS 2.1.5 (Richard.Richmond@bridge.bst.bls.com) + uts215: +- @make REAL_DAEMON_DIR=$(REAL_DAEMON_DIR) STYLE=$(STYLE) \ ++ @make REAL_DAEMON_DIR=$(REAL_DAEMON_DIR) STYLE=$(STYLE) \ + LIBS="-lsocket" RANLIB=echo \ + ARFLAGS=rv AUX_OBJ=setenv.o NETGROUP=-DNO_NETGROUP TLI= all + +@@ -706,8 +706,9 @@ KIT = README miscd.c tcpd.c fromhost.c h + scaffold.h tcpdmatch.8 README.NIS + + LIB = libwrap.a ++SHLIB = libwrap.so + +-all other: config-check tcpd tcpdmatch try-from safe_finger tcpdchk ++all other: config-check tcpd tcpdmatch try-from safe_finger tcpdchk $(SHLIB) + + # Invalidate all object files when the compiler options (CFLAGS) have changed. + +@@ -724,6 +725,12 @@ $(LIB): $(LIB_OBJ) + $(AR) $(ARFLAGS) $(LIB) $(LIB_OBJ) + -$(RANLIB) $(LIB) + ++$(SHLIB): $(LIB_OBJ) ++ gcc -shared -fPIC -Wl,-soname -Wl,$(SHLIB).$(MAJOR) \ ++ -o $(SHLIB).$(MAJOR).$(MINOR).$(REL) $^ $(LIBS) ++ ln -s $(SHLIB).$(MAJOR).$(MINOR).$(REL) $(SHLIB).$(MAJOR) ++ ln -s $(SHLIB).$(MAJOR).$(MINOR).$(REL) $(SHLIB) ++ + tcpd: tcpd.o $(LIB) + $(CC) $(CFLAGS) -o $@ tcpd.o $(LIB) $(LIBS) + +@@ -906,5 +913,6 @@ update.o: cflags + update.o: mystdarg.h + update.o: tcpd.h + vfprintf.o: cflags ++weak_symbols.o: tcpd.h + workarounds.o: cflags + workarounds.o: tcpd.h +diff -up tcp_wrappers_7.6/tcpd.h.patch11 tcp_wrappers_7.6/tcpd.h +--- tcp_wrappers_7.6/tcpd.h.patch11 2008-08-29 09:45:12.000000000 +0200 ++++ tcp_wrappers_7.6/tcpd.h 2008-08-29 09:45:12.000000000 +0200 +@@ -4,6 +4,25 @@ + * Author: Wietse Venema, Eindhoven University of Technology, The Netherlands. + */ + ++#ifndef _TCPWRAPPERS_TCPD_H ++#define _TCPWRAPPERS_TCPD_H ++ ++/* someone else may have defined this */ ++#undef __P ++ ++/* use prototypes if we have an ANSI C compiler or are using C++ */ ++#if defined(__STDC__) || defined(__cplusplus) ++#define __P(args) args ++#else ++#define __P(args) () ++#endif ++ ++/* Need definitions of struct sockaddr_in and FILE. */ ++#include ++#include ++ ++__BEGIN_DECLS ++ + /* Structure to describe one communications endpoint. */ + + #define STRING_LENGTH 128 /* hosts, users, processes */ +@@ -92,10 +111,10 @@ struct request_info { + char pid[10]; /* access via eval_pid(request) */ + struct host_info client[1]; /* client endpoint info */ + struct host_info server[1]; /* server endpoint info */ +- void (*sink) (); /* datagram sink function or 0 */ +- void (*hostname) (); /* address to printable hostname */ +- void (*hostaddr) (); /* address to printable address */ +- void (*cleanup) (); /* cleanup function or 0 */ ++ void (*sink) __P((int)); /* datagram sink function or 0 */ ++ void (*hostname) __P((struct host_info *)); /* address to printable hostname */ ++ void (*hostaddr) __P((struct host_info *)); /* address to printable address */ ++ void (*cleanup) __P((struct request_info *)); /* cleanup function or 0 */ + struct netconfig *config; /* netdir handle */ + }; + +@@ -132,33 +151,38 @@ extern char paranoid[]; + /* Global functions. */ + + #if defined(TLI) || defined(PTX) || defined(TLI_SEQUENT) +-extern void fromhost(); /* get/validate client host info */ ++extern void fromhost __P((struct request_info *)); /* get/validate client host info */ + #else + #define fromhost sock_host /* no TLI support needed */ + #endif + +-extern int hosts_access(); /* access control */ +-extern void shell_cmd(); /* execute shell command */ +-extern char *percent_x(); /* do % expansion */ +-extern void rfc931(); /* client name from RFC 931 daemon */ +-extern void clean_exit(); /* clean up and exit */ +-extern void refuse(); /* clean up and exit */ +-extern char *xgets(); /* fgets() on steroids */ +-extern char *split_at(); /* strchr() and split */ +-extern unsigned long dot_quad_addr(); /* restricted inet_addr() */ +-extern int numeric_addr(); /* IP4/IP6 inet_addr (restricted) */ +-extern struct hostent *tcpd_gethostbyname(); ++extern void shell_cmd __P((char *)); /* execute shell command */ ++extern char *percent_x __P((char *, int, char *, struct request_info *)); /* do % expansion */ ++extern void rfc931 __P((struct sockaddr_gen *, struct sockaddr_gen *, char *)); /* client name from RFC 931 daemon */ ++extern void clean_exit __P((struct request_info *)); /* clean up and exit */ ++extern void refuse __P((struct request_info *)); /* clean up and exit */ ++extern char *xgets __P((char *, int, FILE *)); /* fgets() on steroids */ ++extern char *split_at __P((char *, int)); /* strchr() and split */ ++extern unsigned long dot_quad_addr __P((char *)); /* restricted inet_addr() */ ++extern int numeric_addr __P((char *, union gen_addr *, int *, int *)); /* IP4/IP6 inet_addr (restricted) */ ++extern struct hostent *tcpd_gethostbyname __P((char *, int)); + /* IP4/IP6 gethostbyname */ + #ifdef HAVE_IPV6 +-extern char *skip_ipv6_addrs(); /* skip over colons in IPv6 addrs */ ++extern char *skip_ipv6_addrs __P((char *)); /* skip over colons in IPv6 addrs */ + #else + #define skip_ipv6_addrs(x) x + #endif + + /* Global variables. */ + ++#ifdef HAVE_WEAKSYMS ++extern int allow_severity __attribute__ ((weak)); /* for connection logging */ ++extern int deny_severity __attribute__ ((weak)); /* for connection logging */ ++#else + extern int allow_severity; /* for connection logging */ + extern int deny_severity; /* for connection logging */ ++#endif ++ + extern char *hosts_allow_table; /* for verification mode redirection */ + extern char *hosts_deny_table; /* for verification mode redirection */ + extern int hosts_access_verbose; /* for verbose matching mode */ +@@ -171,9 +195,14 @@ extern int resident; /* > 0 if residen + */ + + #ifdef __STDC__ ++extern int hosts_access(struct request_info *request); ++extern int hosts_ctl(char *daemon, char *client_name, char *client_addr, ++ char *client_user); + extern struct request_info *request_init(struct request_info *,...); + extern struct request_info *request_set(struct request_info *,...); + #else ++extern int hosts_access(); ++extern int hosts_ctl(); + extern struct request_info *request_init(); /* initialize request */ + extern struct request_info *request_set(); /* update request structure */ + #endif +@@ -196,27 +225,31 @@ extern struct request_info *request_set( + * host_info structures serve as caches for the lookup results. + */ + +-extern char *eval_user(); /* client user */ +-extern char *eval_hostname(); /* printable hostname */ +-extern char *eval_hostaddr(); /* printable host address */ +-extern char *eval_hostinfo(); /* host name or address */ +-extern char *eval_client(); /* whatever is available */ +-extern char *eval_server(); /* whatever is available */ ++extern char *eval_user __P((struct request_info *)); /* client user */ ++extern char *eval_hostname __P((struct host_info *)); /* printable hostname */ ++extern char *eval_hostaddr __P((struct host_info *)); /* printable host address */ ++extern char *eval_hostinfo __P((struct host_info *)); /* host name or address */ ++extern char *eval_client __P((struct request_info *)); /* whatever is available */ ++extern char *eval_server __P((struct request_info *)); /* whatever is available */ + #define eval_daemon(r) ((r)->daemon) /* daemon process name */ + #define eval_pid(r) ((r)->pid) /* process id */ + + /* Socket-specific methods, including DNS hostname lookups. */ + +-extern void sock_host(); /* look up endpoint addresses */ +-extern void sock_hostname(); /* translate address to hostname */ +-extern void sock_hostaddr(); /* address to printable address */ ++/* look up endpoint addresses */ ++extern void sock_host __P((struct request_info *)); ++/* translate address to hostname */ ++extern void sock_hostname __P((struct host_info *)); ++/* address to printable address */ ++extern void sock_hostaddr __P((struct host_info *)); ++ + #define sock_methods(r) \ + { (r)->hostname = sock_hostname; (r)->hostaddr = sock_hostaddr; } + + /* The System V Transport-Level Interface (TLI) interface. */ + + #if defined(TLI) || defined(PTX) || defined(TLI_SEQUENT) +-extern void tli_host(); /* look up endpoint addresses etc. */ ++extern void tli_host __P((struct request_info *)); /* look up endpoint addresses etc. */ + #endif + + /* +@@ -257,7 +290,7 @@ extern struct tcpd_context tcpd_context; + * behavior. + */ + +-extern void process_options(); /* execute options */ ++extern void process_options __P((char *, struct request_info *)); /* execute options */ + extern int dry_run; /* verification flag */ + + /* Bug workarounds. */ +@@ -296,3 +329,7 @@ extern char *fix_strtok(); + #define strtok my_strtok + extern char *my_strtok(); + #endif ++ ++__END_DECLS ++ ++#endif /* tcpd.h */ +diff -up /dev/null tcp_wrappers_7.6/weak_symbols.c +--- /dev/null 2008-08-29 10:35:15.589003986 +0200 ++++ tcp_wrappers_7.6/weak_symbols.c 2008-08-29 09:45:12.000000000 +0200 +@@ -0,0 +1,11 @@ ++ /* ++ * @(#) weak_symbols.h 1.5 99/12/29 23:50 ++ * ++ * Author: Anthony Towns ++ */ ++ ++#ifdef HAVE_WEAKSYMS ++#include ++int deny_severity = LOG_WARNING; ++int allow_severity = SEVERITY; ++#endif +diff -up tcp_wrappers_7.6/scaffold.c.patch11 tcp_wrappers_7.6/scaffold.c +--- tcp_wrappers_7.6/scaffold.c.patch11 2013-01-28 11:08:48.598273563 +0100 ++++ tcp_wrappers_7.6/scaffold.c 2013-01-28 11:08:56.069316992 +0100 +@@ -25,7 +25,7 @@ static char sccs_id[] = "@(#) scaffold.c + #define INADDR_NONE (-1) /* XXX should be 0xffffffff */ + #endif + +-extern char *malloc(); ++extern void *malloc(size_t); + + /* Application-specific. */ + +@@ -180,10 +180,12 @@ struct request_info *request; + + /* ARGSUSED */ + +-void rfc931(request) +-struct request_info *request; ++void rfc931(rmt_sin, our_sin, dest) ++struct sockaddr_gen *rmt_sin; ++struct sockaddr_gen *our_sin; ++char *dest; + { +- strcpy(request->user, unknown); ++ strcpy(dest, unknown); + } + + /* check_path - examine accessibility */ diff --git a/tcp_wrappers-7.6-sig.patch b/tcp_wrappers-7.6-sig.patch new file mode 100644 index 0000000..c247301 --- /dev/null +++ b/tcp_wrappers-7.6-sig.patch @@ -0,0 +1,40 @@ +diff -up tcp_wrappers_7.6/hosts_access.c.patch12 tcp_wrappers_7.6/hosts_access.c +--- tcp_wrappers_7.6/hosts_access.c.patch12 2008-08-29 09:45:12.000000000 +0200 ++++ tcp_wrappers_7.6/hosts_access.c 2008-08-29 09:45:12.000000000 +0200 +@@ -66,6 +66,7 @@ static char sep[] = ", \t\r\n"; + + #define YES 1 + #define NO 0 ++#define ERR -1 + + /* + * These variables are globally visible so that they can be redirected in +@@ -106,7 +107,6 @@ int hosts_access(request) + struct request_info *request; + { + int verdict; +- + /* + * If the (daemon, client) pair is matched by an entry in the file + * /etc/hosts.allow, access is granted. Otherwise, if the (daemon, +@@ -129,9 +129,9 @@ struct request_info *request; + return (verdict == AC_PERMIT); + if (table_match(hosts_allow_table, request)) + return (YES); +- if (table_match(hosts_deny_table, request)) +- return (NO); +- return (YES); ++ if (table_match(hosts_deny_table, request) == NO) ++ return (YES); ++ return (NO); + } + + /* table_match - match table entries with (daemon, client) pair */ +@@ -175,6 +175,7 @@ struct request_info *request; + (void) fclose(fp); + } else if (errno != ENOENT) { + tcpd_warn("cannot open %s: %m", table); ++ match = ERR; + } + if (match) { + if (hosts_access_verbose > 1) diff --git a/tcp_wrappers-7.6-sigchld.patch b/tcp_wrappers-7.6-sigchld.patch new file mode 100644 index 0000000..2256a01 --- /dev/null +++ b/tcp_wrappers-7.6-sigchld.patch @@ -0,0 +1,88 @@ +diff -up tcp_wrappers_7.6/shell_cmd.c.patch20 tcp_wrappers_7.6/shell_cmd.c +--- tcp_wrappers_7.6/shell_cmd.c.patch20 1994-12-28 17:42:44.000000000 +0100 ++++ tcp_wrappers_7.6/shell_cmd.c 2008-08-29 09:45:12.000000000 +0200 +@@ -20,6 +20,11 @@ static char sccsid[] = "@(#) shell_cmd.c + #include + #include + #include ++#include ++#include ++#include ++#include ++#include + + extern void exit(); + +@@ -31,13 +36,42 @@ extern void exit(); + + static void do_child(); + ++/* ++ * The sigchld handler. If there is a SIGCHLD caused by a child other than ++ * ours, we set a flag and raise the signal later. ++ */ ++volatile static int foreign_sigchld; ++volatile static int our_child_pid; ++static void sigchld(int sig, siginfo_t *si, void *unused) ++{ ++ if (si && si->si_pid != our_child_pid) ++ foreign_sigchld = 1; ++} ++ + /* shell_cmd - execute shell command */ + + void shell_cmd(command) + char *command; + { + int child_pid; +- int wait_pid; ++ ++ struct sigaction new_action, old_action; ++ sigset_t new_mask, old_mask, empty_mask; ++ ++ new_action.sa_sigaction = &sigchld; ++ new_action.sa_flags = SA_SIGINFO; ++ sigemptyset(&new_action.sa_mask); ++ sigemptyset(&new_mask); ++ sigemptyset(&empty_mask); ++ sigaddset(&new_mask, SIGCHLD); ++ ++ /* ++ * Set the variables for handler, set the handler and block the signal ++ * until we have the pid. ++ */ ++ foreign_sigchld = 0; our_child_pid = 0; ++ sigprocmask(SIG_BLOCK, &new_mask, &old_mask); ++ sigaction(SIGCHLD, &new_action, &old_action); + + /* + * Most of the work is done within the child process, to minimize the +@@ -49,12 +83,26 @@ char *command; + tcpd_warn("cannot fork: %m"); + break; + case 00: /* child */ ++ /* Clear the blocked mask for the child not to be surprised. */ ++ sigprocmask(SIG_SETMASK, &empty_mask, 0); + do_child(command); + /* NOTREACHED */ + default: /* parent */ +- while ((wait_pid = wait((int *) 0)) != -1 && wait_pid != child_pid) +- /* void */ ; ++ our_child_pid = child_pid; ++ sigprocmask(SIG_UNBLOCK, &new_mask, 0); ++ while (waitpid(child_pid, (int *) 0, 0) == -1 && errno == EINTR); + } ++ ++ /* ++ * Revert the signal mask and the SIGCHLD handler. ++ */ ++ sigprocmask(SIG_SETMASK, &old_mask, 0); ++ sigaction(SIGCHLD, &old_action, 0); ++ ++ /* If there was a foreign SIGCHLD, raise it after we have restored the old ++ * mask and handler. */ ++ if (foreign_sigchld) ++ raise(SIGCHLD); + } + + /* do_child - exec command with { stdin, stdout, stderr } to /dev/null */ diff --git a/tcp_wrappers-7.6-siglongjmp.patch b/tcp_wrappers-7.6-siglongjmp.patch new file mode 100644 index 0000000..924d4fb --- /dev/null +++ b/tcp_wrappers-7.6-siglongjmp.patch @@ -0,0 +1,30 @@ +diff -up tcp_wrappers_7.6/rfc931.c.patch19 tcp_wrappers_7.6/rfc931.c +--- tcp_wrappers_7.6/rfc931.c.patch19 2008-08-29 09:45:12.000000000 +0200 ++++ tcp_wrappers_7.6/rfc931.c 2008-08-29 09:45:12.000000000 +0200 +@@ -33,7 +33,7 @@ static char sccsid[] = "@(#) rfc931.c 1. + + int rfc931_timeout = RFC931_TIMEOUT;/* Global so it can be changed */ + +-static jmp_buf timebuf; ++static sigjmp_buf timebuf; + + /* fsocket - open stdio stream on top of socket */ + +@@ -62,7 +62,7 @@ int protocol; + static void timeout(sig) + int sig; + { +- longjmp(timebuf, sig); ++ siglongjmp(timebuf, sig); + } + + /* rfc931 - return remote user name, given socket structures */ +@@ -135,7 +135,7 @@ char *dest; + * Set up a timer so we won't get stuck while waiting for the server. + */ + +- if (setjmp(timebuf) == 0) { ++ if (sigsetjmp(timebuf, 1) == 0) { + /* Save SIGALRM timer and handler. Sudheer Abdul-Salam, SUN. */ + saved_timeout = alarm(0); + nact.sa_handler = timeout; diff --git a/tcp_wrappers-7.6-uchart_fix.patch b/tcp_wrappers-7.6-uchart_fix.patch new file mode 100644 index 0000000..5ac0788 --- /dev/null +++ b/tcp_wrappers-7.6-uchart_fix.patch @@ -0,0 +1,21 @@ +diff -up tcp_wrappers_7.6-ipv6.4/hosts_access.c.ucharpatch tcp_wrappers_7.6-ipv6.4/hosts_access.c +--- tcp_wrappers_7.6-ipv6.4/hosts_access.c.ucharpatch 2013-01-28 10:19:20.424857730 +0100 ++++ tcp_wrappers_7.6-ipv6.4/hosts_access.c 2013-01-28 10:19:44.719991745 +0100 +@@ -514,7 +514,7 @@ static void ipv6_mask(in6p, maskbits) + struct in6_addr *in6p; + int maskbits; + { +- uchar_t *p = (uchar_t*) in6p; ++ unsigned char *p = (unsigned char*) in6p; + + if (maskbits < 0 || maskbits >= IPV6_ABITS) + return; +@@ -525,7 +525,7 @@ int maskbits; + if (maskbits != 0) + *p++ &= 0xff << (8 - maskbits); + +- while (p < (((uchar_t*) in6p)) + sizeof(*in6p)) ++ while (p < (((unsigned char*) in6p)) + sizeof(*in6p)) + *p++ = 0; + } + #endif diff --git a/tcp_wrappers-7.6-warnings.patch b/tcp_wrappers-7.6-warnings.patch new file mode 100644 index 0000000..a12ced5 --- /dev/null +++ b/tcp_wrappers-7.6-warnings.patch @@ -0,0 +1,568 @@ +diff -up tcp_wrappers_7.6-ipv6.4/clean_exit.c.warnings tcp_wrappers_7.6-ipv6.4/clean_exit.c +--- tcp_wrappers_7.6-ipv6.4/clean_exit.c.warnings 1994-12-28 17:42:20.000000000 +0100 ++++ tcp_wrappers_7.6-ipv6.4/clean_exit.c 2013-08-15 18:51:57.533244197 +0200 +@@ -13,6 +13,7 @@ static char sccsid[] = "@(#) clean_exit. + #endif + + #include ++#include + + extern void exit(); + +diff -up tcp_wrappers_7.6-ipv6.4/fakelog.c.warnings tcp_wrappers_7.6-ipv6.4/fakelog.c +--- tcp_wrappers_7.6-ipv6.4/fakelog.c.warnings 1994-12-28 17:42:22.000000000 +0100 ++++ tcp_wrappers_7.6-ipv6.4/fakelog.c 2013-08-15 18:51:57.533244197 +0200 +@@ -17,6 +17,7 @@ static char sccsid[] = "@(#) fakelog.c 1 + + /* ARGSUSED */ + ++void + openlog(name, logopt, facility) + char *name; + int logopt; +@@ -27,6 +28,7 @@ int facility; + + /* vsyslog - format one record */ + ++void + vsyslog(severity, fmt, ap) + int severity; + char *fmt; +@@ -43,6 +45,7 @@ va_list ap; + + /* VARARGS */ + ++void + VARARGS(syslog, int, severity) + { + va_list ap; +@@ -56,6 +59,7 @@ VARARGS(syslog, int, severity) + + /* closelog - dummy */ + ++void + closelog() + { + /* void */ +diff -up tcp_wrappers_7.6-ipv6.4/fix_options.c.warnings tcp_wrappers_7.6-ipv6.4/fix_options.c +--- tcp_wrappers_7.6-ipv6.4/fix_options.c.warnings 2013-08-15 18:51:57.446243821 +0200 ++++ tcp_wrappers_7.6-ipv6.4/fix_options.c 2013-08-15 18:51:57.534244202 +0200 +@@ -32,13 +32,15 @@ static char sccsid[] = "@(#) fix_options + + /* fix_options - get rid of IP-level socket options */ + ++void + fix_options(request) + struct request_info *request; + { + #ifdef IP_OPTIONS + unsigned char optbuf[BUFFER_SIZE / 3], *cp; + char lbuf[BUFFER_SIZE], *lp; +- int optsize = sizeof(optbuf), ipproto; ++ unsigned int optsize = sizeof(optbuf); ++ int ipproto; + struct protoent *ip; + int fd = request->fd; + unsigned int opt; +@@ -46,7 +48,7 @@ struct request_info *request; + struct in_addr dummy; + #ifdef HAVE_IPV6 + struct sockaddr_storage ss; +- int sslen; ++ unsigned int sslen; + + /* + * check if this is AF_INET socket +diff -up tcp_wrappers_7.6-ipv6.4/hosts_access.c.warnings tcp_wrappers_7.6-ipv6.4/hosts_access.c +--- tcp_wrappers_7.6-ipv6.4/hosts_access.c.warnings 2013-08-15 18:51:57.529244180 +0200 ++++ tcp_wrappers_7.6-ipv6.4/hosts_access.c 2013-08-15 18:51:57.535244206 +0200 +@@ -33,6 +33,9 @@ static char sccsid[] = "@(#) hosts_acces + #include + #include + #include ++#include ++#include ++#include + + extern char *fgets(); + extern int errno; +@@ -49,6 +52,8 @@ extern int errno; + + extern jmp_buf tcpd_buf; + ++int match_pattern_ylo(const char *, const char *); ++ + /* Delimiters for lists of daemons or clients. */ + + static char sep[] = ", \t\r\n"; +diff -up tcp_wrappers_7.6-ipv6.4/inetcf.c.warnings tcp_wrappers_7.6-ipv6.4/inetcf.c +--- tcp_wrappers_7.6-ipv6.4/inetcf.c.warnings 2013-08-15 18:51:57.474243942 +0200 ++++ tcp_wrappers_7.6-ipv6.4/inetcf.c 2013-08-15 18:51:57.535244206 +0200 +@@ -42,6 +42,8 @@ char *inet_files[] = { + static void inet_chk(); + static char *base_name(); + ++int check_path(char *, struct stat *); ++ + /* + * Structure with everything we know about a service. + */ +diff -up tcp_wrappers_7.6-ipv6.4/options.c.warnings tcp_wrappers_7.6-ipv6.4/options.c +--- tcp_wrappers_7.6-ipv6.4/options.c.warnings 2013-08-15 18:51:57.520244141 +0200 ++++ tcp_wrappers_7.6-ipv6.4/options.c 2013-08-15 18:51:57.536244211 +0200 +@@ -41,12 +41,14 @@ static char sccsid[] = "@(#) options.c 1 + #include + #include + #include ++#include + #include + #include + #include + #include + #include + #include ++#include + + #ifndef MAXPATHNAMELEN + #define MAXPATHNAMELEN BUFSIZ +@@ -108,21 +110,21 @@ struct option { + /* List of known keywords. Add yours here. */ + + static struct option option_table[] = { +- "user", user_option, NEED_ARG, +- "group", group_option, NEED_ARG, +- "umask", umask_option, NEED_ARG, +- "linger", linger_option, NEED_ARG, +- "keepalive", keepalive_option, 0, +- "spawn", spawn_option, NEED_ARG | EXPAND_ARG, +- "twist", twist_option, NEED_ARG | EXPAND_ARG | USE_LAST, +- "rfc931", rfc931_option, OPT_ARG, +- "setenv", setenv_option, NEED_ARG | EXPAND_ARG, +- "nice", nice_option, OPT_ARG, +- "severity", severity_option, NEED_ARG, +- "allow", allow_option, USE_LAST, +- "deny", deny_option, USE_LAST, +- "banners", banners_option, NEED_ARG, +- 0, ++ { "user", user_option, NEED_ARG }, ++ { "group", group_option, NEED_ARG }, ++ { "umask", umask_option, NEED_ARG }, ++ { "linger", linger_option, NEED_ARG }, ++ { "keepalive", keepalive_option, 0 }, ++ { "spawn", spawn_option, NEED_ARG | EXPAND_ARG }, ++ { "twist", twist_option, NEED_ARG | EXPAND_ARG | USE_LAST }, ++ { "rfc931", rfc931_option, OPT_ARG }, ++ { "setenv", setenv_option, NEED_ARG | EXPAND_ARG }, ++ { "nice", nice_option, OPT_ARG }, ++ { "severity", severity_option, NEED_ARG }, ++ { "allow", allow_option, USE_LAST }, ++ { "deny", deny_option, USE_LAST }, ++ { "banners", banners_option, NEED_ARG }, ++ { NULL, NULL, 0 } + }; + + /* process_options - process access control options */ +@@ -227,13 +229,13 @@ struct request_info *request; + sprintf(path, "%s/%s", value, eval_daemon(request)); + if ((fp = fopen(path, "r")) != 0) { + while ((ch = fgetc(fp)) == 0) +- write(request->fd, "", 1); ++ if (write(request->fd, "", 1)); + ungetc(ch, fp); + while (fgets(ibuf, sizeof(ibuf) - 1, fp)) { + if (split_at(ibuf, '\n')) + strcat(ibuf, "\r\n"); + percent_x(obuf, sizeof(obuf), ibuf, request); +- write(request->fd, obuf, strlen(obuf)); ++ if(write(request->fd, obuf, strlen(obuf))); + } + fclose(fp); + } else if (stat(value, &st) < 0) { +@@ -462,85 +464,85 @@ struct syslog_names { + + static struct syslog_names log_fac[] = { + #ifdef LOG_KERN +- "kern", LOG_KERN, ++ { "kern", LOG_KERN }, + #endif + #ifdef LOG_USER +- "user", LOG_USER, ++ { "user", LOG_USER }, + #endif + #ifdef LOG_MAIL +- "mail", LOG_MAIL, ++ { "mail", LOG_MAIL }, + #endif + #ifdef LOG_DAEMON +- "daemon", LOG_DAEMON, ++ { "daemon", LOG_DAEMON }, + #endif + #ifdef LOG_AUTH +- "auth", LOG_AUTH, ++ { "auth", LOG_AUTH }, + #endif + #ifdef LOG_LPR +- "lpr", LOG_LPR, ++ { "lpr", LOG_LPR }, + #endif + #ifdef LOG_NEWS +- "news", LOG_NEWS, ++ { "news", LOG_NEWS }, + #endif + #ifdef LOG_UUCP +- "uucp", LOG_UUCP, ++ { "uucp", LOG_UUCP }, + #endif + #ifdef LOG_CRON +- "cron", LOG_CRON, ++ { "cron", LOG_CRON }, + #endif + #ifdef LOG_LOCAL0 +- "local0", LOG_LOCAL0, ++ { "local0", LOG_LOCAL0 }, + #endif + #ifdef LOG_LOCAL1 +- "local1", LOG_LOCAL1, ++ { "local1", LOG_LOCAL1 }, + #endif + #ifdef LOG_LOCAL2 +- "local2", LOG_LOCAL2, ++ { "local2", LOG_LOCAL2 }, + #endif + #ifdef LOG_LOCAL3 +- "local3", LOG_LOCAL3, ++ { "local3", LOG_LOCAL3 }, + #endif + #ifdef LOG_LOCAL4 +- "local4", LOG_LOCAL4, ++ { "local4", LOG_LOCAL4 }, + #endif + #ifdef LOG_LOCAL5 +- "local5", LOG_LOCAL5, ++ { "local5", LOG_LOCAL5 }, + #endif + #ifdef LOG_LOCAL6 +- "local6", LOG_LOCAL6, ++ { "local6", LOG_LOCAL6 }, + #endif + #ifdef LOG_LOCAL7 +- "local7", LOG_LOCAL7, ++ { "local7", LOG_LOCAL7 }, + #endif +- 0, ++ { NULL, 0 } + }; + + static struct syslog_names log_sev[] = { + #ifdef LOG_EMERG +- "emerg", LOG_EMERG, ++ { "emerg", LOG_EMERG }, + #endif + #ifdef LOG_ALERT +- "alert", LOG_ALERT, ++ { "alert", LOG_ALERT }, + #endif + #ifdef LOG_CRIT +- "crit", LOG_CRIT, ++ { "crit", LOG_CRIT }, + #endif + #ifdef LOG_ERR +- "err", LOG_ERR, ++ { "err", LOG_ERR }, + #endif + #ifdef LOG_WARNING +- "warning", LOG_WARNING, ++ { "warning", LOG_WARNING }, + #endif + #ifdef LOG_NOTICE +- "notice", LOG_NOTICE, ++ { "notice", LOG_NOTICE }, + #endif + #ifdef LOG_INFO +- "info", LOG_INFO, ++ { "info", LOG_INFO }, + #endif + #ifdef LOG_DEBUG +- "debug", LOG_DEBUG, ++ { "debug", LOG_DEBUG }, + #endif +- 0, ++ { NULL, 0 } + }; + + /* severity_map - lookup facility or severity value */ +@@ -601,7 +603,7 @@ char *string; + if (src[0] == 0) + return (0); + +- while (ch = *src) { ++ while ((ch = *src)) { + if (ch == ':') { + if (*++src == 0) + tcpd_warn("rule ends in \":\""); +diff -up tcp_wrappers_7.6-ipv6.4/percent_m.c.warnings tcp_wrappers_7.6-ipv6.4/percent_m.c +--- tcp_wrappers_7.6-ipv6.4/percent_m.c.warnings 2003-04-16 16:12:24.000000000 +0200 ++++ tcp_wrappers_7.6-ipv6.4/percent_m.c 2013-08-15 18:51:57.536244211 +0200 +@@ -29,7 +29,7 @@ char *ibuf; + char *bp = obuf; + char *cp = ibuf; + +- while (*bp = *cp) ++ while ((*bp = *cp)) + if (*cp == '%' && cp[1] == 'm') { + #ifdef USE_STRERROR + strcpy(bp, strerror(errno)); +diff -up tcp_wrappers_7.6-ipv6.4/percent_x.c.warnings tcp_wrappers_7.6-ipv6.4/percent_x.c +--- tcp_wrappers_7.6-ipv6.4/percent_x.c.warnings 1994-12-28 17:42:38.000000000 +0100 ++++ tcp_wrappers_7.6-ipv6.4/percent_x.c 2013-08-15 18:51:57.537244215 +0200 +@@ -19,6 +19,7 @@ static char sccsid[] = "@(#) percent_x.c + #include + #include + #include ++#include + + extern void exit(); + +diff -up tcp_wrappers_7.6-ipv6.4/rfc931.c.warnings tcp_wrappers_7.6-ipv6.4/rfc931.c +--- tcp_wrappers_7.6-ipv6.4/rfc931.c.warnings 2013-08-15 18:51:57.484243985 +0200 ++++ tcp_wrappers_7.6-ipv6.4/rfc931.c 2013-08-15 18:51:57.537244215 +0200 +@@ -23,6 +23,7 @@ static char sccsid[] = "@(#) rfc931.c 1. + #include + #include + #include ++#include + + /* Local stuff. */ + +@@ -81,7 +82,7 @@ char *dest; + char *cp; + char *result = unknown; + FILE *fp; +- unsigned saved_timeout; ++ unsigned saved_timeout = 0; + struct sigaction nact, oact; + + /* +@@ -165,7 +166,7 @@ char *dest; + * protocol, not part of the data. + */ + +- if (cp = strchr(user, '\r')) ++ if ((cp = strchr(user, '\r'))) + *cp = 0; + result = user; + } +diff -up tcp_wrappers_7.6-ipv6.4/safe_finger.c.warnings tcp_wrappers_7.6-ipv6.4/safe_finger.c +--- tcp_wrappers_7.6-ipv6.4/safe_finger.c.warnings 2013-08-15 18:51:57.521244146 +0200 ++++ tcp_wrappers_7.6-ipv6.4/safe_finger.c 2013-08-15 18:51:57.538244219 +0200 +@@ -24,8 +24,13 @@ static char sccsid[] = "@(#) safe_finger + #include + #include + #include ++#include ++#include ++#include ++#include + #include + #include ++#include + + extern void exit(); + +@@ -40,6 +45,8 @@ char path[] = "PATH=/bin:/usr/bin:/us + #define UNPRIV_NAME "nobody" /* Preferred privilege level */ + #define UNPRIV_UGID 32767 /* Default uid and gid */ + ++int pipe_stdin(char **); ++ + int finger_pid; + + void cleanup(sig) +@@ -49,6 +56,7 @@ int sig; + exit(0); + } + ++int + main(argc, argv) + int argc; + char **argv; +@@ -65,13 +73,17 @@ char **argv; + */ + if (getuid() == 0 || geteuid() == 0) { + if ((pwd = getpwnam(UNPRIV_NAME)) && pwd->pw_uid > 0) { +- setgid(pwd->pw_gid); ++ if (setgid(pwd->pw_gid) != 0) ++ return 1; + initgroups(UNPRIV_NAME, pwd->pw_gid); +- setuid(pwd->pw_uid); ++ if (setuid(pwd->pw_uid)) ++ return 1; + } else { +- setgid(UNPRIV_UGID); ++ if (setgid(UNPRIV_UGID)) ++ return 1; + setgroups(0, NULL); +- setuid(UNPRIV_UGID); ++ if (setuid(UNPRIV_UGID)) ++ return 1; + } + } + +diff -up tcp_wrappers_7.6-ipv6.4/scaffold.c.warnings tcp_wrappers_7.6-ipv6.4/scaffold.c +--- tcp_wrappers_7.6-ipv6.4/scaffold.c.warnings 2013-08-15 18:51:57.457243868 +0200 ++++ tcp_wrappers_7.6-ipv6.4/scaffold.c 2013-08-15 18:51:57.538244219 +0200 +@@ -20,6 +20,8 @@ static char sccs_id[] = "@(#) scaffold.c + #include + #include + #include ++#include ++#include + + #ifndef INADDR_NONE + #define INADDR_NONE (-1) /* XXX should be 0xffffffff */ +diff -up tcp_wrappers_7.6-ipv6.4/socket.c.warnings tcp_wrappers_7.6-ipv6.4/socket.c +--- tcp_wrappers_7.6-ipv6.4/socket.c.warnings 2013-08-15 18:51:57.479243964 +0200 ++++ tcp_wrappers_7.6-ipv6.4/socket.c 2013-08-15 18:52:32.346394921 +0200 +@@ -21,6 +21,7 @@ static char sccsid[] = "@(#) socket.c 1. + + /* System libraries. */ + ++#include + #include + #include + #include +@@ -84,7 +85,7 @@ struct request_info *request; + { + static struct sockaddr_gen client; + static struct sockaddr_gen server; +- int len; ++ unsigned len; + char buf[BUFSIZ]; + int fd = request->fd; + +@@ -168,7 +169,7 @@ struct request_info *request; + sock_methods(request); + + memcpy(&client, res->ai_addr, res->ai_addrlen); +- request->client->sin = (struct sockaddr *)&client; ++ request->client->sin = (struct sockaddr_gen *)&client; + freeaddrinfo(res); + + request->client->name[0] = 0; +@@ -293,7 +294,7 @@ int fd; + { + char buf[BUFSIZ]; + struct sockaddr_in sin; +- int size = sizeof(sin); ++ unsigned size = sizeof(sin); + + /* + * Eat up the not-yet received datagram. Some systems insist on a +diff -up tcp_wrappers_7.6-ipv6.4/tcpdchk.c.warnings tcp_wrappers_7.6-ipv6.4/tcpdchk.c +--- tcp_wrappers_7.6-ipv6.4/tcpdchk.c.warnings 2013-08-15 18:51:57.529244180 +0200 ++++ tcp_wrappers_7.6-ipv6.4/tcpdchk.c 2013-08-15 18:51:57.540244228 +0200 +@@ -30,6 +30,8 @@ static char sccsid[] = "@(#) tcpdchk.c 1 + #include + #include + #include ++#include ++#include + + extern int errno; + extern void exit(); +@@ -199,13 +201,15 @@ struct request_info *request; + char sv_list[BUFLEN]; /* becomes list of daemons */ + char *cl_list; /* becomes list of requests */ + char *sh_cmd; /* becomes optional shell command */ ++#ifndef PROCESS_OPTIONS + char buf[BUFSIZ]; ++#endif + int verdict; + struct tcpd_context saved_context; + + saved_context = tcpd_context; /* stupid compilers */ + +- if (fp = fopen(table, "r")) { ++ if ((fp = fopen(table, "r"))) { + tcpd_context.file = table; + tcpd_context.line = 0; + while (xgets(sv_list, sizeof(sv_list), fp)) { +@@ -331,7 +335,7 @@ char *list; + clients = 0; + } else { + clients++; +- if (host = split_at(cp + 1, '@')) { /* user@host */ ++ if ((host = split_at(cp + 1, '@'))) { /* user@host */ + check_user(cp); + check_host(host); + } else { +@@ -449,7 +453,7 @@ char *pat; + if (err) + tcpd_warn("bad IP6 address specification: %s", pat); + #endif +- } else if (mask = split_at(pat, '/')) { /* network/netmask */ ++ } else if ((mask = split_at(pat, '/'))) { /* network/netmask */ + if (dot_quad_addr(pat) == INADDR_NONE + || dot_quad_addr(mask) == INADDR_NONE) + tcpd_warn("%s/%s: bad net/mask pattern", pat, mask); +diff -up tcp_wrappers_7.6-ipv6.4/tcpd.c.warnings tcp_wrappers_7.6-ipv6.4/tcpd.c +--- tcp_wrappers_7.6-ipv6.4/tcpd.c.warnings 2013-08-15 18:51:57.450243838 +0200 ++++ tcp_wrappers_7.6-ipv6.4/tcpd.c 2013-08-15 18:51:57.540244228 +0200 +@@ -24,6 +24,7 @@ static char sccsid[] = "@(#) tcpd.c 1.10 + #include + #include + #include ++#include + + #ifndef MAXPATHNAMELEN + #define MAXPATHNAMELEN BUFSIZ +@@ -38,9 +39,12 @@ static char sccsid[] = "@(#) tcpd.c 1.10 + #include "patchlevel.h" + #include "tcpd.h" + ++void fix_options(struct request_info *); ++ + int allow_severity = SEVERITY; /* run-time adjustable */ + int deny_severity = LOG_WARNING; /* ditto */ + ++int + main(argc, argv) + int argc; + char **argv; +diff -up tcp_wrappers_7.6-ipv6.4/tcpdmatch.c.warnings tcp_wrappers_7.6-ipv6.4/tcpdmatch.c +--- tcp_wrappers_7.6-ipv6.4/tcpdmatch.c.warnings 2013-08-15 18:51:57.503244068 +0200 ++++ tcp_wrappers_7.6-ipv6.4/tcpdmatch.c 2013-08-15 18:51:57.541244232 +0200 +@@ -26,9 +26,11 @@ static char sccsid[] = "@(#) tcpdmatch.c + #include + #include + #include ++#include + #include + #include + #include ++#include + + extern void exit(); + extern int optind; +diff -up tcp_wrappers_7.6-ipv6.4/try-from.c.warnings tcp_wrappers_7.6-ipv6.4/try-from.c +--- tcp_wrappers_7.6-ipv6.4/try-from.c.warnings 1994-12-28 17:42:55.000000000 +0100 ++++ tcp_wrappers_7.6-ipv6.4/try-from.c 2013-08-15 18:51:57.541244232 +0200 +@@ -37,6 +37,7 @@ static char sccsid[] = "@(#) try-from.c + int allow_severity = SEVERITY; /* run-time adjustable */ + int deny_severity = LOG_WARNING; /* ditto */ + ++int + main(argc, argv) + int argc; + char **argv; +diff -up tcp_wrappers_7.6-ipv6.4/update.c.warnings tcp_wrappers_7.6-ipv6.4/update.c +--- tcp_wrappers_7.6-ipv6.4/update.c.warnings 1999-10-27 10:44:39.000000000 +0200 ++++ tcp_wrappers_7.6-ipv6.4/update.c 2013-08-15 18:51:57.541244232 +0200 +@@ -22,6 +22,7 @@ static char sccsid[] = "@(#) update.c 1. + #include + #include + #include ++#include + + /* Local stuff. */ + diff --git a/tcp_wrappers-7.6-xgets.patch b/tcp_wrappers-7.6-xgets.patch new file mode 100644 index 0000000..522f6e9 --- /dev/null +++ b/tcp_wrappers-7.6-xgets.patch @@ -0,0 +1,49 @@ +commit 3ae65dc9a1c78c3088a08091f5d948fbbb8929af +Author: Jakub Jelen +Date: Tue Feb 23 17:28:15 2016 +0100 + + tcp_wrappers-7.6-xgets.patch + +diff --git a/misc.c b/misc.c +index b248a5d..204546c 100644 +--- a/misc.c ++++ b/misc.c +@@ -35,20 +35,32 @@ FILE *fp; + { + int got; + char *start = ptr; ++ int c, last; + +- while (fgets(ptr, len, fp)) { ++ while (len && fgets(ptr, len, fp)) { + got = strlen(ptr); + if (got >= 1 && ptr[got - 1] == '\n') { + tcpd_context.line++; + if (got >= 2 && ptr[got - 2] == '\\') { +- got -= 2; ++ got -= 2; + } else { +- return (start); ++ return (start); + } ++ ptr += got; ++ len -= got; ++ ptr[0] = 0; ++ } else { ++ /* over buffer len */ ++ last = (got >= 1) ? ptr[got - 1] : '\0'; ++ while ((c = fgetc(fp)) != EOF) { ++ if (c == '\n') { ++ tcpd_context.line++; ++ if (last != '\\') ++ return (start); ++ } ++ last = c; ++ } + } +- ptr += got; +- len -= got; +- ptr[0] = 0; + } + return (ptr > start ? start : 0); + } diff --git a/tcp_wrappers.spec b/tcp_wrappers.spec new file mode 100644 index 0000000..c487c0f --- /dev/null +++ b/tcp_wrappers.spec @@ -0,0 +1,124 @@ +Name: tcp_wrappers +Version: 7.6 +Release: 96 +Summary: a host-based networking ACL system +License: BSD +URL: http://ftp.porcupine.org/pub/security/index.html +Source0: http://ftp.porcupine.org/pub/security/%{name}_%{version}-ipv6.4.tar.gz + +BuildRequires: glibc-devel >= 2.2 libnsl2-devel +Provides: tcp_wrappers-libs +Obsoletes: tcp_wrappers-libs + +# backport from fedora +Patch0000: tcpw7.2-config.patch +Patch0001: tcpw7.2-setenv.patch +Patch0002: tcpw7.6-netgroup.patch +Patch0003: tcp_wrappers-7.6-bug11881.patch +Patch0004: tcp_wrappers-7.6-bug17795.patch +Patch0005: tcp_wrappers-7.6-bug17847.patch +Patch0006: tcp_wrappers-7.6-fixgethostbyname.patch +Patch0007: tcp_wrappers-7.6-docu.patch +Patch0008: tcp_wrappers-7.6-man.patch +Patch0009: tcp_wrappers.usagi-ipv6.patch +Patch0011: tcp_wrappers-7.6-shared.patch +Patch0012: tcp_wrappers-7.6-sig.patch +Patch0014: tcp_wrappers-7.6-ldflags.patch +Patch0015: tcp_wrappers-7.6-fix_sig-bug141110.patch +Patch0016: tcp_wrappers-7.6-162412.patch +Patch0017: tcp_wrappers-7.6-220015.patch +Patch0019: tcp_wrappers-7.6-siglongjmp.patch +Patch0020: tcp_wrappers-7.6-sigchld.patch +Patch0021: tcp_wrappers-7.6-196326.patch +Patch0022: tcp_wrappers_7.6-249430.patch +Patch0023: tcp_wrappers-7.6-inetdconf.patch +Patch0024: tcp_wrappers-7.6-bug698464.patch +Patch0026: tcp_wrappers-7.6-xgets.patch +Patch0027: tcp_wrappers-7.6-initgroups.patch +Patch0028: tcp_wrappers-7.6-warnings.patch +Patch0029: tcp_wrappers-7.6-uchart_fix.patch +Patch0030: tcp_wrappers-7.6-altformat.patch +Patch0031: tcp_wrappers-7.6-aclexec.patch + +Patch6000: 15_match_clarify.patch +Patch6001: man_fromhost.patch +Patch6002: tcpdchk_libwrapped.patch + +%description +The tcp_wrappers is a host-based networking ACL system, used to filter network access to Internet Protocol servers on (Unix-like) operating systems such as Linux or BSD. It allows host or subnetwork IP addresses, names and/or ident query replies, to be used as tokens on which to filter for access control purposes. + +%package devel +Summary: development header files for tcp_wrappers +BuildArch: noarch +Requires: %{name} = %{version}-%{release} + +%description devel +development header files for tcp_wrappers. + +%package help +Summary: help document for tcp_wrappers +BuildArch: noarch +Requires: %{name} = %{version}-%{release} + +%description help +help document for tcp_wrappers. + +%prep +%autosetup -n %{name}_%{version}-ipv6.4 -p1 + +%build +%make_build RPM_OPT_FLAGS="$RPM_OPT_FLAGS -fPIC -DPIC -D_REENTRANT -DHAVE_STRERROR -DACLEXEC"\ +LDFLAGS="$RPM_LD_FLAGS" MAJOR="0" MINOR="7" REL="6" linux + +%install +rm -rf ${RPM_BUILD_ROOT} +mkdir -p ${RPM_BUILD_ROOT}%{_libdir} +mkdir -p ${RPM_BUILD_ROOT}%{_sbindir} +mkdir -p ${RPM_BUILD_ROOT}%{_includedir} +mkdir -p ${RPM_BUILD_ROOT}%{_mandir}/man{3,5,8} + +cp -a libwrap.so* ${RPM_BUILD_ROOT}%{_libdir} +install -p -m 755 tcpd ${RPM_BUILD_ROOT}%{_sbindir} +install -p -m 755 try-from ${RPM_BUILD_ROOT}%{_sbindir} +install -p -m 755 tcpdmatch ${RPM_BUILD_ROOT}%{_sbindir} +install -p -m 755 safe_finger ${RPM_BUILD_ROOT}%{_sbindir} +install -p -m 755 tcpdchk ${RPM_BUILD_ROOT}%{_sbindir} +install -p -m 644 tcpd.h ${RPM_BUILD_ROOT}%{_includedir} +install -p -m 644 *.3 ${RPM_BUILD_ROOT}%{_mandir}/man3 +install -p -m 644 *.5 ${RPM_BUILD_ROOT}%{_mandir}/man5 +install -p -m 644 *.8 ${RPM_BUILD_ROOT}%{_mandir}/man8 + +ln -sf hosts_access.5 ${RPM_BUILD_ROOT}%{_mandir}/man5/hosts.allow.5 +ln -sf hosts_access.5 ${RPM_BUILD_ROOT}%{_mandir}/man5/hosts.deny.5 + +%check + +%pre + +%preun + +%post +/sbin/ldconfig + +%postun +/sbin/ldconfig + +%files +%defattr(-,root,root) +%doc BLURB CHANGES README* Banners.Makefile +%license DISCLAIMER +%{_sbindir}/* +%{_libdir}/libwrap.so* + +%files devel +%{_includedir}/* + +%files help +%{_mandir}/man3/* +%{_mandir}/man5/* +%{_mandir}/man8/* + +%changelog +* Wed Sep 04 2019 Huiming Xie - 7.6-96 +- Package init + diff --git a/tcp_wrappers.usagi-ipv6.patch b/tcp_wrappers.usagi-ipv6.patch new file mode 100644 index 0000000..e3bc707 --- /dev/null +++ b/tcp_wrappers.usagi-ipv6.patch @@ -0,0 +1,271 @@ +diff -up tcp_wrappers_7.6/fix_options.c.patch9 tcp_wrappers_7.6/fix_options.c +--- tcp_wrappers_7.6/fix_options.c.patch9 1997-04-08 02:29:19.000000000 +0200 ++++ tcp_wrappers_7.6/fix_options.c 2008-08-29 09:45:12.000000000 +0200 +@@ -11,6 +11,9 @@ static char sccsid[] = "@(#) fix_options + + #include + #include ++#ifdef HAVE_IPV6 ++#include ++#endif + #include + #include + #include +@@ -41,6 +44,22 @@ struct request_info *request; + unsigned int opt; + int optlen; + struct in_addr dummy; ++#ifdef HAVE_IPV6 ++ struct sockaddr_storage ss; ++ int sslen; ++ ++ /* ++ * check if this is AF_INET socket ++ * XXX IPv6 support? ++ */ ++ sslen = sizeof(ss); ++ if (getsockname(fd, (struct sockaddr *)&ss, &sslen) < 0) { ++ syslog(LOG_ERR, "getpeername: %m"); ++ clean_exit(request); ++ } ++ if (ss.ss_family != AF_INET) ++ return; ++#endif + + if ((ip = getprotobyname("ip")) != 0) + ipproto = ip->p_proto; +diff -up tcp_wrappers_7.6/hosts_access.5.patch9 tcp_wrappers_7.6/hosts_access.5 +--- tcp_wrappers_7.6/hosts_access.5.patch9 2008-08-29 09:45:12.000000000 +0200 ++++ tcp_wrappers_7.6/hosts_access.5 2008-08-29 09:45:12.000000000 +0200 +@@ -85,11 +85,18 @@ member of the specified netgroup. Netgro + for daemon process names or for client user names. + .IP \(bu + An expression of the form `n.n.n.n/m.m.m.m\' is interpreted as a +-`net/mask\' pair. A host address is matched if `net\' is equal to the ++`net/mask\' pair. An IPv4 host address is matched if `net\' is equal to the + bitwise AND of the address and the `mask\'. For example, the net/mask + pattern `131.155.72.0/255.255.254.0\' matches every address in the + range `131.155.72.0\' through `131.155.73.255\'. + .IP \(bu ++An expression of the form `[n:n:n:n:n:n:n:n/m]\' is interpreted as a ++`[net/prefixlen]\' pair. An IPv6 host address is matched if ++`prefixlen\' bits of `net\' is equal to the `prefixlen\' bits of the ++address. For example, the [net/prefixlen] pattern ++`[3ffe:505:2:1::/64]\' matches every address in the range ++`3ffe:505:2:1::\' through `3ffe:505:2:1:ffff:ffff:ffff:ffff\'. ++.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 +diff -up tcp_wrappers_7.6/inetcf.c.patch9 tcp_wrappers_7.6/inetcf.c +--- tcp_wrappers_7.6/inetcf.c.patch9 1997-02-12 02:13:24.000000000 +0100 ++++ tcp_wrappers_7.6/inetcf.c 2008-08-29 09:45:12.000000000 +0200 +@@ -26,6 +26,9 @@ extern void exit(); + * guesses. Shorter names follow longer ones. + */ + char *inet_files[] = { ++#ifdef HAVE_IPV6 ++ "/usr/local/v6/etc/inet6d.conf", /* KAME */ ++#endif + "/private/etc/inetd.conf", /* NEXT */ + "/etc/inet/inetd.conf", /* SYSV4 */ + "/usr/etc/inetd.conf", /* IRIX?? */ +diff -up tcp_wrappers_7.6/Makefile.patch9 tcp_wrappers_7.6/Makefile +--- tcp_wrappers_7.6/Makefile.patch9 2013-01-25 10:53:33.891349937 +0100 ++++ tcp_wrappers_7.6/Makefile 2013-01-25 11:00:57.362801588 +0100 +@@ -21,7 +21,7 @@ what: + @echo " dynix epix esix freebsd hpux irix4 irix5 irix6 isc iunix" + @echo " linux machten mips(untested) ncrsvr4 netbsd next osf power_unix_211" + @echo " ptx-2.x ptx-generic pyramid sco sco-nis sco-od2 sco-os5 sinix sunos4" +- @echo " sunos40 sunos5 sysv4 tandem ultrix unicos7 unicos8 unixware1 unixware2" ++ @echo " sunos40 sunos5 solaris8 sysv4 tandem ultrix unicos7 unicos8 unixware1 unixware2" + @echo " uts215 uxp" + @echo + @echo "If none of these match your environment, edit the system" +@@ -138,13 +138,25 @@ epix: + + freebsd: + @make REAL_DAEMON_DIR=$(REAL_DAEMON_DIR) STYLE=$(STYLE) \ ++ LIBS="-L/usr/local/v6/lib -linet6" \ + LIBS= RANLIB=ranlib ARFLAGS=rv AUX_OBJ= NETGROUP= TLI= \ +- EXTRA_CFLAGS=-DUSE_STRERROR VSYSLOG= all ++ EXTRA_CFLAGS="-DUSE_STRERROR -Dss_family=__ss_family -Dss_len=__ss_len" VSYSLOG= all ++ ++netbsd: ++ @make REAL_DAEMON_DIR=$(REAL_DAEMON_DIR) STYLE=$(STYLE) \ ++ LIBS= RANLIB=ranlib ARFLAGS=rv AUX_OBJ= NETGROUP= TLI= \ ++ EXTRA_CFLAGS="-DSYS_ERRLIST_DEFINED -Dss_family=__ss_family -Dss_len=__ss_len" VSYSLOG= all + + linux: + @make REAL_DAEMON_DIR=$(REAL_DAEMON_DIR) STYLE=$(STYLE) \ + LIBS="-lnsl" RANLIB=ranlib ARFLAGS=rv AUX_OBJ= \ +- NETGROUP="-DNETGROUP" TLI= EXTRA_CFLAGS="$(RPM_OPT_FLAGS) -DUSE_STRERROR -DSYS_ERRLIST_DEFINED -DBROKEN_SO_LINGER" all ++ NETGROUP="-DNETGROUP" TLI= EXTRA_CFLAGS="$(RPM_OPT_FLAGS) -DUSE_STRERROR -DSYS_ERRLIST_DEFINED -DBROKEN_SO_LINGER -Dss_family=__ss_family -Dss_len=__ss_len" all ++ ++linux-old: ++ @make REAL_DAEMON_DIR=$(REAL_DAEMON_DIR) STYLE=$(STYLE) \ ++ LIBS="/usr/inet6/lib/libinet6.a -lresolv" \ ++ RANLIB=ranlib ARFLAGS=rv AUX_OBJ=setenv.o NETGROUP= TLI= \ ++ EXTRA_CFLAGS="-DSYS_ERRLIST_DEFINED -DBROKEN_SO_LINGER -Dss_family=sin6_family -Dsockaddr_storage=sockaddr_in6 -I/usr/inet6/include" all + + # This is good for many SYSV+BSD hybrids with NIS, probably also for HP-UX 7.x. + hpux hpux8 hpux9 hpux10: +@@ -197,6 +209,13 @@ sunos5: + BUGS="$(BUGS) -DSOLARIS_24_GETHOSTBYNAME_BUG" IPV6="$(IPV6)" \ + EXTRA_CFLAGS=-DUSE_STRERROR all + ++# SunOS 5.8 is another SYSV4 variant, but has IPv6 support ++solaris8: ++ @make REAL_DAEMON_DIR=$(REAL_DAEMON_DIR) STYLE=$(STYLE) \ ++ LIBS="-lsocket -lnsl" RANLIB=echo ARFLAGS=rv VSYSLOG= \ ++ NETGROUP=-DNETGROUP AUX_OBJ=setenv.o TLI=-DTLI \ ++ EXTRA_CFLAGS="-DNO_CLONE_DEVICE -DINT32_T" all ++ + # Generic SYSV40 + esix sysv4: + @make REAL_DAEMON_DIR=$(REAL_DAEMON_DIR) STYLE=$(STYLE) \ +@@ -392,7 +411,7 @@ AR = ar + # the ones provided with this source distribution. The environ.c module + # implements setenv(), getenv(), and putenv(). + +-AUX_OBJ= setenv.o ++#AUX_OBJ= setenv.o + #AUX_OBJ= environ.o + #AUX_OBJ= environ.o strcasecmp.o + +@@ -455,7 +474,7 @@ AUX_OBJ= setenv.o + # host name aliases. Compile with -DSOLARIS_24_GETHOSTBYNAME_BUG to work + # around this. The workaround does no harm on other Solaris versions. + +-BUGS = -DGETPEERNAME_BUG -DBROKEN_FGETS -DLIBC_CALLS_STRTOK ++#BUGS = -DGETPEERNAME_BUG -DBROKEN_FGETS -DLIBC_CALLS_STRTOK + #BUGS = -DGETPEERNAME_BUG -DBROKEN_FGETS -DINET_ADDR_BUG + #BUGS = -DGETPEERNAME_BUG -DBROKEN_FGETS -DSOLARIS_24_GETHOSTBYNAME_BUG + +@@ -473,7 +492,7 @@ BUGS = -DGETPEERNAME_BUG -DBROKEN_FGETS + # If your system supports vsyslog(), comment out the following definition. + # If in doubt leave it in, it won't harm. + +-VSYSLOG = -Dvsyslog=myvsyslog ++#VSYSLOG = -Dvsyslog=myvsyslog + + ############################################################### + # System dependencies: whether or not your system has IPV6 +@@ -485,7 +504,7 @@ VSYSLOG = -Dvsyslog=myvsyslog + + # If your system does not have getipnodebyname() but uses the obsolete + # gethostbyname2() instead, use this (AIX) +-# IPV6 = -DHAVE_IPV6 -DUSE_GETHOSTBYNAME2 ++IPV6 = -DHAVE_IPV6 -DUSE_GETHOSTBYNAME2 + + # End of the system dependencies. + ################################# +diff -up tcp_wrappers_7.6/misc.c.patch9 tcp_wrappers_7.6/misc.c +--- tcp_wrappers_7.6/misc.c.patch9 1996-02-11 17:01:30.000000000 +0100 ++++ tcp_wrappers_7.6/misc.c 2008-08-29 09:45:12.000000000 +0200 +@@ -58,9 +58,31 @@ int delimiter; + { + char *cp; + ++#ifdef HAVE_IPV6 ++ int bracket = 0; ++ ++ for (cp = string; cp && *cp; cp++) { ++ switch (*cp) { ++ case '[': ++ bracket++; ++ break; ++ case ']': ++ bracket--; ++ break; ++ default: ++ if (bracket == 0 && *cp == delimiter) { ++ *cp++ = 0; ++ return cp; ++ } ++ break; ++ } ++ } ++ return (NULL); ++#else + if ((cp = strchr(string, delimiter)) != 0) + *cp++ = 0; + return (cp); ++#endif + } + + /* dot_quad_addr - convert dotted quad to internal form */ +diff -up tcp_wrappers_7.6/refuse.c.patch9 tcp_wrappers_7.6/refuse.c +--- tcp_wrappers_7.6/refuse.c.patch9 1994-12-28 17:42:40.000000000 +0100 ++++ tcp_wrappers_7.6/refuse.c 2008-08-29 09:45:12.000000000 +0200 +@@ -25,7 +25,12 @@ static char sccsid[] = "@(#) refuse.c 1. + void refuse(request) + struct request_info *request; + { ++#ifdef HAVE_IPV6 ++ syslog(deny_severity, "refused connect from %s (%s)", ++ eval_client(request), eval_hostaddr(request->client)); ++#else + syslog(deny_severity, "refused connect from %s", eval_client(request)); ++#endif + clean_exit(request); + /* NOTREACHED */ + } +diff -up tcp_wrappers_7.6/rfc931.c.patch9 tcp_wrappers_7.6/rfc931.c +--- tcp_wrappers_7.6/rfc931.c.patch9 2004-05-04 16:01:01.000000000 +0200 ++++ tcp_wrappers_7.6/rfc931.c 2013-01-25 11:08:26.690292897 +0100 +@@ -94,6 +94,12 @@ char *dest; + * sockets. + */ + ++ /* address family must be the same */ ++ if (SGFAM(rmt_sin) != SGFAM(our_sin)) { ++ STRN_CPY(dest, result, STRING_LENGTH); ++ return; ++ } ++ + if ((fp = fsocket(SGFAM(rmt_sin), SOCK_STREAM, 0)) != 0) { + setbuf(fp, (char *) 0); + +diff -up tcp_wrappers_7.6/tcpd.c.patch9 tcp_wrappers_7.6/tcpd.c +--- tcp_wrappers_7.6/tcpd.c.patch9 2008-08-29 09:45:12.000000000 +0200 ++++ tcp_wrappers_7.6/tcpd.c 2008-08-29 09:45:12.000000000 +0200 +@@ -120,7 +120,12 @@ char **argv; + + /* Report request and invoke the real daemon program. */ + ++#ifdef HAVE_IPV6 ++ syslog(allow_severity, "connect from %s (%s)", ++ eval_client(&request), eval_hostaddr(request.client)); ++#else + syslog(allow_severity, "connect from %s", eval_client(&request)); ++#endif + closelog(); + (void) execv(path, argv); + syslog(LOG_ERR, "error: cannot execute %s: %m", path); +diff -up tcp_wrappers_7.6/workarounds.c.patch9 tcp_wrappers_7.6/workarounds.c +--- tcp_wrappers_7.6/workarounds.c.patch9 1996-03-19 16:22:26.000000000 +0100 ++++ tcp_wrappers_7.6/workarounds.c 2008-08-29 09:45:12.000000000 +0200 +@@ -166,11 +166,22 @@ struct sockaddr *sa; + int *len; + { + int ret; ++#ifdef HAVE_IPV6 ++ struct sockaddr *sin = sa; ++#else + struct sockaddr_in *sin = (struct sockaddr_in *) sa; ++#endif + + if ((ret = getpeername(sock, sa, len)) >= 0 ++#ifdef HAVE_IPV6 ++ && ((sin->su_si.si_family == AF_INET6 ++ && IN6_IS_ADDR_UNSPECIFIED(&sin->su_sin6.sin6_addr)) ++ || (sin->su_si.si_family == AF_INET ++ && sin->su_sin.sin_addr.s_addr == 0))) { ++#else + && sa->sa_family == AF_INET + && sin->sin_addr.s_addr == 0) { ++#endif + errno = ENOTCONN; + return (-1); + } else { diff --git a/tcp_wrappers_7.6-249430.patch b/tcp_wrappers_7.6-249430.patch new file mode 100644 index 0000000..e4b26c6 --- /dev/null +++ b/tcp_wrappers_7.6-249430.patch @@ -0,0 +1,14 @@ +diff -up tcp_wrappers_7.6/hosts_access.c.patch22 tcp_wrappers_7.6/hosts_access.c +--- tcp_wrappers_7.6/hosts_access.c.patch22 2008-08-29 09:45:12.000000000 +0200 ++++ tcp_wrappers_7.6/hosts_access.c 2008-08-29 09:45:12.000000000 +0200 +@@ -419,7 +419,9 @@ char *string; + if ((addr = dot_quad_addr(string)) == INADDR_NONE) + return (NO); + if ((net = dot_quad_addr(net_tok)) == INADDR_NONE +- || (mask = dot_quad_addr(mask_tok)) == INADDR_NONE) { ++ || ((mask = dot_quad_addr(mask_tok)) == INADDR_NONE ++ && strcmp(mask_tok, "255.255.255.255"))) { ++ /* 255.255.255.255 == INADDR_NONE, separate check needed. TJ. */ + tcpd_warn("bad net/mask expression: %s/%s", net_tok, mask_tok); + return (NO); /* not tcpd_jump() */ + } diff --git a/tcp_wrappers_7.6-ipv6.4.tar.gz b/tcp_wrappers_7.6-ipv6.4.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..f91f2c718576767148d51ed4ac7501ca9932e5ce GIT binary patch literal 138700 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