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);