Code

git-svn: avoid crashing svnserve when creating new directories
authorEric Wong <normalperson@yhbt.net>
Sat, 19 May 2007 09:58:37 +0000 (02:58 -0700)
committerJunio C Hamano <junkio@cox.net>
Sat, 19 May 2007 19:26:36 +0000 (12:26 -0700)
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>
git-svn.perl

index f4c9ff1b8520afadf9693fec1ece994fdad5d321..b87dedc99c511213c5bbda916ba583e60e76096a 100755 (executable)
@@ -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;
 }