From: mortenp Date: Sun, 28 Dec 2008 20:03:46 +0000 (+1100) Subject: Fixed injection in contrib/web/perl-user (Gerd von Egidy) X-Git-Tag: RELEASE_1_2_16~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=38306b36df8cd1d4ab544a7924a8b9fffc3eebfe;p=thirdparty%2Fmlmmj.git Fixed injection in contrib/web/perl-user (Gerd von Egidy) --- diff --git a/ChangeLog b/ChangeLog index 1ff096b6..9b4c64ac 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,4 @@ + o Fixed injection in contrib/web/perl-user (Gerd von Egidy) 1.2.16-RC1 o Updated Dutch listtexts (Franky Van Liedekerke) o Updated Italian listtexts (Fabio Busatto) diff --git a/contrib/web/perl-user/mlmmj.cgi b/contrib/web/perl-user/mlmmj.cgi index 84974fb2..b05169b3 100755 --- a/contrib/web/perl-user/mlmmj.cgi +++ b/contrib/web/perl-user/mlmmj.cgi @@ -60,14 +60,13 @@ sub mlmmj_mail { my $date = `/bin/date -R`; $mail = "Received: from " . $query->remote_addr() - . " by " . $query->server_name() . " witn HTTP;\n" + . " by " . $query->server_name() . " with HTTP;\n" . "\t$date" . "X-Originating-IP: " . $query->remote_addr() . "\n" . "X-Mailer: mlmmj-webinterface powered by Perl\n" . "Date: $date" . "From: $from\n" . "To: $to\n" - . "Cc: $from\n" . "Subject: $subject\n" . "\n" . "$body\n"; @@ -89,6 +88,15 @@ sub mlmmj_gen_to { return sprintf("%s%s%s@%s", $user, $delimiter, $job, $domain); } +sub check_email { + my $addr = shift; + + if ($addr !~ /^[-!#$%&\'*+\.\/0-9=?A-Z^_a-z{|}~]+@[-0-9A-Za-z]+\.[-\.0-9A-Za-z]+$/) { + return false; + } else { + return true; + } +} $query = new CGI; @@ -98,10 +106,7 @@ $redirect_failure = $query->param('redirect_failure'); $redirect_success = $query->param('redirect_success'); $email = $query->param('email'); -print header; -print $list; - -if (mlmmj_check_list($list) ne false) { +if (mlmmj_check_list($list) ne false && check_email($email) ne false)) { $to = mlmmj_gen_to($list, $job); if ($to ne false) { mlmmj_mail($email, $to, "$job to $list", $job);