Fix bug parsing IPv6 addresses with ports

This commit is contained in:
Jamie Cameron
2010-10-31 21:46:59 -07:00
parent 1db9315d7b
commit 3bb3350ed9
5 changed files with 12 additions and 44 deletions

View File

@ -1,26 +1,5 @@
desc_ko_KR.euc=<3D><>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
risk=low medium high
desc_ru_SU=<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Internet
desc_zh_TW.Big5=<3D><><EFBFBD>ں<EFBFBD><DABA><EFBFBD><EFBFBD>A<EFBFBD>ȻP<C8BB><50><EFBFBD>w
desc_pl=Us<55>ugi i&nbsp;protoko<6B>y internetowe
desc_de=Internet-Dienste und -Protokolle (inetd)
name=Inetd Admin
desc_zh_CN=inetd <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
desc_pt=Servi<76>os e Protocolos de Internet
category=net
desc_tr=Internet Servisleri ve Protokoller
os_support=solaris *-linux hpux freebsd unixware openserver osf1 macos openbsd netbsd irix
desc=Internet Services and Protocols
desc_es=Servicios y Protocolos de Internet
desc_sv=Internettj<74>nster och -protokoll
desc_fr=Services et Protocoles Internet
desc_hu=Internet szolg<6C>ltat<61>sok <20>s protokollok
desc_ru_RU=<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Internet
desc_ca=Protocols i Serveis d'Internet
desc_cz=Internetov<6F> slu<6C>by a protokoly
desc=Network Services and Protocols
longdesc=Edit services in /etc/inetd.conf, /etc/services and /etc/rpc.
desc_zh_TW.UTF-8=網際網路服務與協定
desc_zh_CN.UTF-8=inetd 服务配置
desc_ko_KR.UTF-8=인트넷 서비스 및 프로토콜
desc_nl=Internet Services en Protocollen
desc_ru.UTF-8=Сервисы и Протоколы Internet

View File

@ -15,8 +15,12 @@ if ($version{'type'} eq 'openssh' && $version{'number'} >= 3) {
$i = 0;
@table = ( );
foreach $l (@listens, { }) {
local ($a, $p) = $l->{'values'}->[0] =~ /^(.*):(\d+)$/ ?
($1, $2) : ($l->{'values'}->[0]);
local ($a, $p) = $l->{'values'}->[0] =~ /^([^:]*):(\d+)$/ ||
$l->{'values'}->[0] =~ /^\[(.*)\]:(\d+)$/ ?
($1, $2) :
$l->{'values'}->[0] =~ /^\[(.*)\]$/ ?
($1) :
($l->{'values'}->[0]);
$amode = $a eq "::" ? 2 : $a eq "0.0.0.0" ? 1 :
$a eq "" ? 0 : 3;
push(@table, [

View File

@ -20,12 +20,13 @@ if ($version{'type'} eq 'openssh' && $version{'number'} >= 3) {
$a = "0.0.0.0";
}
elsif ($in{"mode_$i"} == 2) {
$a = "::";
$a = "[::]";
}
elsif ($in{"mode_$i"} == 3) {
$a = $in{"address_$i"};
&check_ipaddress($a) || &check_ip6address($a) ||
&error(&text('net_eladdress', $a));
$a = "[$a]" if (&check_ip6address($a));
}
if ($in{"port_${i}_def"}) {
push(@listens, $a);

View File

@ -1,22 +1,5 @@
category=net
desc_ko_KR.euc=Ȯ<><C8AE> <20><><EFBFBD>ͳ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
risk=low medium high
desc_pl=Rozszerzone us<75>ugi internetowe (XInetd)
desc=Extended Internet Services
desc_es=Servicios Extendidos de Internet (XInetd)
desc_sv=Ut&#246;kade Internettj&#228;nster (XInetd)
desc=Network Services
name=Xinetd
desc_ja_JP.euc=<3D><>ĥ<EFBFBD><C4A5><EFBFBD>󥿡<EFBFBD><F3A5BFA1>ͥå<CDA5> <20><><EFBFBD><EFBFBD><EFBFBD>ӥ<EFBFBD>
desc_zh_CN=Xinetd <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (XInetd)
desc_ca=Serveis d'Internet Ampliats (XInetd)
desc_zh_TW.Big5=Xinetd<74><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD><41> (XInetd)
desc_de=Erweiterte Internetdienste (xinetd)
longdesc=Edit servers handled by Xinetd, a replacement for inetd.
desc_ms=Servis Internet Lanjutan (XInetd)
desc_sk=Roz<6F><7A>ren<65> internetov<6F> slu<6C>by (XInetd)
desc_fr=Services Internet &#233;tendus (XInetd)
desc_tr=Geni<6E>letilmi<6D> <20>nternet Servisleri
desc_zh_TW.UTF-8=Xinetd延伸網路伺服器 (XInetd)
desc_zh_CN.UTF-8=Xinetd 服务配置 (XInetd)
desc_ja_JP.UTF-8=拡張インターネット サービス
desc_ko_KR.UTF-8=확장 인터넷 서비스

View File

@ -96,7 +96,8 @@ else {
&set_member_value($xinet, 'redirect');
}
else {
gethostbyname($in{'rhost'}) || &error($text{'serv_erhost'});
&to_ipaddress($in{'rhost'}) || &to_ip6address($in{'rhost'}) ||
&error($text{'serv_erhost'});
$in{'rport'} =~ /^\d+$/ || &error($text{'serv_erport'});
@type = grep { $_ ne 'INTERNAL' } @type;
&set_member_value($xinet, 'server');