diff options
author | Frank Lichtenheld <frank@lichtenheld.de> | 2007-05-13 02:16:24 +0200 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2007-05-13 12:14:22 -0700 |
commit | f987afa8fe13c2a1512094362b06172419977bc4 (patch) | |
tree | 104d8efcaa6edc8c4f31591ab70fc62547175faa | |
parent | gitweb: Check if requested object exists (diff) | |
download | tgif-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-x | git-cvsserver.perl | 6 |
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; } |