summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Frank Lichtenheld <frank@lichtenheld.de>2007-05-13 02:16:24 +0200
committerLibravatar Junio C Hamano <junkio@cox.net>2007-05-13 12:14:22 -0700
commitf987afa8fe13c2a1512094362b06172419977bc4 (patch)
tree104d8efcaa6edc8c4f31591ab70fc62547175faa
parentgitweb: Check if requested object exists (diff)
downloadtgif-f987afa8fe13c2a1512094362b06172419977bc4.tar.xz
cvsserver: Limit config parser to needed options
Change the configuration parser so that it ignores everything except for ^gitcvs.((ext|pserver).)? This greatly reduces the risk of failing while parsing some unknown and irrelevant config option. The bug that triggered this change was that the parsing doesn't handle sections that have a subsection and a variable with the same name. While this bug still remains, all remaining causes can be attributed to user error, since there are no defined variables gitcvs.ext and gitcvs.pserver. Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de> Signed-off-by: Junio C Hamano <junkio@cox.net>
-rwxr-xr-xgit-cvsserver.perl6
1 files changed, 3 insertions, 3 deletions
diff --git a/git-cvsserver.perl b/git-cvsserver.perl
index 3e7bf5b54a..a07c72526f 100755
--- a/git-cvsserver.perl
+++ b/git-cvsserver.perl
@@ -183,9 +183,9 @@ sub req_Root
}
foreach my $line ( @gitvars )
{
- next unless ( $line =~ /^(.*?)\.(.*?)(?:\.(.*?))?=(.*)$/ );
- unless ($3) {
- $cfg->{$1}{$2} = $4;
+ next unless ( $line =~ /^(gitcvs)\.(?:(ext|pserver)\.)?([\w-]+)=(.*)$/ );
+ unless ($2) {
+ $cfg->{$1}{$3} = $4;
} else {
$cfg->{$1}{$2}{$3} = $4;
}