You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@subversion.apache.org by Chris Huseman <ch...@huseman.net> on 2010/03/23 16:05:08 UTC

Fwd: mod_dav_svn crashing with SVNListParentPath

I brought this up here a while ago and didn't receive any responses.  I'm
hoping somebody else can confirm it isn't just me seeing this crash?  I've
tested Apache v2.2.15 and Subversion 1.6.9  on Windows and it still crashes
the Apache server.  On an Ubuntu VM, it also crashes with Apache v2.2.12,
Subversion v1.6.5.

Note that the Location directive must just be the root of the virtual host.
 If it is not the root location, you'll just get an error like this:

  svn: Repository moved permanently to 'http://localhost/svn/'; please
relocate

Here's what Apache logs before it restarts the child process:

[notice] Parent: child process exited with status 3221225477 -- Restarting.
(on Windows)
[notice] caught SIGTERM, shutting down (on Ubuntu)

---------- Forwarded message ----------
From: Chris Huseman <ch...@d0rk.org>
Date: Tue, Aug 11, 2009 at 9:24 AM
Subject: mod_dav_svn crashing with SVNListParentPath
To: users@subversion.tigris.org


Hello, I think I've found a bug with SVNListParentPath that takes down
Apache.

I'm running Apache v2.2.13 along with Subversion v1.6.4.  I'm running in
win32 land on a 2003 server and a Vista box.

Relevant configuration bits:

<VirtualHost *:80>
  <Location />
    DAV svn
    SVNParentPath "C:/Subversion"
    SVNListParentPath on
  </Location>
</VirtualHost>

To reproduce the bug, I submit a request to the root url (no repository)
with a svn client:

  svn info http://localhost/

If you switch SVNListParentPath off, the server does not crash.

I've briefly looked into where the crash happens in code, and it looks like
it is in util.c when dav_svn__build_uri is called.  The supplied repos
parameter has a NULL root_path, and here's the relevant code that causes the
crash:

  const char *root_path = repos->root_path;

  if (root_path[1] == '\0')
    root_path = "";

It looks like the real problem is further up the stack but I'm so unfamiliar
with the code I'm just posting what I've found so far.

Thanks,
-chris