Package: cgiirc
Version: 0.5.4-6
Severity: normal
Tags: patch
Please don't impose restrictions in the nickname valid charset. It depends on
the server-side implementation which characters will be accepted in a nickname,
and there's way to detect that beforehand.
See for example UnrealIRCd that accepts several charsets (iso8859-1, etc).
http://www.vulnscan.org/UnrealIRCd/unreal32docs.html#feature_nickchars
This patch is in upstream BTS:
http://cvs.cgiirc.org/tktview?tn=144
-- System Information:
Debian Release: testing/unstable
APT prefers testing
APT policy: (500, 'testing')
Architecture: amd64 (x86_64)
Shell: /bin/sh linked to /bin/bash
Kernel: Linux 2.6.15-1-amd64-k8
Locale: LANG=en_US, LC_CTYPE=en_US (charmap=ANSI_X3.4-1968) (ignored: LC_ALL
set to C)
Versions of packages cgiirc depends on:
ii libc6 2.3.6-7 GNU C Library: Shared libraries
ii perl 5.8.8-3 Larry Wall's Practical Extraction
Versions of packages cgiirc recommends:
ii apache [httpd] 1.3.34-2 versatile, high-performance HTTP s
-- no debconf information
diff -ur cgiirc-0.5.4.old/interfaces/default.pm
cgiirc-0.5.4/interfaces/default.pm
--- cgiirc-0.5.4.old/interfaces/default.pm 2003-10-31 19:51:24.000000000
+0100
+++ cgiirc-0.5.4/interfaces/default.pm 2006-04-30 11:36:32.000000000 +0200
@@ -94,23 +94,12 @@
document.loginform["interface"].value = 'opera';
}
}
-function nickvalid() {
- var nick = document.loginform.Nickname.value;
- if(nick.match(/^[A-Za-z0-9\\[\\]\\{\\}^\\\\\\|\\_\\-\`]{1,32}\$/))
- return true;
- alert('Please enter a valid nickname');
- document.loginform.Nickname.value =
nick.replace(/[^A-Za-z0-9\\[\\]\\{\\}^\\\\\\|\\_\\-\`]/g, '');
- return false;
-}
EOF
}else{ # dummy functions
print <<EOF;
function setjs() {
return true;
}
-function nickvalid() {
- return true;
-}
EOF
}
print <<EOF;
@@ -124,7 +113,7 @@
print "<font size=\"+1\" color=\"red\">Your browser does not correctly
support CGI:IRC, it might not work or other problems may occur. Please consider
upgrading.</font>\n";
}
print <<EOF;
-<form method="post" action="$this" name="loginform" onsubmit="setjs();return
nickvalid()">
+<form method="post" action="$this" name="loginform" onsubmit="setjs();return
true">
EOF
print "<input type=\"hidden\" name=\"interface\" value=\"" .
($interface eq 'default' ? 'nonjs' : $interface) . "\">\n";
diff -ur cgiirc-0.5.4.old/modules/IRC/Util.pm cgiirc-0.5.4/modules/IRC/Util.pm
--- cgiirc-0.5.4.old/modules/IRC/Util.pm 2003-10-27 18:18:52.000000000
+0100
+++ cgiirc-0.5.4/modules/IRC/Util.pm 2006-04-30 11:36:05.000000000 +0200
@@ -14,9 +14,6 @@
}
sub is_vaild_nickname {
- return 0 if length $_[0] > 32 or length $_[0] < 1;
- return 0 if $_[0] =~ /[^A-Za-z0-9-_\[\]\\\`\^\{\}\|]/;
- return 0 if $_[0] =~ /^[^A-Za-z_\\\[\]\`\^\{\}\|]/;
return 1;
}
diff -ur cgiirc-0.5.4.old/nph-irc.cgi cgiirc-0.5.4/nph-irc.cgi
--- cgiirc-0.5.4.old/nph-irc.cgi 2004-01-29 12:24:48.000000000 +0100
+++ cgiirc-0.5.4/nph-irc.cgi 2006-04-30 11:36:05.000000000 +0200
@@ -1067,8 +1067,6 @@
($cgi->{port}) = $cgi->{port} =~ /(\d+)/;
$cgi->{nick} =~ s/\?/int rand 10/eg;
- # Only valid nickname characters
- $cgi->{nick} =~ s/[^A-Za-z0-9\[\]\{\}^\\\|\_\-\`]//g;
$interface = load_interface();