diff options
author | Eric Wong <normalperson@yhbt.net> | 2007-05-19 02:58:37 -0700 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2007-05-19 12:26:36 -0700 |
commit | 6442754d6cc0056cf5b69b43d218f8b6d317e7f5 (patch) | |
tree | 68558fb2cadec798a83ee90c35e33c3f7f254a0d | |
parent | 97925fde00743e557fa5e792004483a27e31fbd8 (diff) | |
download | git-6442754d6cc0056cf5b69b43d218f8b6d317e7f5.tar.gz git-6442754d6cc0056cf5b69b43d218f8b6d317e7f5.tar.xz |
git-svn: avoid crashing svnserve when creating new directories
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>
Confirmed-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <junkio@cox.net>
-rwxr-xr-x | git-svn.perl | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/git-svn.perl b/git-svn.perl index f4c9ff1b8..b87dedc99 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; } |