[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Fwd: mod_dav_svn crashing with SVNListParentPath

From: Chris Huseman <chris_at_huseman.net>
Date: Tue, 23 Mar 2010 11:05:08 -0500

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 <chris_at_d0rk.org>
Date: Tue, Aug 11, 2009 at 9:24 AM
Subject: mod_dav_svn crashing with SVNListParentPath
To: users_at_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
Received on 2010-03-23 17:05:48 CET

This is an archived mail posted to the Subversion Users mailing list.