[PATCH] git-svn: avoid crashing svnserve when creating new directories
- From
- Eric Wong <normalperson@yhbt.net>
- Date
- May 19, 2007, 09:58 UTC
- Message-ID
- <20070519095837.GA387@muzzle>
- In-Reply-To
- <20070519061422.GA17528@muzzle>
When sorting directory names by depth (slash ("/") count) and closing the deepest directories first (as the protocol requires), we failed to put the root baton (with an empty string as its key "") after top-level directories (which did not have any slashes).
This resulted in svnserve being in a situation it couldn't handle and caused a segmentation fault on the remote server.
This bug did not affect users of DAV and filesystem repositories.
Signed-off-by: Eric Wong <normalperson@yhbt.net> --- git-svn.perl | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/git-svn.perl b/git-svn.perl index e38811a..6d0cdac 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -2841,8 +2841,10 @@ sub close_edit { my ($self) = @_; my ($p,$bat) = ($self->{pool}, $self->{bat}); foreach (sort { $b =~ tr#/#/# <=> $a =~ tr#/#/# } keys %$bat) { + next if $_ eq ''; $self->close_directory($bat->{$_}, $p); } + $self->close_directory($bat->{''}, $p); $self->SUPER::close_edit($p); $p->clear; }
-- Eric Wong