[PATCH] cvsserver: Limit config parser to needed options
- From
Frank Lichtenheld <frank@lichtenheld.de>
- Date
- May 13, 2007, 00:16 UTC
- Message-ID
- <11790153841188-git-send-email-frank@lichtenheld.de>
- In-Reply-To
- <7v3b21wtlf.fsf@assigned-by-dhcp.cox.net>
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> --- git-cvsserver.perl | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/git-cvsserver.perl b/git-cvsserver.perl index 3e7bf5b..a07c725 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; }
-- 1.5.1.4