From 3bb3350ed9b34fb1ee94ad098f5b51ef1cc960d9 Mon Sep 17 00:00:00 2001 From: Jamie Cameron Date: Sun, 31 Oct 2010 21:46:59 -0700 Subject: [PATCH] Fix bug parsing IPv6 addresses with ports --- inetd/module.info | 23 +---------------------- sshd/edit_net.cgi | 8 ++++++-- sshd/save_net.cgi | 3 ++- xinetd/module.info | 19 +------------------ xinetd/save_serv.cgi | 3 ++- 5 files changed, 12 insertions(+), 44 deletions(-) diff --git a/inetd/module.info b/inetd/module.info index 58efba2e1..4dd2a134a 100644 --- a/inetd/module.info +++ b/inetd/module.info @@ -1,26 +1,5 @@ -desc_ko_KR.euc=Ʈ risk=low medium high -desc_ru_SU= Internet -desc_zh_TW.Big5=ںAȻPw -desc_pl=Usugi i protokoy internetowe -desc_de=Internet-Dienste und -Protokolle (inetd) -name=Inetd Admin -desc_zh_CN=inetd -desc_pt=Servios 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=Internettjnster och -protokoll -desc_fr=Services et Protocoles Internet -desc_hu=Internet szolgltatsok s protokollok -desc_ru_RU= Internet -desc_ca=Protocols i Serveis d'Internet -desc_cz=Internetov sluby 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 diff --git a/sshd/edit_net.cgi b/sshd/edit_net.cgi index ed06d4a3b..caae94499 100755 --- a/sshd/edit_net.cgi +++ b/sshd/edit_net.cgi @@ -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, [ diff --git a/sshd/save_net.cgi b/sshd/save_net.cgi index f3a623ecd..b766223a9 100755 --- a/sshd/save_net.cgi +++ b/sshd/save_net.cgi @@ -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); diff --git a/xinetd/module.info b/xinetd/module.info index 6dd3f3500..6c8fd0a39 100644 --- a/xinetd/module.info +++ b/xinetd/module.info @@ -1,22 +1,5 @@ category=net -desc_ko_KR.euc=Ȯ ͳ risk=low medium high -desc_pl=Rozszerzone usugi internetowe (XInetd) -desc=Extended Internet Services -desc_es=Servicios Extendidos de Internet (XInetd) -desc_sv=Utökade Internettjänster (XInetd) +desc=Network Services name=Xinetd -desc_ja_JP.euc=ĥ󥿡ͥå ӥ -desc_zh_CN=Xinetd (XInetd) -desc_ca=Serveis d'Internet Ampliats (XInetd) -desc_zh_TW.Big5=XinetdA (XInetd) -desc_de=Erweiterte Internetdienste (xinetd) longdesc=Edit servers handled by Xinetd, a replacement for inetd. -desc_ms=Servis Internet Lanjutan (XInetd) -desc_sk=Rozren internetov sluby (XInetd) -desc_fr=Services Internet étendus (XInetd) -desc_tr=Geniletilmi 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=확장 인터넷 서비스 diff --git a/xinetd/save_serv.cgi b/xinetd/save_serv.cgi index 4154ceaa3..065a7b018 100755 --- a/xinetd/save_serv.cgi +++ b/xinetd/save_serv.cgi @@ -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');